我只是想从一个使用curl的网站上获取一些cookies,我已经阅读了与此相关的数千个主题,问题几乎在所有情况下都与文件的路径相关(这必须是绝对的)。
我试了好几件事,但我找不到我的饼干没有被写下来的原因。下面是代码:
$cookieDir = 'tmp/cookies.txt';
$options = Array(
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_URL => $url,
CURLOPT_COOKIEJAR => realpath($cookieDir),
CURLOPT_COOKIEFILE => realpath($cookieDir)
);
$ch = curl_init();
curl_setopt_array($ch, $options);
ob_start();
$data = curl_exec($ch);
ob_end_clean();
curl_close($ch);
一些注释:
文件存在
realpath($cookiedir)是可写的
我用$数据把这个网站弄到手了
谢谢你们
最佳答案
是网站不允许我获取他们的cookies,为了获取他们,我不得不让它认为我是一个使用这个额外参数的普通浏览器:
$header = array (
'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3',
'Connection: keep-alive'
);
然后在$options中
$options = array (
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_URL => $url,
CURLOPT_COOKIEJAR => realpath($cookieDir),
CURLOPT_COOKIEFILE => realpath($cookieDir),
CURLOPT_HTTPHEADER => $header
);
尽管这是一个奇怪的案例,但我希望它能帮助其他人。