Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich die SSL-Zertifikatsüberprüfung in Python-Anfragen deaktivieren?

Wie kann ich die SSL-Zertifikatsüberprüfung in Python-Anfragen deaktivieren?

DDD
DDDOriginal
2024-10-27 06:04:29478Durchsuche

How can I disable SSL certificate verification in Python requests?

Sicherheitszertifikatsüberprüfung in Python-Anfragen deaktivieren

Bei HTTPS-Anfragen überprüft die Anforderungsbibliothek von Python das SSL-Zertifikat des Servers, um sicherzustellen, dass die Verbindung sicher ist . In einigen Fällen, beispielsweise beim Zugriff auf Websites mit abgelaufenen Zertifikaten, möchten Sie diese Überprüfung jedoch möglicherweise deaktivieren.

Um die Zertifikatsüberprüfung zu deaktivieren, verwenden Sie das Argument „Verify“ in der Funktion „requests.post“. Setzen Sie es wie folgt auf „Falsch“:

<code class="python">import requests
requests.post(url='https://foo.example', data={'bar':'baz'}, verify=False)</code>

Dadurch kann die Anfrage ohne Überprüfung des SSL-Zertifikats gestellt werden. Es ist jedoch wichtig zu beachten, dass dies ein Sicherheitsrisiko darstellen kann, da es die Möglichkeit von Man-in-the-Middle-Angriffen eröffnet. Verwenden Sie diese Option mit Vorsicht.

Verwenden eines Kontextmanagers für die SSL-Überprüfung

Wenn Sie die SSL-Überprüfung für mehrere Anfragen in einem bestimmten Kontext deaktivieren müssen, können Sie einen verwenden Kontextmanager wie folgt:

<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):
        # ...

    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

with no_ssl_verification():
    # Make requests without SSL verification here</code>

Dieser Kontextmanager setzt die Überprüfung vorübergehend für alle innerhalb des Blocks gestellten Anforderungen auf „False“ und kehrt dann zum Standardverhalten zurück, wenn der Block beendet wird. Es unterdrückt auch die SSL-Warnung, die sonst ausgelöst würde.

Das obige ist der detaillierte Inhalt vonWie kann ich die SSL-Zertifikatsüberprüfung in Python-Anfragen deaktivieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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