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.
Setzen Sie die Umgebungsvariable CURL_CA_BUNDLE
auf ein Leerzeichen.
import os
os.environ['CURL_CA_BUNDLE'] = ''
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