PDA

Просмотр полной версии : Проблема с с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);

Zitt
17.08.2009, 18:39
как куки выглядят? может с ними чтото...
попробуй сначала послать запрос на страницу логина а потом

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");

h4xx0r
17.08.2009, 19:12
Нахера выдирать куки регуляркой и уж тем более хранить их в файле, если можно просто поставить опцию 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

Fepsis
17.08.2009, 19:31
Да выложил бы "тут адрес страницы" давно бы уже сказали что не так...

geforse
17.08.2009, 20:55
если куки берутся и передаются, самое тру использовать

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 пока проблему не получается решить с авторизацией
не получилось передать логи и пароль чтобы авторизоваться на сайте...


может кто каким советом подскажет еще

Zedi
18.08.2009, 12:43
Совет: брать все что дает тампер дата и все получится

Legion342
18.08.2009, 12:58
все тоже самое посылаю абсолютно

b3
18.08.2009, 13:46
Да криво ты чтото брал, вот у меня авторизовывается.

<?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
?>