Как получить веб-сайт с указанным c IP-адрес сервера в cdn с HTTPS? - PullRequest
0 голосов
/ 07 февраля 2020

Сайт использует cdn, поэтому IP-адрес его доменного имени, разрешенный DNS в разных местах, различен. Я хочу проверить содержимое этого веб-сайта на каждом сервере, чтобы узнать, все ли выполнено syn c.

Например, я хочу проверить http://www.a.com/index.html. Обычно я должен использовать: reports.get ('http://www.a.com/index.html "), но тогда я не могу указать конкретную c cdn serve для получения. Поэтому я изменил www.a.com в ссылке на ip 1.2.3.4, и добавил «HOST» в заголовок для реализации SNI, чтобы моя python3 .6 программа выглядела так:

import requests
html = requests.get (url = "http://1.2.3.4/index.html", headers = {"Host": "www.a.com"})

Она работала очень хорошо, и я получил желаемые результаты Но пока я делаю ту же работу для https://www.a.com/index.html, я получу сообщение об ошибке:

import requests
html = requests.get (url = "https://1.2.3.4/index.html", headers = {"Host": "www.a.com"}, verify = False)

output:
requests.exceptions.SSLError: HTTPSConnectionPool (host = '1.2.3.4', port = 443): Max retries exceeded with url: /index.html (Caused by SSLError (SSLError (1, '[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c: 852) '),))

Как я могу это сделать? Спасибо.

1 Ответ

0 голосов
/ 07 февраля 2020

Ваша проблема с проверкой сертификата.

Загрузите сертификат с веб-сайта и выполните r = requests.get('https://...', , verify=True, cert=['/path/to/my/ca.crt'])

Вы также захотите проверить, действительны ли ваши сертификаты .

...