用curl获取https内容的方法



客户有一个抓取程序,由于目标网站taobao.com升级http到https导致无法正常抓取,刚开始以为是taobao.com和往常一样是屏蔽或者访问验证拒绝。通过桥接服务器抓取还是失败302。最后修改http为https出错,原因主要是file_get_content 不支持https,需要修改为curl抓取:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //跳过https验证
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);//1表示不输出
//return “000”;
$html1 = curl_exec($ch);

另外,发现有乱码情况,导致数据无法匹配,需要对html数据进行编码修正:

if(!mb_check_encoding($html, ‘utf-8′)) {
$html = mb_convert_encoding($html,’UTF-8′,’gbk’);
}

这样就OK了。