Просмотр полной версии : Проблема с сUrl
Legion342
17.08.2009, 17:32
была задача парсить скрытый контент с одного сайта для этого использовался cUrl некоторое времяпарсен работал нормально через прокси обращалсяк нужной страницы передавал куки и забирал нужный контент, через некоторое время перестал работать с нужными куками хотя если просто открываешь страницу с теми куками то все нормально
вот часть кода которая отвечает за загрузку страницы
$url="тут адрес страницы";
$ua = 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 WebMoney Advisor';
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_COOKIE, "тут куки");
$ret = curl_setopt($ch, CURLOPT_PROXY, 'прокси');
//$ret = curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'login:password');
//$ret = curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$string1=curl_exec($ch);
может кто подскажет в чем может быть причина
Pashkela
17.08.2009, 17:42
попробуй добавить
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
Legion342
17.08.2009, 17:52
нет не помогло(
еще добавил строчку
curl_setopt($ch, CURLOPT_REFERER, "http://www.google.com");
Pashkela
17.08.2009, 17:54
tamper data и смотри, что шлет, какой рефер и т.д.
Legion342
17.08.2009, 18:29
шлет все тоже самое что и я добавил только заголвки еще в код
$this1->headers[] = 'Host: http://www.адрес того сайта';
$this1->headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
$this1->headers[] = 'Accept-Language: en-us,en;q=0.7,ru;q=0.3';
$this1->headers[] = 'Accept-Encoding: gzip,deflate';
$this1->headers[] = 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7';
$this1->headers[] = 'Connection: keep-alive';
$this1->headers[] = 'Keep-alive: 300';
$this1->headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8';
и изменил на такую строчку заголвок
curl_setopt($ch, CURLOPT_HEADER, $this1->headers);
как куки выглядят? может с ними чтото...
попробуй сначала послать запрос на страницу логина а потом
preg_match_all('#Set-Cookie:\s([^;]*);#is', $string1, $gets);
$coc = join(';', $gets[1]);
юзай этьи куки.....
FireFenix
17.08.2009, 18:42
если куки берутся и передаются, самое тру использовать
curl_setopt($curl, CURLOPT_COOKIEFILE, "cookiefile.txt");
curl_setopt($curl, CURLOPT_COOKIEJAR, "cookiefile.txt");
Нахера выдирать куки регуляркой и уж тем более хранить их в файле, если можно просто поставить опцию curl_setopt($curl, CURLOPT_COOKIELIST, "") и войти на сайт.
И в дальнейшем использовать этот один курл хэндл на все запросы (не ебя себе мозг), только меняя url.
Переключение между post и get запросами осуществляется curl_setopt($curl, CURLOPT_POST, 1) и curl_setopt($curl, CURLOPT_HTTPGET, 1) соответственно.
FireFenix
17.08.2009, 19:23
Нахера выдирать куки регуляркой и уж тем более хранить их в файле, если можно просто поставить опцию curl_setopt($curl, CURLOPT_COOKIELIST, "") и войти на сайт.
И в дальнейшем использовать этот один курл хэндл на все запросы (не ебя себе мозг), только меняя url.
Переключение между post и get запросами осуществляется curl_setopt($curl, CURLOPT_POST, 1) и curl_setopt($curl, CURLOPT_HTTPGET, 1) соответственно.
Что бы ты спросил неудачнег!!!
пхп-шный курл не держит CURLOPT_COOKIELIST
Да выложил бы "тут адрес страницы" давно бы уже сказали что не так...
если куки берутся и передаются, самое тру использовать
curl_setopt($curl, CURLOPT_COOKIEFILE, "cookiefile.txt");
curl_setopt($curl, CURLOPT_COOKIEJAR, "cookiefile.txt");
а я это использую )
curl_setopt($ch, CURLOPT_COOKIEJAR, "./cook");
curl_setopt($ch, CURLOPT_COOKIEFILE, "./cook");
А то придет хакир и сделает запрос сайт.ru/cookiefile.txt (конечно это из раздела фантастики, но надо же было мне как-то аргументировать))
ТС давай урл, посмотрим
Legion342
18.08.2009, 02:55
qiq.ru вот адрес сайта с него надо забрать некоторую инфу
Legion342
18.08.2009, 12:04
перепробовал уже все что знаю и cUrl пока проблему не получается решить с авторизацией
не получилось передать логи и пароль чтобы авторизоваться на сайте...
может кто каким советом подскажет еще
Совет: брать все что дает тампер дата и все получится
Legion342
18.08.2009, 12:58
все тоже самое посылаю абсолютно
Да криво ты чтото брал, вот у меня авторизовывается.
<?php
$ua = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2';
$ref = 'http://qiq.ru/';
$post = 'action=login&login=b333&pass=123123123&mem=1';
$ch = curl_init('http://qiq.ru/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_REFERER, $ref);
curl_setopt($ch, CURLOPT_COOKIEJAR, './cook');
curl_setopt($ch, CURLOPT_COOKIEFILE, './cook');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$res = curl_exec($ch);
curl_close($ch);
$res = iconv('UTF-8','windows-1251',$res);
echo $res
?>
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot