【发布时间】:2015-12-15 13:00:26
【问题描述】:
问题
我一直在尝试使用Python的requests包下载如下网址:
在 Chrome 中,证书似乎有效:
但是,在 Python 中,请求会以 SSLV3_ALERT_HANDSHAKE_FAILURE 失败,即使 using the verify flag 会忽略错误的证书:
如果您将 verify 设置为 False,请求也可以忽略验证 SSL 证书
堆栈跟踪
>>> requests.__version__
'2.7.0'
>>> LOGIN_URL = 'https://service.isracard.co.il/I_logon.jsp'
>>> requests.get(LOGIN_URL, verify=False)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/private/tmp/sslenv/lib/python2.7/site-packages/requests/api.py", line 69, in get
return request('get', url, params=params, **kwargs)
File "/private/tmp/sslenv/lib/python2.7/site-packages/requests/api.py", line 50, in request
response = session.request(method=method, url=url, **kwargs)
File "/private/tmp/sslenv/lib/python2.7/site-packages/requests/sessions.py", line 465, in request
resp = self.send(prep, **send_kwargs)
File "/private/tmp/sslenv/lib/python2.7/site-packages/requests/sessions.py", line 573, in send
r = adapter.send(request, **kwargs)
File "/private/tmp/sslenv/lib/python2.7/site-packages/requests/adapters.py", line 431, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:590)
环境
操作系统和软件包
我在 OSX 的虚拟环境中使用 requests 2.7.0 和 Python 2.7.10。
卷曲
在同一台机器上对相同 URL 的 cURL 调用可以正常工作:
$ curl -I https://service.isracard.co.il/I_logon.jsp
HTTP/1.1 200 OK
Date: Fri, 18 Sep 2015 11:37:27 GMT
Server: IBM_HTTP_Server
X-Powered-By: Servlet/3.0
Set-Cookie: JSESSIONID=0000R90MxFKBVxBMV665syGfjnh:-1; Path=/; HttpOnly
Expires: Thu, 01 Dec 1994 16:00:00 GMT
Cache-Control: no-cache="set-cookie, set-cookie2"
Set-Cookie: Alt50_ZLinuxPrd=94742720.30755.0000; expires=Fri, 18-Sep-2015 12:07:19 GMT; path=/
Content-Type: text/html; charset=ISO-8859-8
Content-Language: iw-IL
Set-Cookie: ServiceP=53323968.20480.0000; path=/
【问题讨论】:
-
请注意,
verify=False忽略无效证书。这不是无效证书问题,这是握手失败,验证可能已经通过。 -
@MartijnPieters 对!错过了。知道为什么会失败吗?
-
只是一个模糊的提示:我很久以前遇到过类似的问题:尝试使用特定的
ssl_version(尝试多个版本):docs.python-requests.org/en/latest/user/advanced/… -
谢谢。我想我会简单地尝试另一个包。
标签: ssl ssl-certificate python-requests