Используя модуль python запросов, очень просто "https получить с базовой аутентификацией c". Этот код работает нормально.
import requests
response = requests.get(url,verify=False,auth=(username, pwd))
print(response.json())
Но моя задача - добиться этого, используя встроенный модуль python, такой как urllib, http.client. Я попытался использовать urllib
import urllib.request
import ssl
verify_ssl = False
passman = urllib.request.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url_no_usrpwd, uname, pwd)
authhandler = urllib.request.HTTPBasicAuthHandler(passman)
if verify_ssl:
opener = urllib.request.build_opener(authhandler)
else:
context = ssl.create_default_context()
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE
opener = urllib.request.build_opener(authhandler, urllib.request.HTTPSHandler(context=context))
urllib.request.install_opener(opener)
res = urllib.request.urlopen(url_no_usrpwd)
print(res.read().decode('utf-8'))
Сначала я решил проблему CERTIFICATE_VERIFY_FAILED. Теперь я получаю эту ошибку "urllib.error.HTTPError: Ошибка HTTP 406: неприемлемо".
Эта проблема очень распространена. Но я много пробовал. Наконец, я решил спросить. Пожалуйста, помогите!
Вопрос: Как заставить https получить вызов по запросу (требуются учетные данные), используя встроенную библиотеку python, такую как urllib.