Facebook Graph Get Demande de demande à l'aide de Python Demandes Module - Échec de vérification du certificat

StackOverflow https://stackoverflow.com/questions/9031275

Question

J'écris un court script python pour le plaisir pour vérifier quelques pages pour la quantité de likes. J'utilise le module de requêtes Python. Comme on le voit ci-dessous, il y avait un problème, quelque chose sur les certificats. Je suis assez nouveau dans la programmation impliquant le Web, donc ce n'est pas évident pour moi ce que je devrais faire. r = requests.get("http://www.google.com/") a correctement renvoyé quelque chose.

Traceback (appel le plus récent dernier): r = requers.get ("https://graph.facebook.com/cocacola") Routines: ssl3_get_server_certificate: le certificat vérifie l'échec

Merci!

Était-ce utile?

La solution

Cette erreur semble provenir d'OpenSSL. Vous pouvez avoir une configuration dans votre environnement qui entraîne des demandes pour définir l'emplacement du certificat sur quelque chose qui ne contient pas le certificat dont vous avez besoin.

Essayez d'enquêter sur les façons possibles que les demandes pourraient vérifier les certificats:

  1. Il recherche la configuration en utilisant REQUESTS_CA_BUNDLE variable d'environnement.
  2. Il vérifie la vérification de la compatibilité des boucles en utilisant CURL_CA_BUNDLE variable d'environnement.
  3. Il essaie d'importer la liste des certifises si le certifi Le package peut être importé.

Vérifiez pour voir si l'un des REQUESTS_CA_BUNDLE ou CURL_CA_BUNDLE sont dans votre environnement:

env | egrep "REQUESTS_CA_BUNDLE|CURL_CA_BUNDLE"

Si l'un d'eux est défini, les demandes utilisent probablement cette configuration lors de la vérification des certificats. Sinon, les demandes utilisent probablement certifi. Dans ce cas, cela vaut peut-être la peine de le mettre à jour:

pip install -U certifi

Échec de ça, essayez de passer verify=False à requests.get Pour le faire sauter l'étape de vérification. Je recommanderais de résoudre le vrai problème au lieu de simplement l'éteindre, mais cela pourrait vous aider à vous rendre au bas.

Autres conseils

Avez-vous installé certifier? Un problème similaire m'a aussi brûlé récemment. En raison de problèmes de licence GPL, Kenneth Reitz et Co ont dû déplacer le bundle de licences SSL dans un autre dépôt.

J'ai juste essayé ce qui suit avec le plus à jour certifi De PYPI installé et cela semble fonctionner correctement:

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

Plus de discussions sur les malheurs de licence sont disponibles à ce sujet Thread GitHub Issue (À dissolution complète: J'étais l'affiche originale de ce fil).

Si un nouveau certifi ne le répare pas, vous voudrez peut-être essayer le Demande la page du problème GitHub. C'est une communauté très réactive et amicale!

Éditer: Si un jour certifi ne le répare pas, je recommande fortement la suggestion de l'autre affiche pour essayer verify=False

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top