Facebook Graph Get Demande de demande à l'aide de Python Demandes Module - Échec de vérification du certificat
-
14-11-2019 - |
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!
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:
- Il recherche la configuration en utilisant
REQUESTS_CA_BUNDLE
variable d'environnement. - Il vérifie la vérification de la compatibilité des boucles en utilisant
CURL_CA_BUNDLE
variable d'environnement. - 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