Как отключить проверку сертификата в модуле requests?
Как на уровне самого модуля requests , в его файлах отключить проверку сертификатов?
Чтобы когда какое либо приложение использующее данный модуль отправляла get запрос не проверялся сертификат.
В каком файле этого модуля можно этого сделать?
Сэр, я имел в виду как отключить эту проверку на уровне самой библиотеки, чтобы этот параметр оставался отключенным всегда, понимаете ? чтобы по умолчанию было verify =False
3 ответа 3
нужно отключить эту проверку на уровне самого модуля, а не в своем приложении, чтобы не приходилось постоянно указывать в коде verify=False
В вашем виртуальном окружении по адресу (python3.6 может быть другим):
venv/lib/python3.6/site-packages/requests/sessions.py
def request(self, method, url, params=None, data=None, headers=None, cookies=None, files=None, auth=None, timeout=None, allow_redirects=True, proxies=None, hooks=None, stream=None, verify=None, cert=None, json=None):
измените verify=None на verify=False . хотя затея — так себе.
согласен с @Jack_oS, затея так себе. Все таки переопределение помогает не притрагиваться к внутренностям пакетов.
Requests can also ignore verifying the SSL certificate if you set verify to False:
requests.get('https://kennethreitz.org', verify=False)
Note that when verify is set to False, requests will accept any TLS certificate presented by the server, and will ignore hostname mismatches and/or expired certificates, which will make your application vulnerable to man-in-the-middle (MitM) attacks. Setting verify to False may be useful during local development or testing.
Укажи параметр verify=False чтоб пропустить проверкеу сертификата, но лучше положи сертификат вместе со своим приложением и в параметре verify укажи путь к нему.
Этот же параметр присутствует в Session объекте. Создай сессию без проверки и используй её вместо модуля.
session = requests.Session(verify=False) session.get('https://httpbin.org/cookies/set/sessioncookie/123456789') r = session.get('https://httpbin.org/cookies')
The problem
In Chrome, the certificate seems valid: However, in Python, the request fails with SSLV3_ALERT_HANDSHAKE_FAILURE , even when using the verify flag which ignores erroneous certificates:
Stack trace
>>> requests.__version__ '2.7.0' >>> LOGIN_URL = 'https://service.isracard.co.il/I_logon.jsp' >>> requests.get(LOGIN_URL, verify=False) Traceback (most recent call last): File "", line 1, in File "/private/tmp/sslenv/lib/python2.7/site-packages/requests/api.py", line 69, in get return request('get', url, params=params, **kwargs) File "/private/tmp/sslenv/lib/python2.7/site-packages/requests/api.py", line 50, in request response = session.request(method=method, url=url, **kwargs) File "/private/tmp/sslenv/lib/python2.7/site-packages/requests/sessions.py", line 465, in request resp = self.send(prep, **send_kwargs) File "/private/tmp/sslenv/lib/python2.7/site-packages/requests/sessions.py", line 573, in send r = adapter.send(request, **kwargs) File "/private/tmp/sslenv/lib/python2.7/site-packages/requests/adapters.py", line 431, in send raise SSLError(e, request=request) requests.exceptions.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:590)
Environment
OS And packages
cURL
$ curl -I https://service.isracard.co.il/I_logon.jsp HTTP/1.1 200 OK Date: Fri, 18 Sep 2015 11:37:27 GMT Server: IBM_HTTP_Server X-Powered-By: Servlet/3.0 Set-Cookie: JSESSIONID=0000R90MxFKBVxBMV665syGfjnh:-1; Path=/; HttpOnly Expires: Thu, 01 Dec 1994 16:00:00 GMT Cache-Control: no-cache="set-cookie, set-cookie2" Set-Cookie: Alt50_ZLinuxPrd=94742720.30755.0000; expires=Fri, 18-Sep-2015 12:07:19 GMT; path=/ Content-Type: text/html; charset=ISO-8859-8 Content-Language: iw-IL Set-Cookie: ServiceP=53323968.20480.0000; path=/