У меня есть настройка сервера для тестирования с самозаверяющим сертификатом и вы хотите проверить его.
Как игнорировать проверку SSL в версии Python 3 urlopen
?
Вся информация, которую я нашел относительно этого, касается urllib2
или Python 2. В общем случае.
urllib
в python 3 изменилось с urllib2
:
Python 2, urllib2: urllib2.urlopen(url[, data[, timeout[, cafile[, capath[, cadefault[, context]]]]])
https://docs.python.org/2/library/urllib2.html#urllib2.urlopen
Python 3: urllib.request.urlopen(url[, data][, timeout])
https://docs.python.org/3.0/library/urllib.request.html?highlight=urllib#urllib.request.urlopen
Итак, я знаю, что это можно сделать в Python 2 следующим образом. Однако в Python 3 urlopen
отсутствует контекстный параметр.
import urllib2
import ssl
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
urllib2.urlopen("https://your-test-server.local", context=ctx)
И да, я знаю, что это плохая идея. Это предназначено только для тестирования на частном сервере.
Я не мог найти, как это должно быть сделано в документации Python 3 или в любом другом вопросе. Даже те, которые явно упоминают Python 3, все еще имели решение для urllib2/Python 2.