В текущей версии - если сделать нескоько запросов в минуту - поймаем каптчу. Распознавание каптчи здесь не реализовано. Просто подождать и повторить запрос через пару минут. Но зато удалось добиться чтобы сервер не блокировал наш парсер по IP.

Возможно добавление нескольких прокси Но задача сложная т.к. необходимо под каждый IP запоминать свои cookies И парсер иногда делает несколько подряд успешных запросов с одного IP

ПОСТАНОВКА ЗАДАЧИ

Защита сервера COPART

  1. раз в 5 минут проверка поддерживет ли клиент JS - подсовывается обфусцирофванный JS код, который вычисляет ключ сессии и закидывает в кукиесы
  2. ключ сессии привязывается к IP
  3. после успешной генерации ключа сессии несколько минут клиент с этого IP может делать запросы вообще без cookies
  4. если серверу что то не понравится - блокирует по IP на пару часов
  5. сайт на Ангуляре, есть JSON API - от куда и берем данные о лотах

Защита сервера iaai

  1. подсовывается обфусцирофванный JS код, который вычисляет ключ сессии и закидывает в кукиесы
  2. запрещены запросы без ключа сессии
  3. сайт без JSON API (данные парсим из HTML) данные лота

Варианты решения Обоснование выбора решения

  1. Подключить зомби браузер на сервере через Slenium (достоинства - полноценный браузер обойдет все защиты, недостатки - каждый запрос неколько секунд, пока подымется браузер)
  2. На чистом NodeJs с pappytear (Хромиум) - недостаток, надо прокидывать порт и подымать сервер на NodeJS для обработки запросов
  3. PHP + NodeJs (php делает основные запросы, и если срабатывает защита раз в пять минут вызываем nodejs)

Алгоритм обхода защиты сервера COPART

  1. Делаем запрос PHP (с ИСХОДЯЩИМИ кукиесами которые получили в пп 4. или без них если нулевой шаг) ловим ВХОДЯЩИЕ кукесы в file ля будущих PHP запросов
  2. Если данне получены - выводим РЕЗУЛЬТАТ
  3. Если данные не получены - вызываем Nodejs - с высокой долей вероятности получаем нужный JSON - выводим РЕЗУЛЬТАТ Комментарий - почему куки из пп 3 не передаем в пп 1 - это магия. Сервер фиксирует в пп 3 успешный JS клиент и далее доверяет PHP в пп 1 который работает со своими куками в file

возможно также стоит переписать iaai для ускорения (он работает только на NodeJs)