Я пытаюсь загрузить веб-сайт, используя Python пакет запросов через http / https прокси:
url = 'https://booster-magazine.ch' # Example of failing URL
proxies = {
'http': 'proxy.domain.internal:4321',
'https': 'proxy.domain.internal:4321',
}
r = requests.get(url, proxies=proxies)
Запуск этого запускает следующее сообщение об ошибке requests.exceptions.SSLError: ("bad handshake: Error([('SSL Routine', 'ssl3_get_server_certificate', 'certificate verify failed')],)",)
Веб-браузеры указывают, что сертификат сайта является доверенным, и cURL в командной строке, использующий тот же веб-прокси, что и код python, работает нормально.
curl -x proxy.domain.internal:4321 https://booster-magazine.ch # No error
Некоторые сайты, которые я тестировал, не работают в то время как другие работают нормально. Насколько я могу судить, отчет SSL Labs для этого неисправного сайта не имеет проблем.
Версии пакета, которые я использую:
requests==2.23.0
certifi==2020.4.5.1
Мне известно о существовании опции verify=False
в библиотеке запросов. Как правило, это плохая практика и открывает возможность для смягчения атак. Цель состоит в том, чтобы иметь работающую проверку SSL.