September 26th, 2016

Парсер третий, часть одиннадцатая

Так получилось, что я сдался. Антибот победил. Целевой ресурс ушёл в глухую оборону. Результат оказался плачевным.

  • Запиливание самопального кукистора не помогло, целевой ресурс всё равно меня банит.
  • Целевой ресурс запоминает всё, даже таймстемпы и сверяет их из кук с четырьмя хостами. Уровень паранойи зашкаливает.
  • Перелез на фантомжс. Думал, что буду постранично обходить, а всю логику обсчёта страниц наследую из парсера, в котором всё по уму. Ага, разбежался.
  • Целевой ресурс по параметрам GET запроса научился определять, когда началась сессия скроллинга, каждый следующий запрос должен содержать значение текущего таймпстемпа, иначе вернётся первая страница. Так и этого ещё мало.
  • Целевой ресурс каждый раз отдаёт разное число объектов. Опереться на статические оффсеты нельзя.
  • Отказался от самописного парсера. Запилил JS-скрипт для фантома, который бесконечно скроллит страницу до тех пор, пока не удовлетворяется условие выхода из него. Тогда формируется JSON, который подхватывает Aeson на ура.
  • Все работы по миграционной туле для админки завершены.
  • Осталось воткнуть логику для конверсии (N бесплатных просмотров, потом e-mail гони). И можно релизиться.

Неожиданное добавление в архитектуру фантома стало неприятной неожиданностью. Но тут уже решает скорость. Непозволительно долго всё это пилится.