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
цитата
02/12/14 в 18:34
Stek
Лучше использовать уже готовые надстройки на курлом.
https://github.com/php-curl-class/php-curl-class
как вариант.
цитата
02/12/14 в 18:49
ravlio
Lexikon писал:
толку 0
В чём проблема то? Я не экстрасенс, но догадался, что ты грабишь 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
вон оно что, это можно предположить, сегодня профит просто мизерный
цитата
03/12/14 в 01:06
frec
Ну если будут проблемы, пишите тогда подробнее посмотрим/рю.
Новая тема
Ответить
Эта страница в полной версии