проблема curl + cookie

Статус
В этой теме нельзя размещать новые ответы.

TrastMan

Постоялец
Регистрация
13 Ноя 2007
Сообщения
117
Реакции
4
Чтобы перейти по ссылке нужны куки поставленные на предидущей страничке. Куки такого вида:

"параметр=MXхеш1Vk; expires=day, 01 Aug 01 01:01:01 GMT; path=/; domain=.domain.com;
var a22767092131=new Date();var h0285536890192=new Date();h0285536890192.setTime(a22767092131.getTime()+249696002858);
4d5e11111a56=1281078431-0-!0;path=/;expires='+h0285536890192.toGMTString(h0285536890192)+';';
d270d11111d173=bf0a111111739;path=/';"

При работе через фаил:

PHP:
       curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); 
       curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");

В cookie.txt пишется только: "параметр=MXхеш1Vk; expires=day, 01 Aug 01 01:01:01 GMT; path=/; domain=.domain.com;"

Пробую через:

PHP:
curl_setopt($ch, CURLOPT_COOKIE, $cookie);

С разными вариантами найденными в примерах :), вроде:

PHP:
function get_cookie($page) { // и бонус, для парсинга кукисов 
    if(preg_match("|Set-Cookie: (.*)\n|Uis",$page,$rnd)) return $rnd[1]; 
else return false;

Смотрю
PHP:
echo $cookie

Выдает ничего или только : "4d5e11111a56=1281078431-0-!0;path=/;expires=d270d11111d173=bf0a111111739;path=/"

Как грамотно работать с такими кукисами?
 
а куки случаем не через js пишутся?

пишет курл то, что ему передает сервер -- можешь проверить посмотрев http заголовки ответа

Вот если ты там найдешь те куки, которые не пишутся в файл -- тогда узнаешь что парсить

заголовки, или js код в странице
 
var a22767092131=new Date();var h0285536890192=new Date();h0285536890192.setTime(a22767092131.getTime ()+249696002858);
4d5e11111a56=1281078431-0-!0;path=/;expires='+h0285536890192.toGMTString(h02855368901 92)+';';
d270d11111d173=bf0a111111739;path=/';"

Вот этот участок довольно странный.
 
а куки случаем не через js пишутся?
пишет курл то, что ему передает сервер -- можешь проверить посмотрев http заголовки ответа
Вот если ты там найдешь те куки, которые не пишутся в файл -- тогда узнаешь что парсить
заголовки, или js код в странице
Да, в заголовках действительно есть только:
Cookie: "параметр=MXхеш1Vk; expires=day, 01 Aug 01 01:01:01 GMT; path=/; domain=.domain.com;"
И вот такая странность:
Cookie2: $Version=1

Все, почти ршено:)
Маленькая неполадка... в этой стоке:

PHP:
$pos = strpos($text, "document.cookie='");

Вместо
PHP:
"document.cookie='"
может быть
PHP:
"document.cookie=""

Как сделать, чтобы было все равно какая скобка стоит за document.cookie= ?
 
Регулярками)
 
PHP:
if (strpos($text, "document.cookie='"))
$pos = strpos($text, "document.cookie='"); 
else if (strpos($text, "document.cookie=\""))
$pos = strpos($text, "document.cookie=\"");
вот так или ещё можно так
PHP:
preg_match_all("#document.cookie=['\"]#i",$peremenay,$pos);
далее регулярку редактируйте под свои нужды!
 
Еще такой вопрос. Я правильно понимаю, что

PHP:
curl_setopt($ch, CURLOPT_COOKIE, $cookie);

должно передавать все куки из заголовков в переменную $cookie, по аналогии с

PHP:
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");

записывающим их в cookie.txt?

Если CURLOPT_COOKIEJAR срабатывает нормально, то CURLOPT_COOKIE не дает ожидаемого результата.

Попытка записать $cookie в фаил:

PHP:
	$t = fopen("cookie.txt", "w");
	fputs($t, $cookie);
	fclose($t);

или просто вывести:

PHP:
echo $cookie

возвращает пустоту:(
 
CURLOPT_COOKIE отправляет серверу строку с куками.
CURLOPT_COOKIEFILE отправляет серверу куки из файла.

CURLOPT_COOKIEJAR сохраняет полученные от сервера куки в файл.
 
CURLOPT_COOKIE отправляет серверу строку с куками.
CURLOPT_COOKIEFILE отправляет серверу куки из файла.
CURLOPT_COOKIEJAR сохраняет полученные от сервера куки в файл.
Ясно. А курлом нельзя передать куки из заголовоков в переменную? файл дергать постоянно некрасиво...
 
можно выводим возращаемый хеадер, с него режем куки.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху