cURL: Как я узнаю, правильно ли настроены мои куки? - PullRequest
1 голос
/ 26 ноября 2009
$ckfile = tempnam ("/tmp", "CURLCOOKIE");
$useragent="Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16";

$ch = curl_init ("website.com");
curl_setopt($ch, CURLOPT_USERAGENT, $useragent); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

$output = curl_exec ($ch);

Сайт устанавливает cookie, а затем перенаправляет. Достаточно ли этого кода? Потому что, похоже, он не получает cookie должным образом. Как я могу проверить, установлен ли он? Еще лучше, если я знаю, какие куки я хочу, могу ли я просто сделать это или что-то еще?

Редактировать: Итак, мой скрипт CURL посещает веб-сайт, верно? Веб-сайт устанавливает файлы cookie для проверки, и я хочу узнать, правильно ли мой сценарий cURL получает эти файлы cookie. Я хочу знать, есть ли тест для этого, и / или я хочу знать, могу ли я просто создать cookie для проверки на сайте.

Ответы [ 2 ]

1 голос
/ 29 декабря 2009

Недавно у меня был проект, в котором мне нужно было передавать файлы cookie между серверами, и я обнаружил, что установка CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR в один и тот же файл помогает.

Если вы просто хотите узнать, установлены ли файлы cookie с удаленного сайта, вы можете посмотреть файл CURLOPT_COOKIEJAR в текстовом редакторе.

1 голос
/ 26 ноября 2009

Если бы это был curl командной строки, вы бы добавили параметр -v. Обратите внимание на строки, начинающиеся с > Cookie:.

php-версия:

curl_setopt($ch,CURLOPT_VERBOSE,TRUE);//and set CURLOPT_STDERR to STDOUT

И если бы это был браузер, я бы отладил один из них: вы можете использовать Fiddler в IE, TamperData или Firebug (net) в Firefox , инспектор в Chrome и в Safari или прокси с любым браузером, чтобы наблюдать, как форма отправляется "обычным" браузером.

Прокси-подход может сработать, если вы установите php curl для его использования.

curl_setopt($ch,CURLOPT_HTTPPROXYTUNNEL,TRUE);//& CURLOPT_PROXYPORT CURLOPT_PROXY

Если вы хотите просто добавить куки в один запрос, вы можете написать строку вроде:

$ch->headers[] = 'Cookie: recent=543..; _session_id=6185..; __utma=572.1.1.1.1; __utmc=572..; __utmz=572.1.1.1.1.utmccn=(referral)|utmcsr=domain.com|utmcct=/request/path|utmcmd=referral';

но я не уверен насчет этого, это может быть больше по той же линии:

curl_setopt($ch,CURLOPT_COOKIE,"recent=543..; _session_id=618..");
// Possibly, but I think this might overwrite other headers.
curl_setopt($ch,CURLOPT_HTTPHEADER, "Cookie: recent=543..; _session_id=6185..");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...