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

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 15:38:03754parcourir

How to Disable Certificate Verification in Python Requests?

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

Lorsque vous rencontrez une erreur de certificat expiré lors de l'exécution de requêtes HTTPS avec des requêtes, une solution courante consiste à désactiver le vérification du certificat de sécurité.

Solution 1 : Utiliser verify=False

Comme mentionné dans la documentation, vous pouvez passer verify=False pour désactiver la vérification du certificat.

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

Solution 2 : Demandes de correctifs singe (Gestionnaire de contexte)

Pour une utilisation plus avancée, vous pouvez utiliser un gestionnaire de contexte pour singer les demandes de correctifs et désactiver la vérification des certificats pour toutes les demandes dans le contexte.

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

Utilisation :

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

Notez que ce gestionnaire de contexte ferme tous les adaptateurs ouverts après l'avoir quitté pour éviter un comportement inattendu dû aux connexions mises en cache.

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