有的網站會用不同的網域名稱設定COOKIE,這樣好像CURL就會漏掉一些COOKIE。例如CURL訪問網站www.xxx.com首頁時,它會立即設定一個屬於xxx.com的COOKIE,在首頁填寫使用者名稱確定後轉到www.xxx.com/next.php,這時會設定一個屬於www.xxx.com的COOKIE。請問這兩個COOKIE要怎麼成功擷取呢?
回複討論(解決方案)
CURLOPT_COOKIE
設定HTTP請求中“Set-Cookie:”部分的內容。
CURLOPT_COOKIEFILE
包含cookie資訊的檔案名稱,這個cookie檔案可以是Netscape格式或者HTTP風格的header資訊。
CURLOPT_COOKIEJAR
串連關閉以後,存放cookie資訊的檔案名稱
CURLOPT_COOKIE
設定HTTP請求中“Set-Cookie:”部分的內容。
CURLOPT_COOKIEFILE
包含cookie資訊的檔案名稱,這個cookie檔案可以是Netscape格式或者HTTP風格的header資訊。
CURLOPT_COOKIEJAR
串連關閉以後,存放cookie資訊的檔案名稱
謝謝你的回複
訪問首頁時,首頁會產生屬於xxx.com的COOKIE,CURL取不到這個COOKIE:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.xxx.com');
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);
填寫使用者名稱確定後,轉到第二頁時,會產生屬於www.xxx.com的COOKIE,CURL可以成功取得這個COOKIE:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.xxx.com/next.php');
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);
為什麼CURL訪問http://www.xxx.com的時候,www.xxx.com會產生一個屬於xxx.com的COOKIE呢?這會不會就是CURL取不到COOKIE的原因?
具體情況要具體分析,你最好給出真實的 url
具體情況要具體分析,你最好給出真實的 url
已經解決了,原來是JS設定的,謝謝你。還有一個問題想問你一下:curl_exec()之後就立即curl_close()和curl_exec()之後暫停5分鐘再curl_close(),那對於被curl的網站來說,會有什麼不同呢?
沒有什麼不同
沒有什麼不同
非常感謝!
樓主您好!我好像遇到了和你一樣的問題,使用CURL庫時request裡的cookies好像缺少了一部分,請問你是怎麼解決的?