cURL:我如何知道我的cookie是否设置正确?

时间:2009-11-26 19:03:20

标签: php curl

$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 个答案:

答案 0 :(得分:1)

如果这是命令行curl,你会抛出-v参数。请注意以> Cookie:开头的行。

这是php版本:

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

如果这是一个浏览器,我会调试其中一个:你可以在IE上使用Fiddler,在Firefox上使用TamperDataFirebug (net),检查员on Chromeon Safariproxy与任何浏览器一起观看“正常”浏览器如何提交表单。

如果你设置php的curl来使用代理方法可能会有效。

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

如果您只想在一个请求中添加Cookie,您可以编写如下行:

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

答案 1 :(得分:1)

我最近有一个项目需要在服务器之间传递cookie,我发现将CURLOPT_COOKIEFILECURLOPT_COOKIEJAR设置为同一个文件就可以了。

如果您只是想查看是否正在设置来自远程站点的cookie,您应该能够在文本编辑器中查看CURLOPT_COOKIEJAR文件。