De la documentation :
requests
peut également ignorer la vérification du certificat SSL si vous définissez
verify
sur False.
>>> requests.get('https://kennethreitz.com', verify=False)
<Response [200]>
Si vous utilisez un module tiers et que vous souhaitez désactiver les vérifications, voici un gestionnaire de contexte qui corrige le singe requests
et le modifie de manière à ce qu'il verify=False
soit par défaut et supprime l'avertissement.
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):
# Verification happens only once per connection so we need to close
# all the opened adapters once we're done. Otherwise, the effects of
# verify=False persist beyond the end of this context manager.
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
Voici comment vous l'utilisez:
with no_ssl_verification():
requests.get('https://wrong.host.badssl.com/')
print('It works')
requests.get('https://wrong.host.badssl.com/', verify=True)
print('Even if you try to force it to')
requests.get('https://wrong.host.badssl.com/', verify=False)
print('It resets back')
session = requests.Session()
session.verify = True
with no_ssl_verification():
session.get('https://wrong.host.badssl.com/', verify=True)
print('Works even here')
try:
requests.get('https://wrong.host.badssl.com/')
except requests.exceptions.SSLError:
print('It breaks')
try:
session.get('https://wrong.host.badssl.com/')
except requests.exceptions.SSLError:
print('It breaks here again')
Notez que ce code ferme tous les adaptateurs ouverts qui ont traité une demande corrigée une fois que vous quittez le gestionnaire de contexte. En effet, les demandes conservent un pool de connexions par session et la validation de certificat ne se produit qu'une seule fois par connexion, des événements inattendus comme celui-ci se produiront:
>>> import requests
>>> session = requests.Session()
>>> session.get('https://wrong.host.badssl.com/', verify=False)
/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py:857: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
InsecureRequestWarning)
<Response [200]>
>>> session.get('https://wrong.host.badssl.com/', verify=True)
/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py:857: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
InsecureRequestWarning)
<Response [200]>
requests
etverify
par défautFalse
.requests.packages.urllib3.disable_warnings()
from urllib3.exceptions import InsecureRequestWarning
alorsrequests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)
Utilisez
requests.packages.urllib3.disable_warnings()
etverify=False
sur lesrequests
méthodes.la source
verify=False
doit être présent quand même. Tnx.from urllib3.exceptions import InsecureRequestWarning
alorsrequests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)
requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning)
. Cela fonctionne car il garantit queurllib3.exceptions.InsecureRequestWarning
c'est exactement celui utilisé parrequests
.Pour ajouter à la réponse de Blender , vous pouvez désactiver SSL pour toutes les demandes en utilisant
Session.verify = False
Notez que
urllib3
, (que Requests utilise), décourage fortement de faire des requêtes HTTPS non vérifiées et déclenchera unInsecureRequestWarning
.la source
Peut également être fait à partir de la variable d'environnement:
la source
export REQUESTS_CA_BUNDLE='your-ca.pem'
os.environ['REQUESTS_CA_BUNDLE'] = 'FiddlerRootCertificate_Base64_Encoded_X.509.cer.pem' # your-ca.pem
œuvres pour Python 3.8.3 lors de l' utilisation 1.24.0 google-nuage-BigQuery et BigQuery client Lib pour PythonSi vous souhaitez envoyer exactement la demande de publication avec l'option verify = False, le moyen le plus rapide consiste à utiliser ce code:
la source