Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting

Парсинг с имитацией действия пользователя?

Всем привет!
Написал свой первый парсер на php с curl, который относительно успешно парсит Авито.
Если парсер выполняет задачи с моего локального компа, то спустя 10-20 посещений (посещение раз в 5 минут) парсер перестает 'доставать' нужную инфу с Авито, ему просто выдает пустую страницу, но в этот-же момент зайдя руками через браузер (с того-же компа и ip) - все нормально отображается.
Я так понимаю, парсер блочат потому-что он отправляет напрямую get запросы?

Знакомый натолкнул на мыль посмотреть в сторону консольных браузеров и выполнение парсинга через них, например PhantomJS. Я перекопал кучу инфы и здесь встало несколько вопросов:
1. Через PhantomJS я могу спарсить нужную страницу (js кодом) и далее уже с ней взаимодействовать php кодом?
2. PhantomJS хороший вариант для такой задачи? Есть-ли более удобные варианты?
3. Какие есть более интересные способы парсинга сайтов, что-бы имитировать действия пользователя в браузере (название инструментов)?

Заранее спасибо!
  • Вопрос задан
  • 3446 просмотров
Решения вопроса 2
@vshvydky
Фантом нормальный вариант, если хочется работать напрямую через пхп капайте в сторону селентиум драйверов к браузерам . А так на js есть phantom nightmare, изучите, что вам подходит больше.
Ответ написан
Комментировать
@rPman
Когда то достаточно давно мне надоело бодаться с разработчиками сайтов, которые борятся с теми кто пытается получить к их данным автоматически (парсеры, сканеры, эмуляторы кликов), я просто перешел на полноценные браузеры внутри моего же приложения (c# или mono компонент WebBrowser использует firefox или ie в зависимости от платформы, на java это javafx WebEngine, я работал с обоими), к загруженной странице в котором я имею абсолютный доступ.

Можно делать скрины страницы сайта с размерами на порядок больше чем это вообще возможно в классическом браузере (помню скринил гуглмапс картинкой в 30к х 30к пикселов), доступ к элементам страницы удобными getElementById или getElementsByTagName, или по желанию запустить свой javascript на странице, который будет уже работать на странице как ее собственный скрипт,.. итоговое приложение никто не помешает делать например консольным, я запускал mono приложение на полбаксовой VPS-ке, там используется основанный на firefox компонент, очень экономный по ресурсам.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы