Désactiver la validation SSL sans utiliser verify = False dans les requêtes Python

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.

manière

Définissez la variable d'environnement CURL_CA_BUNDLE sur un caractère vide.

import os
os.environ['CURL_CA_BUNDLE'] = ''

Comment ça fonctionne

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

Désactiver la validation SSL sans utiliser verify = False dans les requêtes Python
Désactiver le protocole python2.6 ssl3 sur centos6
Connectez-vous à Slack à l'aide de requêtes en Python
Enregistrer des images à l'aide de requêtes python3
Exécutez LINE Bot implémenté en Python (Flask) "sans utiliser Heroku"
Essayez de créer un réseau de neurones en Python sans utiliser de bibliothèque
[Python] Validation de JSON avec Voluptuous
Traduit à l'aide de googletrans en Python
Utilisation du mode Python dans le traitement
Programmation GUI en Python avec Appjar
Précautions lors de l'utilisation de Pit avec Python
[Python3] Google translate google translation sans utiliser l'API
Essayez d'utiliser LevelDB avec Python (plyvel)
Créez Gmail en Python sans utiliser l'API
Utilisation de variables globales dans les fonctions python
Python, découpez sans utiliser deux-points (:). a .__ getitem__ (tranche (3,5)).
Détecter les frappes en Python (sans Entrée)
Voyons voir l'utilisation de l'entrée en python
Puissance totale en Python (en utilisant functools)
Reconnaissance de caractères manuscrits à l'aide de KNN en Python
Essayez d'utiliser LeapMotion avec Python
Recherche de priorité de profondeur à l'aide de la pile en Python
Lors de l'utilisation d'expressions régulières en Python
Création d'interface graphique en python avec tkinter 2
Créer un enregistrement avec des pièces jointes dans KINTONE à l'aide du module de requêtes Python
Fonctionnement de la souris à l'aide de l'API Windows en Python
Notes utilisant cChardet et python3-chardet dans Python 3.3.1.
Essayez d'utiliser l'API Wunderlist en Python
Création d'interface graphique en python à l'aide de tkinter partie 1
Obtenir l'équilibre Suica en Python (en utilisant libpafe)
Pratique d'utilisation de ceci en Python (mauvais)
Hachez lentement les mots de passe en utilisant bcrypt en Python
Utilisation de venv dans un environnement Windows + Docker [Python]
[FX] Hit oanda-API avec Python en utilisant Docker
Tweet à l'aide de l'API Twitter en Python
[Python] [Windows] Communication série en Python à l'aide de DLL
J'ai essayé d'utiliser l'optimisation bayésienne de Python
Obtenez des données Youtube en Python à l'aide de l'API Youtube Data
Utilisation des constantes physiques dans Python scipy.constants ~ constant e ~
Scraping de sites Web à l'aide de JavaScript en Python
Développement de slack bot avec python en utilisant chat.postMessage
Ecrire un module python dans fortran en utilisant f2py
Dessinez une structure arborescente en Python 3 à l'aide de graphviz
Remarques sur l'utilisation de python (pydev) avec eclipse
Classification des maladies par Random Forest en utilisant Python
Appelez APIGateWay avec APIKey dans les requêtes python
Téléchargez des fichiers dans n'importe quel format en utilisant Python
Exécution de tâches parallèles à l'aide de concurrent.futures en Python
Créer un diagramme de dispersion elliptique en Python sans utiliser une distribution normale multivariée