На некоторых популярных сайтах устанавливается защита от DDoS, когда при запросе страницы сайта сначала выдаётся промежуточная страница с javascript, которая выполняет проверку на браузер (роботы / парсеры обычно не используют браузер, потому не проходят эту проверку), и, только если проверка пройдена, этот скрипт перенаправляет вас на ту же страницу, только уже с реальным её содержимым.
Скрипт этот выполняет некоторые вычисления, потом устанавливает Cookies, и при следующем запросе этой же страницы передаются эти Cookies, — так сайт определяет, что проверка на браузер успешно выполнена.
Как проверить, проблема в защите сайта от DDoS, или в чём-то другом?
В случае использования подобной защиты (Qrator, Incapsula, CloudFare и т.п.), в коде страницы вместо данных будет одна или несколько ссылок на файлы со скриптами js
Как обойти эту защиту при использовании парсера?
Вариант 1
- загружаем любую страницу сайта (например, главную) в браузере Internet Explorer
- ждём несколько секунд пока отработает скрипт
- убеждаемся что на странице прогрузились данные (что произошел редирект после выполнения скрипта)
- считываем Cookies из Internet Explorer
- выполняем запросы к сайту с использованием этих Cookies (действие Загрузить страницу по ссылке, режим загрузки — WinHTTP)
Вариант 2
Рассмотрим этот вариант на примере сайта leroymerlin.ru с защитой Qrator.
Там страницы разделов грузятся без проблем, а вот для страниц товаров срабатывает защита.
При загрузке страницы товара парсером, мы получаем очень короткий ответ:
В ответе мы видим запуск скрипта: <script src="/__qrator/qauth_utm_v2.js"></script>
Значит, это как раз тот случай, когда надо обходить такую защиту.
- читаем иструкцию по обходу подобных защит
- ищем список IP этого сайта:
https://viewdns.info/iphistory/?domain=leroymerlin.ru - берем второй IP адрес из списка (прямой адрес сайта), подставляем его в ссылку на товар вместо адреса сайта, и проверяем ссылку в браузере:
http://178.248.234.184/product/hozblok-metallicheskiy-2-05x2-57x2-02-sm-84759919/
ура, страницы отображаются в браузере, — значит, с большой вероятностью мы справимся с обходом блокировки - проверяем загрузку парсером — уже лучше, но получаем ошибку 403:
- добавляем заголовки запроса из браузера, проверяем, — всё заработало:
Действие Параметр Значение Создать новый экземпляр WinHTTPRequest Сброс Cookies и заголовков запроса да Добавить заголовок запроса Заголовок Accept Значение text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Использовать для ВСЕХ запросов да Добавить заголовок запроса Заголовок Connection Значение keep-alive Использовать для ВСЕХ запросов да Добавить заголовок запроса Заголовок Host Значение 178.248.234.184 Использовать для ВСЕХ запросов да Добавить заголовок запроса Заголовок Upgrade-Insecure-Requests Значение 1 Использовать для ВСЕХ запросов да Добавить заголовок запроса Заголовок User-Agent Значение Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36 Использовать для ВСЕХ запросов да Загрузить страницу по ссылке Способ загрузки WinHTTP Кеширование URL Дополнительные опции
Комментарии
Просто используйте браузер Google Chrome для работы с этим сайтом.
Инструкция писалась в то время, когда мой парсер не умел взаимодействовать с современными браузерами.
Способ рабочий для leroymerlin.ru на сентябрь 2023?
Простите. Ещё такой момент. Это информация с сайта
Версия протокола: "TLSv1.3"
Набор шифров: "TLS_AES_256_GCM_SHA384"
Группа обмена ключами: "x25519"
Схема подписи: "RSA-PSS-SHA256"
Узел allegro.pl:
Там Версия протокола:"TLS v1.3" Это может как то мешать правильной работе парсера? Просто в настройках программы при проверке SSL для способов загрузки указана версия TLS v1.2. Спасибо.
Не могу сказать в чём проблема, у меня этот сайт не открывается.
А насчёт geo.captcha-delivery.com — это 2 капчи в одной: гугловская Recaptcha V2 и Geetest CAPTCHA
Сайт https://allegro.pl/. В предыдущем сообщении, не знаю почему, удалилась часть кода загруженной программой страницы. Там какая-то geocaptcha cid':'AHrlqAAAAAMAQjM4DzH1-UAAl-wZKw==','hsh':'77DC0FFBAA0B77570F6B414F8E5BDB', 't':'bv','s':29560, 'e':'b09ff2f4714f8d982537b981e872c4874e68ed1c298e34fbf1773fdee05d9e46', 'host':'geo.captcha-delivery.com'} на rucaptcha.com не нашёл поддержки даной капчи.
Можно обойти что? То что не грузится страница? Что через время сайт блокирует? Что страница грузится не в той кодировке?
Не зная про какой сайт речь, ничего сказать не могу. Но, ели страницы грузятся, - значит, можно обойти защиту.
При попытке winHTTP выдает (Please enable JS and disable any ad blocker)
с помощью WinInet, IE и браузера страница загружается. Но через некоторое время блокирует работу парсера. Подскажите это можно как то обойти?
После применения Пройти проверку на браузер (IE) и загрузки winHTTP Страница загружается { H ( ͉ m"}.
Также и при добавлении запросов. Можно как то это вылечить?
Сейчас парсер поддерживает работу с браузером Chrome, там эта защита обходится.
Уже не работает....