[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Парсинг сайта с умом
OLDJman
Добрый день уважаемое сообщество.

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

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

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

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

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

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

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

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

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


function auth( $url ) //функция авторизации на сайте
{
$uagent = "..."; // данные браузера, тут вставляю свою версию
$ch = curl_init( $url );
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_COOKIEJAR,$_SERVER['DOCUMENT_ROOT'].'/cookieVezetVsem.txt'); // куда сохранять куки
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "username=login&password=pass");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // возвращает веб-страницу
curl_setopt($ch, CURLOPT_USERAGENT, $uagent); // useragent
curl_exec ($ch);
curl_close( $ch );
}


Сам Парсер


function get_web_page( $url ) // функция парсера
{
$uagent = "...";

$ch = curl_init( $url );

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // возвращает веб-страницу
curl_setopt($ch, CURLOPT_HEADER, 0); // не возвращает заголовки
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); // Установил значение 0 (строка отвечает за переход по редиректам)
curl_setopt($ch, CURLOPT_ENCODING, ""); // обрабатывает все кодировки
curl_setopt($ch, CURLOPT_USERAGENT, $uagent); // useragent
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); // таймаут соединения
curl_setopt($ch, CURLOPT_TIMEOUT, 120); // таймаут ответа
curl_setopt($ch, CURLOPT_MAXREDIRS, 0); // установил значение 0(останавливаться после 10-ого редиректа)
curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'/cookieVezetVsem.txt'); // берем куки из файла

$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );

$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
return $header;
}



Как я понимаю, мне нужно сказать их серверу, чтобы он держал сессию, пока я хожу по страницам заказов, и собираю данные.
Через firebug видно, что они выдают куки подлиннее тех, что мне создает сам парсер, и я так думаю, помимо самой авторизации, выставляются куки "нахождения на сайте". Интернет активность показывает, что через определенные промежутки, он обновляет key через POST запрос на адрес http://www.vezetvsem.ru/hori/keys, который выставляет какую-то куку.
У меня пока мало опыта, поэтому я не могу быть уверен, что делаю все правильно, а сам самоучка, данные ищу в интернете.
Просто не хочется, как варвар все делать. Охото аккуратно, хотя бы постараться аккуратно.

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.