Od the documentation:
Wnioski można również ignorować weryfikacji certficate SSL jeśli ustawisz verify
false.
>>> requests.get('https://kennethreitz.com', verify=False)
<Response [200]>
Jeśli używasz modułu innej firmy i chcesz wyłączyć kontrole, oto kierownik kontekst że łaty małpa requests
i zmienia go tak, że verify=False
jest domyślnym i tłumi ostrzeżenie.
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
a przykładem tego, jak z niego korzystać:
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')
Dzięki, to działa, jeśli masz kilka żądań połączeń wewnątrz własnego kodu, ale wyobraź sobie, że chcę wyłączyć to w trzeciej częściowej bibliotece, która korzysta z żądań, ... niemożliwe byłoby naprawienie takiej biblioteki. – sorin
@sorin: Po prostu patch małpy 'requests' i domyślnie' verify' na 'False'. – Blender
Jak ukryć duży nieprzyjemny komunikat ostrzegawczy, który nadal jest drukowany? – Michael