PHP批量验证代理IP有效性代码 PHP批量验证来自代理网站API接口输出的代理IP有效
现在网上有一大堆代理IP网站,付费就能提供API接口,并输出他们扫描到的有效代理给我们使用,但是他们输出的很多代理IP,其实并不一定能使用。这个时候就需要我们进行二次有效性验证,如果一条条验证那效率很低,这个时候还需要能批量进行验证。PHP支持curl_multi批量CURL方法。可以使用这个进行验证
代码参考如下:
public function check_proxy_ip_info(){ $url='http://api.66daili.cn/API/GetCommonProxy/'; $html= file_get_contents($url); $array=explode("\n",$html); $timeout=10;//设置超时时间为10秒 $res = array(); $mh = curl_multi_init(); foreach($array as $k=>$proxy_ip){ $url='http://www.baidu.com'; $conn[$k]=curl_init($url); curl_setopt($conn[$k], CURLOPT_TIMEOUT, $timeout); curl_setopt($conn[$k], CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'); curl_setopt($conn[$k], CURLOPT_MAXREDIRS, 7); curl_setopt($conn[$k], CURLOPT_HEADER, 0); curl_setopt($conn[$k], CURLOPT_FOLLOWLOCATION, 1); curl_setopt($conn[$k],CURLOPT_RETURNTRANSFER,1); curl_setopt($conn[$k],CURLOPT_ENCODING, 'gzip,deflate'); // 解码压缩文件 curl_setopt($conn[$k],CURLOPT_SSL_VERIFYPEER, false); //不验证证SSL书 curl_setopt($conn[$k],CURLOPT_SSL_VERIFYHOST, false); //不验证SSL证书 curl_setopt($conn[$k],CURLOPT_PROXYTYPE, CURLPROXY_HTTP);//使用代理访问 curl_setopt($conn[$k],CURLOPT_PROXY, $proxy_ip);//使用代理访问 curl_multi_add_handle ($mh,$conn[$k]); } $active = null; do{ $mrc = curl_multi_exec($mh,$active); }while($mrc == CURLM_CALL_MULTI_PERFORM); while($active && $mrc == CURLM_OK){ if(curl_multi_select($mh) != -1){ do{ $mrc = curl_multi_exec($mh, $active); }while($mrc == CURLM_CALL_MULTI_PERFORM); } } foreach ($array as $k => $url) { curl_error($conn[$k]); $res[$k]=curl_multi_getcontent($conn[$k]); if (strstr($res[$k], '百度')) { echo $url."有效<BR>"; } $header[$k]=curl_getinfo($conn[$k]); curl_multi_remove_handle($mh, $conn[$k]); curl_close($conn[$k]); } curl_multi_close($mh); //print_r( $res); }
这样就能自动读取来自代理网站的API接口输出的代理IP,并自动验证,有效的自动显示有效
顶(0)
踩(0)
- 最新评论