Обход блокировки при парсинге

Статус
В этой теме нельзя размещать новые ответы.

Nei

Nosce te ipsum
Команда форума
Модератор
Регистрация
5 Сен 2009
Сообщения
699
Реакции
611
  • Автор темы
  • Модер.
  • #1
Стоит задача создания парсера для similarweb.com (популярный сайт, выдающий кучу довольно полезной информации о домене...к примеру Для просмотра ссылки Войди или Зарегистрируйся )

Итого имеется следующий код:
PHP:
     $cookie_filename = dirname(__FILE__).'\cookie.txt';
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_HEADER, FALSE);
     curl_setopt($ch, CURLOPT_URL, 'https://www.similarweb.com/website/nulled.cc');
     curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0');
     curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
     curl_setopt($ch, CURLOPT_VERBOSE, true);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
     curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_filename);
     curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_filename);
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
     $out = curl_exec($ch);
     curl_close($ch);
Он работает но всего раз 5 для одного IP :/ Пробовал несколько десятков разных бесплатных прокси - ни один не заработал ни разу, с ходу же выдаётся сообщение о блокировке Для просмотра ссылки Войди или Зарегистрируйся
Также ставил разные юзерагенты - тоже толку ноль.

Собственно, может есть у кого идеи хотя бы в какую стороны копать :rules:

Нагуглил вот такое видео
т.е. похоже, что в принципе возможен обход блокировки.
 
Ну дак так сколько запросов:
f6881499cb97456391d11bd6bf47b9c5.png

Это чтобы 1 раз получить страницу. Обязательны все, скорее всего (кроме, data:image)

Куки тоже:
f6771859b96d4e81b55ff0dd7dd6414b.png


Начинающиеся с _ga - это гугл аналитика, а остальные тоже нужны

Запросы надо самому отправлять, так как там много javascript'ом отправляется.

С отключенным js открывается страница о том, что у Вас отключен js и всё, никакого контента
 
  • Автор темы
  • Модер.
  • #3
Куки вроде ставятся. А вот эмуляция скриптом js-запросов - это мысль. Спасибо, буду пробовать. Странно, что до блокировки несколько страниц успешно обрабатываются даже без такой эмуляции.
 
Скорее всего по ip блокирует. попробуй прокси взять на fineproxy. там в течении 24 часов можно манибэк сделать. так что для теста подойдет.
 
  • Автор темы
  • Модер.
  • #5
Прокси само-собой пробовал (как бесплатные, так и платные). Вопрос скорее всего в защите посредством js-запросов со страницы на similarweb. К сожалению из-за возникших сложностей заказ был отменён - не захотел заказчик нести дополнительные расходы на эмуляцию этих запросов (тем более, что неизвестно что там у них еще припасено в защите от парсинга...всё-таки для них это наивысший приоритет, специфика бизнеса така).
 
в свое время сталкивался с подобной задачей. только ручками отслеживать все js запросы и ломиться туда за инфой, а потом составлять из кусочков целое. долго, муторно и совсем без гарантий. если делать подобным способом то сразу предупреждать клиента, что может отвалиться в любой момент.
 
Парсил яндекс водрстат. тоже куча защит. отследил что и куда js шлет. воспроизвел и ура! за 1 день думаю можно и с этим сайтом разобраться. если сильно захотеть :)
 
Парсил яндекс водрстат. тоже куча защит. отследил что и куда js шлет. воспроизвел и ура! за 1 день думаю можно и с этим сайтом разобраться. если сильно захотеть :)
способ хороший, но, как я уже уже говорил, не надежный. любое изменение запросов на стороне сервера все крашит. в итоге имеем недовольного клиента.
 
CURLOPT_PROXY?

Код:
$txt = file('freeproxy.txt');
$str = $txt[ array_rand($txt) ];
unset($txt);
$proxy_list = explode(":", $str);
$proxy_ip = $proxy_list[0];
$proxy_port = $proxy_list[1];

curl_setopt($ch, CURLOPT_PROXY, $proxy);
 
способ хороший, но, как я уже уже говорил, не надежный. любое изменение запросов на стороне сервера все крашит. в итоге имеем недовольного клиента.
Даже использование полноценного браузера не дает гарантии, например при изменении верстки. Поэтому подходит любой способ который работает, в стоимость включается поддержка в течении времени.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху