Lors du développement à l'aide du réseau d'entreprise, je me retrouve pris dans divers pièges tels que Proxy. L'autre jour, lorsque j'ai essayé d'utiliser un certain module en Python, la vérification du certificat du serveur SSL a échoué dans les «requêtes» à l'intérieur du module et «requests.exceptions.SSLError» s'est produite.
Normalement, pour désactiver la validation du certificat du serveur SSL avec requests
, écrivez:
requests.get("https://www.google.com", verify=False)
Cependant, cette méthode nécessite une modification du code et ne peut pas être utilisée pour les «requêtes» à l'intérieur du module. Après avoir enquêté, j'ai trouvé un moyen de pirater les «requêtes» suivantes, donc je vais les présenter.
Définissez la variable d'environnement CURL_CA_BUNDLE
sur un caractère vide.
import os
os.environ['CURL_CA_BUNDLE'] = ''
requests
a le processus d'écrasement de verify
avec les variables d'environnement CURL_CA_BUNDLE
et REQUESTS_CA_BUNDLE
comme suit. Piratez ceci pour rendre verify`` False
.
requests/session.py
if verify is True or verify is None:
verify = (os.environ.get('REQUESTS_CA_BUNDLE') or
os.environ.get('CURL_CA_BUNDLE'))
Au lieu de le rendre "False", faites-en un caractère vide qui donne la valeur "False". La raison pour laquelle "None", qui est également évalué comme "False", est inutile et est vide, c'est que "None" sera remplacé par "True" plus tard.
Pour expliquer brièvement comment fonctionne le ʻor de Python, ʻA ou B
renvoie ʻA quand ʻA == True
et B
quand ʻA == False`. Donc
>>> None or None
None
>>> '' or None
None
>>> None or ''
''
Ce sera. Vous pouvez l'utiliser pour définir la variable d'environnement «CURL_CA_BUNDLE» sur un caractère vide et faire «vérifier» un caractère vide, c'est-à-dire «False».
Recommended Posts