GET-запрос на графике Facebook с использованием модуля Python-запросов - ошибка проверки сертификата - PullRequest
3 голосов
/ 27 января 2012

Я пишу короткий скрипт на python для развлечения, чтобы проверить несколько страниц на количество лайков.Я использую модуль запросов Python.Как видно ниже, возникла проблема, что-то с сертификатами.Я довольно новичок в программировании с использованием Интернета, поэтому для меня не очевидно, что я должен делать.r = requests.get("http://www.google.com/") правильно вернул что-то.

Трассировка (последний последний вызов): r = запросы.get ("https://graph.facebook.com/cocacola") процедуры: SSL3_GET_SERVER_CERTIFICATE: сбой проверки сертификата

Спасибо!

Ответы [ 2 ]

3 голосов
/ 27 января 2012

Эта ошибка выглядит так, как будто она исходит от OpenSSL.Возможно, в вашей среде есть какая-то конфигурация, которая заставляет запросы установить местоположение сертификата на то, что не содержит требуемый сертификат.

Попробуйте изучить возможные способы проверки запросов на наличие сертификатов:

  1. Он ищет конфигурацию, используя переменную окружения REQUESTS_CA_BUNDLE.
  2. Проверяет проверку совместимости завитков, используя переменную окружения CURL_CA_BUNDLE.
  3. Он пытается импортировать список сертификатов.если пакет certifi можно импортировать.

Проверьте, присутствует ли в вашем окружении один из REQUESTS_CA_BUNDLE или CURL_CA_BUNDLE:

env | egrep "REQUESTS_CA_BUNDLE|CURL_CA_BUNDLE"

Если один из нихустановлены, Requests, вероятно, использует эту конфигурацию при проверке сертификатов.Если нет, то Requests, вероятно, использует certifi.В этом случае, возможно, стоит обновить его:

pip install -U certifi

В противном случае попробуйте передать verify=False в requests.get, чтобы пропустить этап проверки.Я бы порекомендовал решить реальную проблему, а не просто выключить ее, но это может помочь вам разобраться в этом.

2 голосов
/ 27 января 2012

Установили ли вы сертификат ?Подобная проблема обожгла меня и в последнее время.Из-за проблем с лицензией GPL Kenneth Reitz и co пришлось перенести комплект лицензий SSL в другое хранилище.

Я только что попробовал следующее с самой современной certifi из установленной pypi, и кажется,чтобы работать нормально:

>>> import requests
>>> r = requests.get("https://graph.facebook.com/cocacola") 
>>> r
<Response [200]>

Более подробная информация о проблемах лицензирования доступна на этой ветке Github Issue ( Full-discolure : я был первым автором этогонить).

Если новый certifi не исправит это, вы можете попробовать страницу 10101 * Requests Github Issue .Это очень отзывчивое и дружелюбное сообщество!

Редактировать : Если актуальная версия certifi не устранила это, я настоятельно рекомендую совет другого автора попробовать verify=False

...