Wie deaktiviere ich die Überprüfung des Sicherheitszertifikats in Python-Anfragen?

Barbara Streisand
Freigeben: 2024-10-29 00:15:30
Original
782 Leute haben es durchsucht

How to Disable Security Certificate Verification in Python Requests?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!