Deaktivieren der Sicherheitszertifikatsüberprüfung in Python-Anfragen
Bei der Interaktion mit HTTPS-Endpunkten über die Python-Anfragebibliothek können Fehler im Zusammenhang mit ungültigem SSL auftreten Zertifikate. Um dieses Problem zu beheben, können Sie die Zertifikatsüberprüfung innerhalb der Anfrage deaktivieren.
Laut offizieller Dokumentation können Sie dies erreichen, indem Sie den Verifizierungsparameter auf „Falsch“ setzen. Dies weist Anfragen an, die Zertifikatsüberprüfung zu umgehen.
<code class="python">import requests requests.post(url='https://foo.example', data={'bar': 'baz'}, verify=False)</code>
Alternativ können Sie für Module von Drittanbietern, die möglicherweise die SSL-Überprüfung durchführen, einen Kontextmanager verwenden, um Warnungen zu unterdrücken und die Überprüfung zu deaktivieren. Dazu gehört das Ersetzen der Methode „requests.Session.merge_environment_settings“ durch eine benutzerdefinierte Version, die „Verify“ standardmäßig auf „False“ setzt.
<code class="python">import warnings import contextlib import requests from urllib3.exceptions import InsecureRequestWarning old_merge_environment_settings = requests.Session.merge_environment_settings @contextlib.contextmanager def no_ssl_verification(): opened_adapters = set() def merge_environment_settings(self, url, proxies, stream, verify, cert): opened_adapters.add(self.get_adapter(url)) settings = old_merge_environment_settings(self, url, proxies, stream, verify, cert) settings['verify'] = False return settings requests.Session.merge_environment_settings = merge_environment_settings try: with warnings.catch_warnings(): warnings.simplefilter('ignore', InsecureRequestWarning) yield finally: requests.Session.merge_environment_settings = old_merge_environment_settings for adapter in opened_adapters: try: adapter.close() except: pass</code>
Sie können diesen Kontextmanager wie folgt verwenden:
<code class="python">with no_ssl_verification(): requests.get('https://wrong.host.badssl.example/') print('It works') requests.get('https://wrong.host.badssl.example/', verify=False) print('It resets back')</code>
Das ist es Es ist wichtig zu beachten, dass sich diese Lösung auf alle Anfragen auswirkt, die im Gültigkeitsbereich des Kontextmanagers gestellt werden. Sofern nicht ausdrücklich angegeben, umgehen daher auch nachfolgende Anfragen die Zertifikatsüberprüfung.
Das obige ist der detaillierte Inhalt vonWie deaktiviere ich die Überprüfung des Sicherheitszertifikats in Python-Anfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!