Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Парсинг сайта с умом

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
OLDJman
Отправлено: 01 Февраля, 2015 - 22:19:42
Post Id



Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2015  
Откуда: Челябинск, Россия


Помог: 0 раз(а)




Добрый день уважаемое сообщество.

Задался целью парсить данные с сайта Vezetvsem.ru.

Соль вопроса, как сделать так, чтобы их сервер, считал меня настоящим браузером, и не мог "легко" вычислить, что я бот, и как следствие заблокировать меня?
Какие еще настройки желательно добавить, чтобы быть "настоящим" пользователем?

Предполагается обращение к этому сайту несколько раз в день, несколько месяцев подряд.

Сам парсер работает. Сначала функция авторизации получает куки, сохраняет их на жесткий диск, вторая функция используя куки, ходит по страницам.

К сожалению, через полчаса-час, куки, видимо, устаревают, и приходится заново проходить авторизацию. Вот в этом месте у меня по неопытности, ощущение, что администратору видно, что я парсер и часто хожу авторизовываться, ведь когда ходишь по страницам через браузер, авторизацию никогда не просит пройти.

Достаточно ли настроек, чтобы сервер не считал меня ботом?

Пожалуйста, подскажите, в какую степь копать, по сути это мой первый серьезный опыт, и от любой критики не откажусь.

P>S> если кому интересно, после, полученные данные будут с помощью регулярных выражений извлекаться и помещаться в базу, с которой уже будет идти основная работа.

Функция авторизации

PHP:
скопировать код в буфер обмена
  1.  
  2. function auth( $url ) //функция авторизации на сайте
  3. {
  4.   $uagent = "..."; // данные браузера, тут вставляю свою версию
  5.   $ch = curl_init( $url );
  6.   curl_setopt($ch, CURLOPT_URL,$url);
  7.   curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'/cookieVezetVsem.txt'); // куда сохранять куки
  8.   curl_setopt($ch, CURLOPT_POST,1);
  9.   curl_setopt($ch, CURLOPT_POSTFIELDS, "username=login&password=pass");
  10.   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   // возвращает веб-страницу  
  11.   curl_setopt($ch, CURLOPT_USERAGENT, $uagent);  // useragent
  12.   curl_exec ($ch);
  13.   curl_close( $ch );
  14. }


Сам парсер

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. function get_web_page( $url ) // функция парсера
  4. {
  5.   $uagent = "...";
  6.  
  7.   $ch = curl_init( $url );
  8.  
  9.   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   // возвращает веб-страницу
  10.   curl_setopt($ch, CURLOPT_HEADER, 0);           // не возвращает заголовки
  11.   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);   // Установил значение 0 (строка отвечает за переход по редиректам)
  12.   curl_setopt($ch, CURLOPT_ENCODING, "");        // обрабатывает все кодировки
  13.   curl_setopt($ch, CURLOPT_USERAGENT, $uagent);  // useragent
  14.   curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); // таймаут соединения
  15.   curl_setopt($ch, CURLOPT_TIMEOUT, 120);        // таймаут ответа
  16.   curl_setopt($ch, CURLOPT_MAXREDIRS, 0);       // установил значение 0(останавливаться после 10-ого редиректа)
  17.   curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'/cookieVezetVsem.txt'); // берем куки из файла
  18.  
  19.  $content = curl_exec( $ch );
  20.   $err     = curl_errno( $ch );
  21.   $errmsg  = curl_error( $ch );
  22.   $header  = curl_getinfo( $ch );
  23.   curl_close( $ch );
  24.  
  25.   $header['errno']   = $err;
  26.   $header['errmsg']  = $errmsg;
  27.   $header['content'] = $content;
  28.   return $header;
  29. }

(Добавление)
Как я понимаю, мне нужно сказать их серверу, чтобы он держал сессию, пока я хожу по страницам заказов, и собираю данные.
Через firebug видно, что они выдают куки подлиннее тех, что мне создает сам парсер, и я так думаю, помимо самой авторизации, выставляются куки "нахождения на сайте". Интернет активность показывает, что через определенные промежутки, он обновляет key через POST запрос на адрес http://www.vezetvsem.ru/hori/keys, который выставляет какую-то куку.
У меня пока мало опыта, поэтому я не могу быть уверен, что делаю все правильно, а сам самоучка, данные ищу в интернете.
Просто не хочется, как варвар все делать. Охото аккуратно, хотя бы постараться аккуратно.
 
 Top
OrmaJever Модератор
Отправлено: 01 Февраля, 2015 - 22:29:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




поставьте нормальный юзер агент и за несколько раз в день сайт вам точно ничего не сделает


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
OLDJman
Отправлено: 01 Февраля, 2015 - 22:56:39
Post Id



Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2015  
Откуда: Челябинск, Россия


Помог: 0 раз(а)




OrmaJever пишет:
поставьте нормальный юзер агент и за несколько раз в день сайт вам точно ничего не сделает


UserAgent я устанавливаю браузера, через который запускаю (пока использую Denwer), в коде выше просто удалил, так как посчитал, что это персональный данные, никому не нужны.

Вопрос в настройках опций setopt, нужно ли что-нибудь указывать, чтобы админам было видно, что я поддерживаю сессию, и не будет ли подозрительным, что каждый раз заходя на сайт, я предварительно авторизуюсь, когда сайт поддерживает автовход?
(Добавление)
На всякий случай, проясню момент, это не воровство контента, это желание сделать своими руками некую замену их API, который у них видите ли криво работает, а нормальных фильтров для работы с сайтом сделано не было. Администрация не желает идти на сотрудничество, вот я и ищу обходной путь.

Да и воровать там не чего.
 
 Top
OrmaJever Модератор
Отправлено: 02 Февраля, 2015 - 00:35:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




OLDJman пишет:
и не будет ли подозрительным, что каждый раз заходя на сайт, я предварительно авторизуюсь, когда сайт поддерживает автовход?

даю 95% что нет, кто на это смотрит?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
OLDJman
Отправлено: 02 Февраля, 2015 - 11:29:38
Post Id



Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2015  
Откуда: Челябинск, Россия


Помог: 0 раз(а)




OrmaJever пишет:
OLDJman пишет:
и не будет ли подозрительным, что каждый раз заходя на сайт, я предварительно авторизуюсь, когда сайт поддерживает автовход?

даю 95% что нет, кто на это смотрит?


Я просто никогда не был админом. Мне всегда казалось, что этим только и занимаются администраторы ^_^.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с сетью »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB