была задача парсить скрытый контент с одного сайта для этого использовался cUrl некоторое времяпарсен работал нормально через прокси обращалсяк нужной страницы передавал куки и забирал нужный контент, через некоторое время перестал работать с нужными куками хотя если просто открываешь страницу с теми куками то все нормально вот часть кода которая отвечает за загрузку страницы PHP: $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); может кто подскажет в чем может быть причина
шлет все тоже самое что и я добавил только заголвки еще в код PHP: $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'; и изменил на такую строчку заголвок PHP: curl_setopt($ch, CURLOPT_HEADER, $this1->headers);
как куки выглядят? может с ними чтото... попробуй сначала послать запрос на страницу логина а потом PHP: preg_match_all('#Set-Cookie:\s([^;]*);#is', $string1, $gets); $coc = join(';', $gets[1]); юзай этьи куки.....
если куки берутся и передаются, самое тру использовать PHP: 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) соответственно.
а я это использую ) curl_setopt($ch, CURLOPT_COOKIEJAR, "./cook"); curl_setopt($ch, CURLOPT_COOKIEFILE, "./cook"); А то придет хакир и сделает запрос сайт.ru/cookiefile.txt (конечно это из раздела фантастики, но надо же было мне как-то аргументировать)) ТС давай урл, посмотрим
перепробовал уже все что знаю и cUrl пока проблему не получается решить с авторизацией не получилось передать логи и пароль чтобы авторизоваться на сайте... может кто каким советом подскажет еще
Да криво ты чтото брал, вот у меня авторизовывается. PHP: <?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 ?>