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