Maison >développement back-end >Tutoriel Python >Comment désactiver la vérification du certificat de sécurité dans les requêtes Python ?

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

Barbara Streisand
Barbara Streisandoriginal
2024-10-29 00:15:30942parcourir

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>

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>

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>

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!

Déclaration:
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