Подтвердить что ты не робот

Запрос 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, не могу изменить это.

4b9b3361

Ответ 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.