快捷搜索:   服务器  PHP  安全  IIS  linux 安全

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)

您可能还会对下面的文章感兴趣:

最新评论