cURL返回请启用Cookie?

时间:2018-04-14 23:32:43

标签: php curl cookies

我似乎需要一些帮助来设置我的cURL,我正在尝试从我的服务器对外部网站进行API调用。 让我感到困惑的是,有时这段代码会起作用并返回预期的结果,但有时会返回此消息:

enter image description here

这是我的代码:

$path_cookie = 'cookie.txt';
if (!file_exists(realpath($path_cookie))) touch($path_cookie);

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/api/findusers/".$nick_list."?key=".$voobly_key);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath($path_cookie));
$headers = [
        'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
        'cookie: __cfduid=d0d14dfd36e0da8e7858b58873b4263181523751395'
];

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);


$response = curl_exec($ch);
curl_close($ch);
echo "rep : $response";

问题在我身边还是问题可能来自外部服务器?

我的cookie.txt看起来像这样:

# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.

#HttpOnly_.example.com  TRUE    /   FALSE   1555287395  __cfduid    d0d14dfd36e0da8e7858b58873b4263181523751395

2 个答案:

答案 0 :(得分:1)

curl有一个完整的cookie"引擎"内置。
如果你激活它,你可以像浏览器那样卷曲接收和发送cookie。

  

命令行选项:

-b, --cookie
     

告诉curl一个文件从中读取cookie并启动cookie引擎,或者   如果它不是一个文件,它将传递给定的字符串。 -b name = var works   -b cookiefile也是如此。

-j, --junk-session-cookies
     

与-b组合使用时,会跳过所有会话cookie"   在加载时,似乎开始一个新的cookie会话。

-c, --cookie-jar
     

告诉curl启动cookie引擎并将cookie写入给定的   请求后的文件

参考:https://curl.haxx.se/docs/http-cookies.html

答案 1 :(得分:0)

他们的cloudflare系统只是阻止我服务器的IP(它是共享的),获得一个拥有自己IP的新主机解决了这个问题...... 谢谢你的时间,感谢你。