python请求ssl握手失败

Ida*_*lom 36 python python-requests

每次我尝试做:

requests.get('https://url') 
Run Code Online (Sandbox Code Playgroud)

我收到了这条消息:

import requests
>>> requests.get('https://reviews.gethuman.com/companies') 
Traceback (most recent call last): 
   File "<stdin>", line 1, in <module> 
   File "/usr/lib/python2.7/dist-packages/requests/api.py", line 55, in get 
    return request('get', url, **kwargs) 
   File "/usr/lib/python2.7/dist-packages/requests/api.py", line 44, in request 
    return session.request(method=method, url=url, **kwargs)    
   File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 455, in request 
    resp = self.send(prep, **send_kwargs) 
   File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 558, in send 
    r = adapter.send(request, **kwargs) 
   File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 385, in send 
    raise SSLError(e) requests.exceptions.SSLError: [Errno 1]
_ssl.c:510: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Run Code Online (Sandbox Code Playgroud)

我尝试了一切:

  • 更新我的请求
  • 更新我的ssl

但没有变化.

我使用的是Python 2.7.6,无法改变这一点.

Tob*_*enz 49

在OSX上,使用python 2.7.10/requests 2.9.1我只需要requests使用其安全设置进行安装:

pip install requests[security]
Run Code Online (Sandbox Code Playgroud)

这个安装pyOpenSSL,ndg-httpsclientpyasn1. https://github.com/kennethreitz/requests/blob/master/setup.py#L70


Ida*_*lom 37

我最终解决了这个问题,我将我的ubuntu从14.04更新到14.10,问题解决了

但在旧版本的ubuntu和python中我安装了这些lib,它似乎解决了我所有的问题

sudo apt-get install python-dev libssl-dev libffi-dev
sudo pip2.7 install -U pyopenssl==0.13.1 pyasn1 ndg-httpsclient
Run Code Online (Sandbox Code Playgroud)

如果你没有安装pip2.7,你可以使用pip代替


Has*_*aza 12

如果您无法将Python版本升级到2.7.9,则将请求包降级到2.5.3.这对我有用.

sudo pip install requests==2.5.3
Run Code Online (Sandbox Code Playgroud)

编辑

您还可以安装具有安全扩展的请求

pip install requests[security]
Run Code Online (Sandbox Code Playgroud)


Amr*_*Amr 5

import requests

#Add support for all cipher suites
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS='ALL'
#Exclude use of pyopenssl (pyopenssl module may need to be installed first $pip install pyopenssl)
requests.packages.urllib3.contrib.pyopenssl.extract_from_urllib3()
Run Code Online (Sandbox Code Playgroud)

  • 当人们想要快速,暂时地解决此类问题时,这是一个被低估的答案。 (2认同)