我使用curl通过php获取url。我成功地下载了页面,标题和所有内容。但是,任何页面返回的cookie都不会保存到指定的文件中。我检查了权限等,没有什么不正常的。我开始觉得我的代码有问题。
$get_cookie_page = 'http://www.google.ca';
echo curl_download($get_cookie_page);
function curl_download($Url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $Url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
$http_headers = array(
'Host: www.google.ca',
'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2',
'Accept: */*',
'Accept-Language: en-us,en;q=0.5',
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
'Connection: keep-alive'
);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $http_headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
感谢您的帮助。
感谢大家的帮助。然而,问题完全是另一回事。我可能应该提到我在Windows服务器上工作,cURL无法读取cookie.txt
的路径。
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt');
代替:
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
解决了问题
使用一个绝对路径到cookie jar文件,这样你就知道它保存在哪里,这样你就知道你有正确的权限在那里写。
curl将它知道的所有cookie存储到文件中,包括所谓的会话cookie(没有过期时间)