// 抓取信息
function getAutoHomeDealerMSG( $_url , $_ip )
{
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $_url);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_HTTPHEADER, array("CLIENT-IP:{$_ip}", "X-FORWARDED-FOR:{$_ip}")); //此处可以改为任意假IP
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_TIMEOUT, 120);
$result = curl_exec ($ch);
curl_close($ch);
return $result;
}
// 生成ip地址随机数
function ipRand()
{
$one = mt_rand( 1 , 255 );
$two = mt_rand( 1 , 255 );
$three = mt_rand( 1 , 255 );
$four = mt_rand( 1 , 255 );
$ipAddress = "{$one}.{$two}.{$three}.{$four}";
return $ipAddress;
}
此方法只适用于http网站,https抓取需要跳过ssh验证
加入两行代码
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在()
第二条可以不写,写上会报错,原因是:
CURLOPT_SSL_VERIFYHOST的值
设为0表示不检查证书
设为1表示检查证书中是否有CN(common name)字段
设为2表示在1的基础上校验当前的域名是否与CN匹配
而libcurl早期版本中这个变量是boolean值,为true时作用同目前设置为2,后来出于调试需求,增加了仅校验是否有CN字段的选项,因此两个值true/false就不够用了,升级为0/1/2三个值。
再后来(libcurl_7.28.1之后的版本),这个调试选项由于经常被开发者用错,被去掉了,因此目前也不支持1了,只有0/2两种取值。
最新版本,它的默认值就是2,因此,这行代码,可以省略不写。