[转]解决CURL采集HTTPS页面空白问题

做项目遇到file_get_contents获取HTTPS页面没有内容问题~

file_get_contents是一个不错的东西采集经常用,不过现在很多网站针对这个进行了预防处理,也就需要单独融入头了。而这时候最好的就是转移CURL的。而今天采集HTTPS页面,CURL也需要增加命令,其实就是针对HTTPS的证书问题的,这个很简单处理。其实主要就是下面2个选项:

CURLOPT_SSL_VERIFYPEER
CURLOPT_SSL_VERIFYHOST

用来设置是否验证HTTPS证书的,我们做采集自然不需要啦。其实就是我们打开一些HTTPS网站时候,浏览器提示的您访问的网页证书不符之类的,然后你点击继续访问一个道理。下面封装了个方法,就简单用了。

function curlPost($url, $data=array(), $timeout = 30)
{
    $ssl = substr($url, 0, 8) == "https://" ? TRUE : FALSE;
    $ch = curl_init();
    $opt = array(
            CURLOPT_URL     => $url,
            CURLOPT_POST    => 1,
            CURLOPT_HEADER  => 0,
            CURLOPT_POSTFIELDS      => (array)$data,
            CURLOPT_RETURNTRANSFER  => 1,
            CURLOPT_TIMEOUT         => $timeout,
            );
    if ($ssl)
    {
        $opt[CURLOPT_SSL_VERIFYHOST] = 1;
        $opt[CURLOPT_SSL_VERIFYPEER] = FALSE;
    }
    curl_setopt_array($ch, $opt);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

方法很简单,使用也很简单:

$data = curlPost('https://www.baidu.com');

第一个参数地址,会自动识别是不是需要用证书,而第二个就是提交的参数。非常好用的哟。

----------

From https://www.cnblogs.com/lbnnbs/p/3920442.html 补充:
curl 请求https内容,返回空
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$api);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//禁止直接显示获取的内容 重要
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //不验证证书下同
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //

$json = curl_exec($ch); //获取
curl_close($ch);

猜你喜欢

转载自www.cnblogs.com/ec04/p/12390104.html