За последние 24 часа нас посетили 25745 программистов и 1726 роботов. Сейчас ищут 867 программистов ...

Сайт блокирует парсер

Тема в разделе "Прочие вопросы по PHP", создана пользователем fofan1985, 26 ноя 2013.

  1. fofan1985

    fofan1985 Новичок

    С нами с:
    26 ноя 2013
    Сообщения:
    2
    Симпатии:
    0
    Пытаюсь спарсить с сайта все информацию о товарах. Парсить пытался без CURLа, просто через file_get_content, использовал ajax, ставил рандомное время таймаута между открытием страниц, в результате - на n-ной странице (10 - 15) получал бан по IP на сутки. Сайт несколько раз лежал от DDOSа. Возможно это как то связано с анти-DDOS системой.

    Слышал, что такие вещи лучше делать через CURL, только вот изменит ситуацию его использование - не знаю.
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Не вопросов, не примеров, вообще ниче. Думаю, правильно сделали, что заблокировали.
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Парсерщики должны страдать.
     
  4. fofan1985

    fofan1985 Новичок

    С нами с:
    26 ноя 2013
    Сообщения:
    2
    Симпатии:
    0
    Код CURL

    Код (Text):
    1.  
    2.     $curl = curl_init(); //инициализация сеанса
    3.     curl_setopt($curl, CURLOPT_URL, 'http://www.сайт.ru/projects.php'); //урл сайта к которому обращаемся
    4.        
    5.     curl_setopt($curl, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'/cook.txt');//сохранить куки в файл
    6.     curl_setopt($curl, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'/cook.txt');//считать куки из файла
    7.    
    8.     curl_setopt($curl, CURLOPT_HEADER, 1); //выводим заголовки
    9.     curl_setopt($curl, CURLOPT_POST, 1); //передача данных методом POST
    10.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //теперь curl вернет нам ответ, а не выведет
    11.    
    12.     curl_setopt($curl, CURLOPT_FAILONERROR, 1);
    13.    
    14.     //curl_setopt($curl, CURLOPT_PROXY, "218.246.22.98:3128");
    15.  
    16.     /*
    17.     curl_setopt($curl, CURLOPT_POSTFIELDS, //тут переменные которые будут переданы методом POST
    18.     array (
    19.         'name'=>'',
    20.         'searchButton'=>'get' //это на случай если на сайте, к которому обращаемся проверяется была ли нажата кнопка submit, а не была ли оправлена форма
    21.     ));
    22.     */
    23.    
    24.     curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0'); //эта строчка как-бы говорит: "я не скрипт, я IE5" :)
    25.    
    26.    
    27.    
    28.     curl_setopt ($curl, CURLOPT_REFERER, "http://сайт.ru"); //а вдруг там проверяют наличие рефера
    29.     $res = curl_exec($curl);