Обход защиты Qrator, Incapsula и CloudFare

На некоторых популярных сайтах устанавливается защита от DDoS, когда при запросе страницы сайта сначала выдаётся промежуточная страница с javascript, которая выполняет проверку на браузер (роботы / парсеры обычно не используют браузер, потому не проходят эту проверку), и, только если проверка пройдена, этот скрипт перенаправляет вас на ту же страницу, только уже с реальным её содержимым.
Скрипт этот выполняет некоторые вычисления, потом устанавливает Cookies, и при следующем запросе этой же страницы передаются эти Cookies, — так сайт определяет, что проверка на браузер успешно выполнена.

Как проверить, проблема в защите сайта от DDoS, или в чём-то другом?

В случае использования подобной защиты (Qrator, Incapsula, CloudFare и т.п.), в коде страницы вместо данных будет одна или несколько ссылок на файлы со скриптами js
 

Как обойти эту защиту при использовании парсера?

Вариант 1

  1. загружаем любую страницу сайта (например, главную) в браузере Internet Explorer
  2. ждём несколько секунд пока отработает скрипт
  3. убеждаемся что на странице прогрузились данные (что произошел редирект после выполнения скрипта)
  4. считываем Cookies из Internet Explorer
  5. выполняем запросы к сайту с использованием этих Cookies (действие Загрузить страницу по ссылке, режим загрузки — WinHTTP)

Вариант 2

Рассмотрим этот вариант на примере сайта leroymerlin.ru с защитой Qrator.
Там страницы разделов грузятся без проблем, а вот для страниц товаров срабатывает защита.

При загрузке страницы товара парсером, мы получаем очень короткий ответ:

В ответе мы видим запуск скрипта: <script src="/__qrator/qauth_utm_v2.js"></script>
Значит, это как раз тот случай, когда надо обходить такую защиту.

  1. читаем иструкцию по обходу подобных защит
  2. ищем список IP этого сайта:
    https://viewdns.info/iphistory/?domain=leroymerlin.ru
  3. берем второй IP адрес из списка (прямой адрес сайта), подставляем его в ссылку на товар вместо адреса сайта, и проверяем ссылку в браузере:
    http://178.248.234.184/product/hozblok-metallicheskiy-2-05x2-57x2-02-sm-84759919/
    ура, страницы отображаются в браузере, — значит, с большой вероятностью мы справимся с обходом блокировки
  4. проверяем загрузку парсером — уже лучше, но получаем ошибку 403:

  5. добавляем заголовки запроса из браузера, проверяем, — всё заработало:
     

    Действие Параметр Значение
    Создать новый экземпляр 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, там эта защита обходится.

Уже не работает....