Что именно будет если отключить SSL сертификат при парсинге?

Ссылка скопирована
1 ответ

По вводным: работал над кодом для парсера двух страниц:

1.

url_1 = f'https://steamcommunity.com/market/listings/{game}/{name}'

Пример:https://steamcommunity.com/market/listings/440/Man...

2.

url_2 = f"https://steamcommunity.com/market/itemordershistogram?country=NL&language=russian&currency=5&item_nameid={nameid}&two_factor=0"

Пример:
https://steamcommunity.com/market/itemordershistog...

По вводным: для работы использовал прокси из библиотеки proxybroker2 с настройками:

[("HTTP", ("Anonymous", "High")), ("HTTPS", ("Anonymous", "High"))]

Сейчас ситуация такая: но даже так иногда выпадают прокси с меньшей анонимностью, но это не к вопросу.

Сейчас ситуация такая: в конечном итоге на практике выяснил, что прокси могут дать 200 результат не с первой попытки, и поэтому обычно отвожу на 1 прокси по 3 попытки, после чего меняю прокси.

Сейчас ситуация такая: там же увидел эту часто повторяющуюся ошибку:

Cannot connect to host steamcommunity.com:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:992)')]

По вводным: попроверял отключить SSL сертификат, в моем случае при использовании async используется параметрSsl=False.

По вводным: количество запросов с ответом!= 200 значительно снизилось. Приблизительно в 3 раза.
По вводным: если ранее на 1 успешный запрос приходилось ~18 провальных, то теперь порядка 6.

Нужно понять: в конечном счете вопрос: чем для меня, человека использующего пк в своей домашней сети, и делающего запрос только на 2 конечные точки, меняя лишь данные по типу имени и name_id, в запросе отправляющем 0 информации о каких-либо логинах паролях и прочих данных за исключением статично настроенных headers, а после принимающим обычный text и делая вычисления на его основах, опасно отключение SSL?

Сейчас ситуация такая: я вижу лишь призрачный сценарий того, что кто-то подменит данные на страницы так, чтобы мой код вызвал ошибку из-за другой структуры данных или подсчитал что-то неправильно.

По вводным: единственные опасения в целом возникают только к прокси, которые являются общедоступными, ведь именно через них я делаю запросы и отключаю SSL.

Сейчас ситуация такая: может знающий человек подсказать, чем в результате может закончиться моя история с таким подходом к парсингу, и не словами "это не безопасно", а конкретно чем? Я же не вирус себе скачаю через async withSession.get
Очень плох в этой теме, Буду признателен выслушать вас!

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Web-разработка Ответ

Если отключить проверку SSL-сертификата при парсинге, запросы действительно могут “начать проходить” через часть проблемных прокси, но вы теряете проверку, что подключились именно к нужному сайту, а не к подмененному узлу. Для парсера Steam Market это риск получить подмененный HTML/JSON, ложные цены, банальную ошибку от прокси или утечку cookies/токенов, если они используются.

В Python это обычно выглядит так:

requests.get(url, verify=False)

requests.get(url, verify=False)

Так делать можно только для диагностики на короткое время, но не как постоянное решение. Правильнее отфильтровать плохие HTTPS-прокси и оставить verify=True. Если прокси ломает TLS, это плохой прокси.

Что происходит при verify=False:

  • Python не проверяет цепочку сертификата.
  • Не проверяется соответствие домена сертификату.
  • MITM-прокси может подменить ответ незаметно.
  • Ошибки TLS маскируются, но данные становятся недостоверными.

Для диагностики прокси сделайте отдельную проверку:

import requests
 
def check_proxy(proxy):
    proxies = {'http': proxy, 'https': proxy}
    try:
        r = requests.get(
            'https://steamcommunity.com/',
            proxies=proxies,
            timeout=15,
            verify=True
        )
        return r.status_code, r.url
    except requests.RequestException as e:
        return None, str(e)

import requests def check_proxy(proxy): proxies = {'http': proxy, 'https': proxy} try: r = requests.get( 'https://steamcommunity.com/', proxies=proxies, timeout=15, verify=True ) return r.status_code, r.url except requests.RequestException as e: return None, str(e)

Если часть прокси падает только с verify=True, исключайте их. Если вам нужен корпоративный MITM-прокси, добавьте его CA-сертификат в trust store или передайте путь к CA bundle, а не отключайте проверку полностью.

requests.get(url, verify='/path/to/ca-bundle.pem')

requests.get(url, verify='/path/to/ca-bundle.pem')

Итог: отключение SSL-проверки допустимо только как временный тест “это TLS или не TLS”. Для рабочего парсинга оставьте verify=True, проверяйте прокси заранее, используйте таймауты, retries и не передавайте через сомнительные прокси авторизационные cookies.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно