Для крупного зарубежного сайта с обширной информационной базой, разбитой по маркам, моделям и годам выпуска, была поставлена задача собрать базу данных шин и дисков в формате CSV для импорта на сайт. Однако парсинг оказался невозможным из-за множества защит, так как это был коммерческий проект с платным API.
Сложность заключалась в том, что контент загружался динамически через Ajax с использованием одноразового токена. Это потребовало глубокого анализа JS-кода и алгоритма защиты, что сделало использование NodeJS нецелесообразным. В итоге было решено подключить PhantomJS для эмуляции браузера и получения динамического контента.
Следующей проблемой стала защита от частых запросов: после определенного количества запросов IP блокировался. Для решения этой проблемы были использованы платные прокси-сервисы. Затем были собраны ссылки на марки и модели в CSV-таблицы, которые стали стартовыми для парсинга.
Парсинг страниц шин и дисков проводился с помощью PhantomJS в шести потоках, используя разные прокси. Создавались логи ошибок, базы неудачных URL и списки успешных/неуспешных прокси для дальнейшего использования. В результате была собрана полная база данных сайта, содержащая около 2-3 миллионов позиций с разбивкой по маркам, моделям, годам и характеристикам.