PHP CURL获取https页面的内容
示例url: 我正在尝试使用cURL获取HTTPS页面的内容 问题是我拿不到文件,也不知道为什么PHP CURL获取https页面的内容,php,curl,https,Php,Curl,Https,示例url: 我正在尝试使用cURL获取HTTPS页面的内容 问题是我拿不到文件,也不知道为什么 function download_page($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5
function download_page($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)");
return curl_exec($ch);
}
您可能遇到的问题与您遇到的问题相同。而且,他似乎已经修好了。问题可能是关于SSL证书的协商,以及cURL应该如何判断服务器发送的证书是否可信。您提供的代码实际上对我很好,无需修改。正如RolfVandeKrol提到的,您可能会遇到SSL协商问题。要尝试使用该想法进行修复,您可以通过以下方式关闭SSL对等验证:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
要查看实际情况,在修改之前,可以使用curl\u getinfo($ch)
查看返回的所有标题。这应该让您知道脚本接收到的正确诊断响应类型
此外,您可能需要修改函数以使用curl\u close($ch)正确关闭curl
句柄代码>。尝试,而不是返回curl\u exec($ch)代码>,使用:
...
$contents = curl_exec($ch);
curl_close($ch);
return $contents;
}
检查错误:
$result = curl_exec($ch);
if (!$result) {
die(curl_error($ch));
}
最有可能的情况是,curl不再附带“有效”CA的内部列表,因此无法验证远程站点的证书是否有效。您必须禁用证书验证,和/或自己安装CA列表
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
p、 永远不要假设远程资源上的操作成功-始终检查错误条件,并输出任何可用的错误消息。开着灯,而不是在黑暗中四处乱跑,你会省去很多头疼的事