2009-11-26 167 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

相關問題