Запрос python ssl квитирование
Каждый раз, когда я пытаюсь сделать:
requests.get('https://url')
Я получил это сообщение:
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
Я пробовал все:
- обновить мои запросы
- обновить мой ssl
но ничего не меняется.
Я использую Python 2.7.6, не могу изменить это.
Ответы
Ответ 1
Я решил проблему в конце, я обновил мою 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
если у вас нет установленного pip2.7, вы можете использовать pip вместо
Ответ 2
В OSX, используя python 2.7.10/request 2.9.1 Мне нужно было установить requests
с помощью настройки безопасности:
pip install requests[security]
Это устанавливает pyOpenSSL
, ndg-httpsclient
и pyasn1
.
https://github.com/kennethreitz/requests/blob/master/setup.py#L70
Ответ 3
пробовав все вышеперечисленные решения и спустившись вниз по кроличьей дыре, вещь, которая в конечном итоге взломала случай, просто пыталась импортировать pyopenssl из пакета urllib3 следующим образом:
from urllib3.contrib import pyopenssl
что привело меня к ошибке (отсутствует пакет cryptography
)
Ответ 4
Я использую python 2.7.6, не могу изменить его.
Прошу прощения за вас. Сервер, который вы пытаетесь достичь, требует (SNI) Название имени сервера и приведет к сбою рукопожатия, если клиент не использует это расширение SNI. Поддержка SNI была добавлена только с помощью python 2.7.9, поэтому вам кажется, что вам не повезло.
Ответ 5
Если вы не можете обновить версию Python до версии 2.7.9, то перейдите к пакету запроса 2.5.3. Это сработало для меня.
sudo pip install requests==2.5.3
Ответ 6
Вам просто нужно обновить свои запросы.
pip install requests --upgrade
Вы все еще можете использовать python 2.7.