似乎我需要一些帮助来设置我的 cURL,我正在尝试从我的服务器对外部网站进行 API 调用。让我感到困扰的是,有时此代码有效并返回预期结果,但有时它会返回此消息:
这是我的代码:
$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";
Run Code Online (Sandbox Code Playgroud)
是我这边的问题还是问题可能来自外部服务器?
我的 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
Run Code Online (Sandbox Code Playgroud)
curl 内置了一个完整的 cookie“引擎”。
如果您激活它,您可以让 curl 像浏览器一样接收和发送 cookie。
命令行选项:
Run Code Online (Sandbox Code Playgroud)-b, --cookie告诉 curl 文件从中读取 cookie 并启动 cookie 引擎,或者如果它不是文件,它将传递给定的字符串。-b name=var 有效,-b cookiefile 也是如此。
Run Code Online (Sandbox Code Playgroud)-j, --junk-session-cookies当与 -b 结合使用时,它将在加载时跳过所有“会话 cookie”,以显示启动新的 cookie 会话。
Run Code Online (Sandbox Code Playgroud)-c, --cookie-jar告诉 curl 启动 cookie 引擎并在请求后将 cookie 写入给定文件
参考:https : //curl.haxx.se/docs/http-cookies.html
好吧,他们的 cloudflare 系统只是阻止了我服务器的 IP(这是一个共享服务器),使用一个拥有自己 IP 的新主机解决了这个问题...谢谢你们的宝贵时间,伙计们,非常感谢。