我只是想从一个使用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
);

尽管这是一个奇怪的案例,但我希望它能帮助其他人。

10-08 16:46