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

Тема в разделе "PHP", создана пользователем Nei, 14 июн 2016.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    670
    Симпатии:
    521
    Стоит задача создания парсера для similarweb.com (популярный сайт, выдающий кучу довольно полезной информации о домене...к примеру https://www.similarweb.com/website/nulled.cc )

    Итого имеется следующий код:
    PHP:
         $cookie_filename dirname(__FILE__).'\cookie.txt';
         
    $ch curl_init();
         
    curl_setopt($chCURLOPT_HEADERFALSE);
         
    curl_setopt($chCURLOPT_URL'https://www.similarweb.com/website/nulled.cc');
         
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0');
         
    curl_setopt($chCURLOPT_COOKIESESSIONTRUE);
         
    curl_setopt($chCURLOPT_FOLLOWLOCATIONTRUE);
         
    curl_setopt($chCURLOPT_VERBOSEtrue);
         
    curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
         
    curl_setopt($chCURLOPT_COOKIEJAR$cookie_filename);
         
    curl_setopt($chCURLOPT_COOKIEFILE$cookie_filename);
         
    curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
         
    $out curl_exec($ch);
         
    curl_close($ch);
    Он работает но всего раз 5 для одного IP :/ Пробовал несколько десятков разных бесплатных прокси - ни один не заработал ни разу, с ходу же выдаётся сообщение о блокировке http://clip2net.com/s/3zbn0RX
    Также ставил разные юзерагенты - тоже толку ноль.

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

    Нагуглил вот такое видео т.е. похоже, что в принципе возможен обход блокировки.
     
  2. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    477
    Симпатии:
    1.183
    Ну дак так сколько запросов:
    [​IMG]
    Это чтобы 1 раз получить страницу. Обязательны все, скорее всего (кроме, data:image)

    Куки тоже:
    [​IMG]

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

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

    С отключенным js открывается страница о том, что у Вас отключен js и всё, никакого контента
     
    dana77 и Nei нравится это.
  3. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    670
    Симпатии:
    521
    Куки вроде ставятся. А вот эмуляция скриптом js-запросов - это мысль. Спасибо, буду пробовать. Странно, что до блокировки несколько страниц успешно обрабатываются даже без такой эмуляции.
     
  4. VituSkz

    VituSkz Создатель

    Регистр.:
    11 июл 2012
    Сообщения:
    7
    Симпатии:
    1
    Скорее всего по ip блокирует. попробуй прокси взять на fineproxy. там в течении 24 часов можно манибэк сделать. так что для теста подойдет.
     
  5. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    670
    Симпатии:
    521
    Прокси само-собой пробовал (как бесплатные, так и платные). Вопрос скорее всего в защите посредством js-запросов со страницы на similarweb. К сожалению из-за возникших сложностей заказ был отменён - не захотел заказчик нести дополнительные расходы на эмуляцию этих запросов (тем более, что неизвестно что там у них еще припасено в защите от парсинга...всё-таки для них это наивысший приоритет, специфика бизнеса така).
     
  6. Soru

    Soru Создатель

    Регистр.:
    28 окт 2014
    Сообщения:
    42
    Симпатии:
    18
    в свое время сталкивался с подобной задачей. только ручками отслеживать все js запросы и ломиться туда за инфой, а потом составлять из кусочков целое. долго, муторно и совсем без гарантий. если делать подобным способом то сразу предупреждать клиента, что может отвалиться в любой момент.
     
  7. VituSkz

    VituSkz Создатель

    Регистр.:
    11 июл 2012
    Сообщения:
    7
    Симпатии:
    1
    Парсил яндекс водрстат. тоже куча защит. отследил что и куда js шлет. воспроизвел и ура! за 1 день думаю можно и с этим сайтом разобраться. если сильно захотеть :)
     
  8. Soru

    Soru Создатель

    Регистр.:
    28 окт 2014
    Сообщения:
    42
    Симпатии:
    18
    способ хороший, но, как я уже уже говорил, не надежный. любое изменение запросов на стороне сервера все крашит. в итоге имеем недовольного клиента.
     
  9. insk

    insk Создатель

    Регистр.:
    5 сен 2013
    Сообщения:
    6
    Симпатии:
    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);
     
  10. RORC

    RORC

    Регистр.:
    14 июн 2013
    Сообщения:
    327
    Симпатии:
    110
    Даже использование полноценного браузера не дает гарантии, например при изменении верстки. Поэтому подходит любой способ который работает, в стоимость включается поддержка в течении времени.
     
Статус темы:
Закрыта.