Heim  >  Artikel  >  Backend-Entwicklung  >  Wie deaktiviere ich die Zertifikatsüberprüfung in Python-Anfragen?

Wie deaktiviere ich die Zertifikatsüberprüfung in Python-Anfragen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-26 15:38:03754Durchsuche

How to Disable Certificate Verification in Python Requests?

Deaktivieren Sie die Zertifikatsüberprüfung in Python-Anfragen

Wenn beim Senden von HTTPS-Anfragen mit Anfragen ein Fehler wegen eines abgelaufenen Zertifikats auftritt, besteht eine gängige Lösung darin, die zu deaktivieren Überprüfung des Sicherheitszertifikats.

Lösung 1: Verwenden von „Verify=False“

Wie in der Dokumentation erwähnt, können Sie „Verify=False“ übergeben, um die Zertifikatsüberprüfung zu deaktivieren.

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

Lösung 2: Patching-Anfragen simulieren (Kontextmanager)

Für eine erweiterte Verwendung können Sie einen Kontextmanager verwenden, um Patch-Anfragen zu simulieren und die Zertifikatsüberprüfung für alle darin enthaltenen Anfragen zu deaktivieren den Kontext.

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

Verwendung:

<code class="python">with no_ssl_verification():
    requests.get('https://wrong.host.badssl.example/')</code>

Beachten Sie, dass dieser Kontextmanager alle offenen Adapter schließt, nachdem er verlassen wurde, um unerwartetes Verhalten aufgrund zwischengespeicherter Verbindungen zu vermeiden.

Das obige ist der detaillierte Inhalt vonWie deaktiviere ich die Zertifikatsüberprüfung in Python-Anfragen?. 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