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

Mary-Kate Olsen
Freigeben: 2024-10-26 15:38:03
Original
813 Leute haben es durchsucht

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

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

Verwendung:

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

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!

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