Comment désactiver la vérification du certificat de sécurité dans les requêtes Python ?

Barbara Streisand
Libérer: 2024-10-29 00:15:30
original
782 Les gens l'ont consulté

How to Disable Security Certificate Verification in Python Requests?

Désactivation de la vérification du certificat de sécurité dans les requêtes Python

Lors de l'interaction avec les points de terminaison HTTPS à l'aide de la bibliothèque de requêtes Python, vous pouvez rencontrer des erreurs liées à un SSL non valide certificats. Pour atténuer ce problème, vous pouvez désactiver la vérification du certificat dans la demande.

Selon la documentation officielle, vous pouvez y parvenir en définissant le paramètre de vérification sur False. Cela demande aux demandes de contourner la vérification du certificat.

<code class="python">import requests

requests.post(url='https://foo.example', data={'bar': 'baz'}, verify=False)</code>
Copier après la connexion

Alternativement, pour les modules tiers pouvant gérer la vérification SSL, vous pouvez utiliser un gestionnaire de contexte pour supprimer les avertissements et désactiver la vérification. Cela implique de remplacer la méthode request.Session.merge_environment_settings par une version personnalisée qui définit verify sur False par défaut.

<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>
Copier après la connexion

Vous pouvez utiliser ce gestionnaire de contexte comme suit :

<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>
Copier après la connexion

C'est Il est important de noter que cette solution affecte toutes les requêtes effectuées pendant le périmètre du gestionnaire de contexte. Par conséquent, sauf indication contraire explicite, les demandes ultérieures contourneront également la vérification du certificat.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!