Python Web Scraping: проверка сертификатов SSL для запросов HTTPS с использованием модуля запросов
Python Web Scraping: Упражнение 27 с решением
Напишите программу на Python для проверки SSL-сертификатов для запросов HTTPS с помощью модуля запросов.
Примечание. Requests проверяет сертификаты SSL для запросов HTTPS, как веб-браузер. По умолчанию проверка SSL включена, и запрос выдаст SSLError, если он не может проверить сертификат
Пример решения : -
Код Python:
import requests
print(requests.get('https://w3resource.com'))
print(requests.get('https://wayback.com'))
Выход
<Ответ [200]> Traceback (последний вызов был последним): Файл "/usr/local/lib/python3.6/dist-packages/urllib3/connectionpool.py", строка 600, в урлопене фрагментированный = фрагментированный) Файл "/usr/local/lib/python3.6/dist-packages/urllib3/connectionpool.py", строка 343, в _make_request self._validate_conn (Conn) Файл "/usr/local/lib/python3.6/dist-packages/urllib3/connectionpool.py", строка 839, в _validate_conn conn.connect () Файл "/usr/local/lib/python3.6/dist-packages/urllib3/connection.py", строка 364, в соединении _match_hostname (cert, self.assert_hostname или server_hostname) Файл "/usr/local/lib/python3.6/dist-packages/urllib3/connection.py", строка 374, в _match_hostname имя_хоста (cert, asserted_hostname) Файл "/usr/lib/python3.6/ssl.py", строка 327, в имени_хоста % (имя хоста, ',' .join (map (repr, dnsnames)))) ssl.CertificateError: имя хоста «wayback.com» не соответствует ни «* .prod.iad2.secureserver.net», ни «prod.iad2.secureserver.net» Во время обработки вышеупомянутого исключения произошло другое исключение: Traceback (последний вызов был последним): Файл "/usr/local/lib/python3.6/dist-packages/requests/adapters.py", строка 449, в отправке Тайм-аут = Тайм-аут Файл "/usr/local/lib/python3.6/dist-packages/urllib3/connectionpool.py", строка 638, в урлопене _stacktrace = sys.exc_info () [2]) Файл "/usr/local/lib/python3.6/dist-packages/urllib3/util/retry.py", строка 398, в приращениях поднять MaxRetryError (_pool, url, error или ResponseError (причина)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool (host = 'wayback.com', port = 443): превышено максимальное количество попыток с помощью url: / (вызвано SSLError (CertificateError ("hostname 'wayback.com' не соответствует ни одному из '* .prod.iad2.secureserver.net ',' prod.iad2.secureserver.net '",),)) Во время обработки вышеупомянутого исключения произошло другое исключение: Traceback (последний вызов был последним): Файл "/tmp/sessions/d2a193285f0c778a/main.py", строка 3, в <module> печать (requests.get ( 'https://wayback.com')) Файл "/usr/local/lib/python3.6/dist-packages/requests/api.py", строка 75, в get запрос на возврат ('get', url, params = params, ** kwargs) Файл "/usr/local/lib/python3.6/dist-packages/requests/api.py", строка 60, по запросу вернуть session.request (method = метод, url = url, ** kwargs) Файл "/usr/local/lib/python3.6/dist-packages/requests/sessions.py", строка 533, в запросе resp = self.send (prep, ** send_kwargs) Файл "/usr/local/lib/python3.6/dist-packages/requests/sessions.py", строка 646, в отправке r = adapter.send (запрос, ** кваргс) Файл "/usr/local/lib/python3.6/dist-packages/requests/adapters.py", строка 514, в отправке поднять SSLError (e, request = request) request.exceptions.SSLError: HTTPSConnectionPool (host = 'wayback.com', port = 443): максимальное количество повторов превышено с помощью url: / (вызвано SSLError (CertificateError ("hostname" wayback.com "не соответствует ни одному из '* .prod.iad2.secureserver.net ',' prod.iad2.secureserver.net '",),))
Блок - схема:
Редактор кода Python:
Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
disqus2code