Maison >développement back-end >Tutoriel Python >Comment puis-je désactiver la vérification du certificat SSL dans les requêtes Python ?

Comment puis-je désactiver la vérification du certificat SSL dans les requêtes Python ?

DDD
DDDoriginal
2024-10-27 06:04:29485parcourir

How can I disable SSL certificate verification in Python requests?

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

Lors des requêtes HTTPS, la bibliothèque de requêtes de Python vérifie le certificat SSL du serveur pour garantir que la connexion est sécurisée . Cependant, dans certains cas, par exemple lors de l'accès à des sites Web dont les certificats ont expiré, vous souhaiterez peut-être désactiver cette vérification.

Pour désactiver la vérification des certificats, utilisez l'argument verify dans la fonction request.post. Définissez-le sur False comme suit :

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

Cela permet d'effectuer la demande sans vérifier le certificat SSL. Cependant, il est important de noter que cela peut présenter un risque pour la sécurité, car cela ouvre la possibilité d’attaques de l’homme du milieu. Utilisez cette option avec prudence.

Utilisation d'un gestionnaire de contexte pour la vérification SSL

Si vous devez désactiver la vérification SSL pour plusieurs demandes dans un contexte spécifique, vous pouvez utiliser un gestionnaire de contexte comme suit :

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

Ce gestionnaire de contexte définit temporairement verify sur False pour toutes les requêtes effectuées dans le bloc, puis revient au comportement par défaut à la sortie du bloc. Il supprime également l'avertissement SSL qui serait autrement déclenché.

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