python:sslv3在抓取站点时警报握手失败
我正在使用请求来删除古腾堡项目 当我这样做时:python:sslv3在抓取站点时警报握手失败,python,macos,ssl,web-scraping,sslv3,Python,Macos,Ssl,Web Scraping,Sslv3,我正在使用请求来删除古腾堡项目 当我这样做时: import requests requests.get("https://www.gutenberg.org/wiki/Science_Fiction_(Bookshelf)", verify = True) 我得到一个错误: SSLError Traceback (most recent call last) <ipython-input-33-15981c36
import requests
requests.get("https://www.gutenberg.org/wiki/Science_Fiction_(Bookshelf)", verify = True)
我得到一个错误:
SSLError Traceback (most recent call last)
<ipython-input-33-15981c36e1d3> in <module>()
----> 1 requests.get("https://www.gutenberg.org/wiki/Science_Fiction_(Bookshelf)", verify=True)
/Library/Python/2.7/site-packages/requests/api.pyc in get(url, params, **kwargs)
67
68 kwargs.setdefault('allow_redirects', True)
---> 69 return request('get', url, params=params, **kwargs)
70
71
/Library/Python/2.7/site-packages/requests/api.pyc in request(method, url, **kwargs)
48
49 session = sessions.Session()
---> 50 response = session.request(method=method, url=url, **kwargs)
51 # By explicitly closing the session, we avoid leaving sockets open which
52 # can trigger a ResourceWarning in some cases, and look like a memory leak
/Library/Python/2.7/site-packages/requests/sessions.pyc in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
463 }
464 send_kwargs.update(settings)
--> 465 resp = self.send(prep, **send_kwargs)
466
467 return resp
/Library/Python/2.7/site-packages/requests/sessions.pyc in send(self, request, **kwargs)
571
572 # Send the request
--> 573 r = adapter.send(request, **kwargs)
574
575 # Total elapsed time of the request (approximately)
/Library/Python/2.7/site-packages/requests/adapters.pyc in send(self, request, stream, timeout, verify, cert, proxies)
429 except (_SSLError, _HTTPError) as e:
430 if isinstance(e, _SSLError):
--> 431 raise SSLError(e, request=request)
432 elif isinstance(e, ReadTimeoutError):
433 raise ReadTimeout(e, request=request)
SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:590)
SSLError回溯(最近一次调用)
在()
---->1.获取(“https://www.gutenberg.org/wiki/Science_Fiction_(书架)”,验证=True)
/get中的Library/Python/2.7/site-packages/requests/api.pyc(url、参数、**kwargs)
67
68 kwargs.setdefault('allow_redirects',True)
--->69返回请求('get',url,params=params,**kwargs)
70
71
/请求中的Library/Python/2.7/site-packages/requests/api.pyc(方法、url、**kwargs)
48
49 session=sessions.session()
--->50响应=session.request(方法=method,url=url,**kwargs)
51#通过显式关闭会话,我们可以避免让套接字保持打开状态
52#在某些情况下会触发资源警告,看起来像内存泄漏
/请求中的Library/Python/2.7/site-packages/requests/sessions.pyc(self、method、url、params、data、header、cookie、files、auth、timeout、allow_重定向、代理、hook、stream、verify、cert、json)
463 }
464发送文件更新(设置)
-->465 resp=自我发送(准备,**发送)
466
467返回响应
/发送中的Library/Python/2.7/site-packages/requests/sessions.pyc(self,request,**kwargs)
571
572#发送请求
-->573 r=适配器.send(请求,**kwargs)
574
575#请求的总运行时间(大约)
/发送中的Library/Python/2.7/site-packages/requests/adapters.pyc(self、request、stream、timeout、verify、cert、proxies)
429除了(\u ssleror,\u HTTPError)作为e:
430如果存在(e,错误):
-->431 raise SSLError(e,请求=请求)
432 elif isinstance(e,ReadTimeoutError):
433提升读取超时(e,请求=请求)
SSLError:[SSL:SSLV3警报握手失败]SSLV3警报握手失败(\u SSL.c:590)
这是工作前几天,我能够刮页面。我没有改变我代码中的任何内容。我确实安装了Heroku和Postgres,我不知道这是否会导致错误。。我仍然可以请求google.com和其他页面。我使用的是Python版本2.7.10和MacOSX10.10.5
我如何克服这个错误来刮取古腾堡页面?我真的不理解这个错误,所以希望能提供任何帮助。看起来他们最近(2015年9月21日)安装了一个新的SSL证书,在这样做的时候,他们一定加强了安全设置,因为该站点只接受TLS 1.2连接(没有您的库尝试使用的SSLv3,也没有TLS 1.0或TLS 1.1) 查看他们的SSL扫描结果 它停止工作的原因与您的代码无关,但是他们更改了允许的安全协议,并且您的系统(OpenSSL版本)似乎不支持TLS 1.2 尝试升级计算机上的OpenSSL库,然后您应该能够再次连接到该站点(抱歉,我不知道在Mac for Python上更新OpenSSL库的具体细节)