Deaktivieren Sie die SSL-Validierung, ohne in Python-Anforderungen verify = False zu verwenden

Bei der Entwicklung über das Unternehmensnetzwerk bin ich in verschiedene Fallen wie Proxy geraten. Als ich neulich versuchte, ein bestimmtes Modul in Python zu verwenden, schlug die Überprüfung des SSL-Serverzertifikats in "Anfragen" innerhalb des Moduls fehl und "Anfragen.Ausnahmen.SSLError" trat auf.

Um die Überprüfung von SSL-Serverzertifikaten mit "Anforderungen" zu deaktivieren, schreiben Sie normalerweise:

requests.get("https://www.google.com", verify=False)

Diese Methode erfordert jedoch eine Codemodifikation und kann nicht für "Anforderungen" innerhalb des Moduls verwendet werden. Nach der Untersuchung habe ich einen Weg gefunden, die folgenden "Anfragen" zu hacken, also werde ich sie vorstellen.

Weise

Setzen Sie die Umgebungsvariable CURL_CA_BUNDLE auf ein Leerzeichen.

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

Wie es funktioniert

Bei "Anfragen" wird "Verifizieren" mit den Umgebungsvariablen "CURL_CA_BUNDLE" und "REQUESTS_CA_BUNDLE" wie folgt überschrieben. Hacke dies, um verify`` False zu machen.

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'))

Anstatt es tatsächlich "Falsch" zu machen, machen Sie es zu einem leeren Zeichen, das als "Falsch" ausgewertet wird. Der Grund, warum "None", das auch als "False" bewertet wird, nutzlos und leer ist, ist, dass "None" später mit "True" überschrieben wird.

Um kurz zu erklären, wie Pythons "oder" funktioniert, gibt "A oder B" "A" zurück, wenn "A == Wahr" und "B", wenn "A == Falsch". Deshalb

>>> None or None
None
>>> '' or None
None
>>> None or ''
''

Es wird sein. Sie können dies verwenden, um die Umgebungsvariable CURL_CA_BUNDLE auf ein leeres Zeichen zu setzen und verify zu einem leeren Zeichen zu machen, dh False.

Recommended Posts

Deaktivieren Sie die SSL-Validierung, ohne in Python-Anforderungen verify = False zu verwenden
Deaktivieren Sie das python2.6 ssl3-Protokoll in centos6
Melden Sie sich mit Anforderungen in Python bei Slack an
Speichern Sie Bilder mit Python3-Anforderungen
Führen Sie den in Python (Flask) implementierten LINE Bot "ohne Verwendung von Heroku" aus.
Versuchen Sie, ein neuronales Netzwerk in Python aufzubauen, ohne eine Bibliothek zu verwenden
[Python] Validierung von JSON mit Voluptuous
Übersetzt mit Googletrans in Python
Verwenden des Python-Modus in der Verarbeitung
GUI-Programmierung in Python mit Appjar
Vorsichtsmaßnahmen bei der Verwendung von Pit mit Python
[Python3] Google übersetzt Google Übersetzung ohne Verwendung von API
Versuchen Sie es mit LevelDB mit Python (plyvel)
Erstellen Sie Google Mail in Python ohne Verwendung der API
Verwendung globaler Variablen in Python-Funktionen
Python, Slice ohne Doppelpunkt (:). a .__ getitem__ (Slice (3,5)).
Tastenanschläge in Python erkennen (ohne Eingabe)
Mal sehen, wie man Eingaben in Python verwendet
Gesamtleistung in Python (mit Funktools)
Handschriftliche Zeichenerkennung mit KNN in Python
Versuchen Sie es mit LeapMotion mit Python
Suche nach Tiefenpriorität mit Stack in Python
Bei Verwendung regulärer Ausdrücke in Python
GUI-Erstellung in Python mit tkinter 2
Erstellen Sie mit dem Python-Anforderungsmodul einen Datensatz mit Anhängen in KINTONE
Mausbedienung mit Windows-API in Python
Hinweise zur Verwendung von cChardet und python3-chardet in Python 3.3.1.
Versuchen Sie es mit der Wunderlist-API in Python
GUI-Erstellung in Python mit tkinter Teil 1
Holen Sie sich Suica Balance in Python (mit libpafe)
Übung, dies in Python zu verwenden (schlecht)
Hash-Passwörter langsam mit bcrypt in Python
Verwenden von venv in der Windows + Docker-Umgebung [Python]
[FX] Hit oanda-API mit Python mit Docker
Tweet mit der Twitter-API in Python
[Python] [Windows] Serielle Kommunikation in Python über DLL
Ich habe versucht, die Bayes'sche Optimierung von Python zu verwenden
Holen Sie sich Youtube-Daten in Python mithilfe der Youtube-Daten-API
Verwenden physikalischer Konstanten in Python scipy.constants ~ Konstante e ~
Scraping von Websites mit JavaScript in Python
Entwicklung eines Slack Bot mit Python mit chat.postMessage
Schreiben Sie mit f2py ein Python-Modul in fortran
Zeichnen Sie mit graphviz eine Baumstruktur in Python 3
Hinweise zur Verwendung von Python (Pydev) mit Eclipse
Krankheitsklassifizierung durch Random Forest mit Python
Rufen Sie APIGateWay mit APIKey in Python-Anforderungen auf
Laden Sie Dateien in jedem Format mit Python herunter
Parallele Taskausführung mit concurrent.futures in Python
Erstellen Sie in Python ein elliptisches Streudiagramm, ohne eine multivariate Normalverteilung zu verwenden