Python запросов: исправить SSL_verify_failed без обхода (verify = False) - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь получить cook ie (и остальную часть страницы) с веб-сайта с проверкой cook ie с использованием

запросов библиотеки, но это не удается на SSL-сертификате проверка:

HTTPSConnectionPool(host='***host***', port=443): Max retries exceeded with url: ***url*** (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)')))

Я знаю (от здесь ), что могу обойти его, используя verify=False, но это, ИМХО, очень небезопасный способ. Я также знаю, что есть способ получить и проанализировать сертификаты (от здесь ), но этот способ для меня очень излишний. Я также должен отметить, что у меня установлена ​​ certifi по pip install certifi, но он ничего не делает из моего POV.

Знаете ли вы, как это исправить? Спасибо за ответы!

Мой код:

    import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.76 Safari/537.36'
}
r = requests.get('https://secure.ulrichsw.cz/estrava/, headers=headers, verify=True)
session_id = r.cookies['PHPSESSID']
print(session_id)

1 Ответ

0 голосов
/ 11 марта 2020

Позвольте мне предвосхитить это, сказав, что вы не хотите этого делать, если вы не знаете / не знаете, кто выдал сертификат на этом удаленном сервере, и вы уверены, что это действительная система. Не просто предполагайте, что это просто законный сервис с плохим сертификатом (который вы хотите использовать.)

Вам потребуется пакет CA, соответствующий этому сертификату, следуйте приведенным ниже инструкциям:

https://requests.readthedocs.io/en/stable/user/advanced/#ssl -cert-проверка

Подсказка: используйте файл .pem из вашего самоподписанного сертификата. Или предоставьте pem-файл с сертификатом сервера вместе с любыми промежуточными сертификатами.

Вы также можете указать в каталоге valid = и вставить все сертификаты внутри него.

...