Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Как обойти при парсинге с помощью cURL
цитата
02/12/14 в 16:41
 Lexikon
Выдает вот такое:
Цитата:
Вы используете устаревший браузер Opera. Вы не сможете в полной мере воспользоваться всеми функциями ****.com и некоторые элементы дизайна могут отображаться некорректно.
Мы рекомендуем вам обновить Opera, либо установить один из этих браузеров:
Internet Explorer 9
Opera
Mozilla Firefox
Google Chrome
Safari


вот функция которая отвечает за парсинг
Код:

function parser($url, $ip){

      $ch = curl_init();

      curl_setopt($ch, CURLOPT_URL, $url); // Url for Pars
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // TRUE
      curl_setopt($ch, CURLOPT_HEADER, 0); // FALSE
      curl_setopt($ch, CURLOPT_INTERFACE, $ip); // IP Server

      $output = curl_exec($ch);

      curl_close($ch);

   return $output;

}


посмотрел, должно быть еще
curl_setopt($ch, CURLOPT_USERAGENT, '******');
но пох, я писал туда разное, результат один
цитата
02/12/14 в 16:48
 frec
сформируйте корректно хидер и кукисы и будет вам радость
цитата
02/12/14 в 16:56
 frec
ВОТ НАКИДАЛ ПРИМЕРНО КОД
function parser($url, $ip){
$header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,";
$header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[] = "Cache-Control: max-age=0";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$header[] = "Accept-Language: en-us,en;q=0.5";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url); // Url for Pars
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // TRUE
curl_setopt($ch, CURLOPT_HEADER, $header); // FALSE
curl_setopt($ch, CURLOPT_INTERFACE, $ip); // IP Server
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookiefile");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookiefile"); # SAME cookiefile
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // don't check certificate
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // don't check certificate
curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_REFERER, 'http://www.google.com');
$output = curl_exec($ch);

curl_close($ch);

return $output;

}

Последний раз редактировалось: frec (02/12/14 в 16:58), всего редактировалось 1 раз
цитата
02/12/14 в 16:57
 frec
"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"

лучше это использовать - это последняя версия хрома
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
цитата
02/12/14 в 18:05
 Lexikon
толку 0 icon_sad.gif
цитата
02/12/14 в 18:34
 Stek
Лучше использовать уже готовые надстройки на курлом.
https://github.com/php-curl-class/php-curl-class как вариант.
цитата
02/12/14 в 18:49
 ravlio
Lexikon писал:
толку 0 icon_sad.gif

В чём проблема то? Я не экстрасенс, но догадался, что ты грабишь runetki.com. А он грабится даже без юзер-агента, тупо через curl http://runetki.com. Сообщение об устаревшем браузере — оно выводится через условные комментарии при выводе HTML в браузер. Ты для начала определись, что будешь делать с их HTML. Если хочешь парсить — не вижу проблем. Если хочешь выводить юзерам — тебе надо инжектить base href в HTML документа, чтобы подгрузились все их стили и скрипты.
цитата
02/12/14 в 19:16
 Lexikon
ravlio писал:
В чём проблема то? Я не экстрасенс, но догадался, что ты грабишь runetki.com. А он грабится даже без юзер-агента, тупо через curl http://runetki.com. Сообщение об устаревшем браузере — оно выводится через условные комментарии при выводе HTML в браузер. Ты для начала определись, что будешь делать с их HTML. Если хочешь парсить — не вижу проблем. Если хочешь выводить юзерам — тебе надо инжектить base href в HTML документа, чтобы подгрузились все их стили и скрипты.

Недавно они что-то поменяли, возникли некоторые проблемы с парсингом.
У меня скрипты без проблем работали, а сегодня запустил, а оно не работает. Парсер локальный был написан не на curl, но до этого он нормально работал.
А то что работало на curl , не получает данных со страницы http://runetki.com/allchats/
Даже если я в браузере ввожу напрямую (http://runetki.com/allchats/) выходится хедер и футер, самого контента нет (в категории нет моделей)

Последний раз редактировалось: Lexikon (02/12/14 в 19:22), всего редактировалось 1 раз
цитата
02/12/14 в 19:22
 ravlio
frec писал:
ВОТ НАКИДАЛ ПРИМЕРНО КОД
function parser($url, $ip){
$header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,";
$header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[] = "Cache-Control: max-age=0";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$header[] = "Accept-Language: en-us,en;q=0.5";

А зачем это всё нужно? У курла итак идёт Accept: */* то есть сервер отдаст ему любой формат. Для достоверности? Могу сказать, что ни один веб-сервер и даже антиддос-фильтры не проверяют хедеры на подобное.

И зачем заподноевропейская кодировка? А если он будет парсить windows-1251? HTTP заголовки это такая тема — разрешено всё что не запрещено.
цитата
02/12/14 в 19:37
 ravlio
Lexikon писал:
Даже если я в браузере ввожу напрямую (http://runetki.com/allchats/) выходится хедер и футер, самого контента нет (в категории нет моделей)

Рунеток сейчас ддосят по всей видимости, у меня тоже нет моделей, а сейчас и сайт не грузится. Курл ни при чём.
цитата
02/12/14 в 19:45
 Lexikon
вон оно что, это можно предположить, сегодня профит просто мизерный icon_confused.gif
цитата
03/12/14 в 01:06
 frec

Ну если будут проблемы, пишите тогда подробнее посмотрим/рю.


Эта страница в полной версии