2009-11-26 102 views
1
$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:我怎么知道我的cookies是否设置正确?

编辑:所以我的CURL脚本访问网站的权利?该网站设置用于验证的cookie,并且我想查看我的cURL脚本是否正确接收这些cookie。我想知道是否有测试,或者我想知道我是否可以创建一个cookie来验证网站。

+0

我真的应该在发帖前仔细阅读我的帖子。 – Strawberry 2009-11-26 19:27:23

回答

1

我最近有地方,我需要在服务器之间传递的cookie一个项目,我发现,无论CURLOPT_COOKIEFILECURLOPT_COOKIEJAR设置为同一个文件并获得成功。

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

1

如果这是您在-v参数中输入的命令行卷曲。请注意以> Cookie:开头的行。

这样做的PHP版本是:

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

如果这是一个浏览器我会用其中的一个调试:您可以在Firefox的IE浏览器,TamperDataFirebug (net)使用Fiddler,检查员on Chromeon Safari ,或任何浏览器的proxy观看如何通过“正常”浏览器提交表单。

如果您设置了php的curl来使用它,代理方法可能会工作。

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

如果你只想添加cookies来一个请求,你可以写这样一行:

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

不幸的是我觉得我很困惑什么不是在你的问题中工作?是否在cookie jar中收到cookie,然后想要检查是否使用了设置的cookie?然后我会使用详细或代理方法。 – dlamblin 2009-11-26 19:55:03

相关问题