Da the documentation:
Le richieste possono anche ignorare la verifica della certficate SSL se si imposta verify
False.
>>> requests.get('https://kennethreitz.com', verify=False)
<Response [200]>
Se si utilizza un modulo di terze parti e si desidera disattivare i controlli, ecco un gestore di contesto che le patch scimmia requests
e cambia in modo che verify=False
è l'impostazione predefinita e sopprime l'avviso.
import warnings
import requests
import contextlib
try:
from functools import partialmethod
except ImportError:
# Python 2 fallback: https://gist.github.com/carymrobbins/8940382
from functools import partial
class partialmethod(partial):
def __get__(self, instance, owner):
if instance is None:
return self
return partial(self.func, instance, *(self.args or()), **(self.keywords or {}))
@contextlib.contextmanager
def no_ssl_verification():
old_request = requests.Session.request
requests.Session.request = partialmethod(old_request, verify=False)
warnings.filterwarnings('ignore', 'Unverified HTTPS request')
yield
warnings.resetwarnings()
requests.Session.request = old_request
e un esempio di come usarlo:
with no_ssl_verification():
requests.get('https://93.184.216.3/')
print('It works')
try:
requests.get('https://93.184.216.3/')
except requests.exceptions.SSLError:
print('It broke')
Grazie, questo funziona se si dispone di alcune richieste chiamate all'interno del proprio codice, ma immagina di voler disabilitare questo in una terza libreria parzialmente che usa le richieste, ... sarebbe impossibile risolvere la lib di terze parti come questa. – sorin
@sorin: esegui semplicemente la 'richiesta' di patch della scimmia e avanza' verify' su 'False'. – Blender
Come si sopprime il messaggio di avvertenza che viene ancora stampato? – Michael