function http_curl_get($url,$hosts,$referer){
//生成随机IP
$cip = mt_rand(11, 191) . "." . mt_rand(0, 240) . "." . mt_rand(1, 240) . "." . mt_rand(1, 240);
//函数初始化
$curl = curl_init();
//这是你想用PHP取回的URL地址。你也可以在用curl_init()函数初始化时设置这个选项。
curl_setopt($curl, CURLOPT_URL, $url);
//如果你想把一个头包含在输出中,设置这个选项为一个非零值。
curl_setopt($curl, CURLOPT_HEADER, 0);
//设置返回值不直接输出,例如返回xml格式,会将xml原样输出
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//检查服务器SSL证书中是否存在一个公用名
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
//设为0表示不检查证书。设为1表示检查证书中是否有CN(common name)字段。设为2表示在1的基础上校验当前的域名是否与CN匹配
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
//可解压缩gzip、deflate等压缩文件
curl_setopt($curl, CURLOPT_ENCODING, '');
//浏览器UA
curl_setopt($curl,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
//设置$headers
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Host:'.$hosts,'X-FORWARDED-FOR:'.$cip]);
//设置REFERER
curl_setopt($curl,CURLOPT_REFERER,$referer);
//跟踪爬取重定向页面
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
//设置连接超时时间,单位是秒
curl_setopt($curl, CURLOPT_TIMEOUT, 5);
//判断错误并输出
if(curl_errno($curl)){
echo 'Error:' . curl_error($curl);
}else{
$data = curl_exec($curl);
}
curl_close($curl);
//返回数据
return $data;
}
本文共1108个字符,其中有 194 个汉字,平均阅读时长 ≈ 4分钟
评论