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!