Rumah  >  Artikel  >  类库下载  >  检查代理ip的有效性

检查代理ip的有效性

大家讲道理
大家讲道理asal
2016-11-08 10:49:062025semak imbas

/**
 +-----------------------------------------------------------------------------
 * 检查代理ip信息有效性
 +-----------------------------------------------------------------------------
 * @param string $proxy_ip [117.95.100.126:8998]
 * @param int $times 执行检查次数
 * @return array
 * @author elinx <654753115@qq.com> 2016-07-29
 +-----------------------------------------------------------------------------
 */
function check_proxy_ip_info($proxy_ip=false, $times=10) {
    $header = array(
        // "GET / HTTP/1.1",
        // "HOST: www.baidu.com",
        "accept: application/json",
        "accept-encoding: gzip, deflate",
        "accept-language: en-US,en;q=0.8",
        "content-type: application/json",
        "user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36",
    );
    $url = &#39;http://www.baidu.com/&#39;;
    $result[&#39;succeed_times&#39;] = 0; //成功次数
    $result[&#39;defeat_times&#39;]  = 0; //失败次数
    $result[&#39;total_spen&#39;]    = 0; //总用时
    for ($i=0; $i < $times; $i++) {
        $s = microtime();
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url); //设置传输的url
        curl_setopt($curl, CURLOPT_HTTPHEADER, $header); //发送http报头
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_ENCODING, &#39;gzip,deflate&#39;); // 解码压缩文件
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //不验证证SSL书
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); //不验证SSL证书
 
        if (@$proxy_ip != false) { //使用代理ip
            curl_setopt($curl, CURLOPT_HTTPHEADER, array (
                &#39;Client_Ip: &#39;.mt_rand(0, 255).&#39;.&#39;.mt_rand(0, 255).&#39;.&#39;.mt_rand(0, 255).&#39;.&#39;.mt_rand(0, 255),
            ));
            curl_setopt($curl, CURLOPT_HTTPHEADER, array (
                &#39;X-Forwarded-For: &#39;.mt_rand(0, 255).&#39;.&#39;.mt_rand(0, 255).&#39;.&#39;.mt_rand(0, 255).&#39;.&#39;.mt_rand(0, 255),
            ));
            curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
            curl_setopt($curl, CURLOPT_PROXY, $proxy_ip);
        }
 
        curl_setopt($curl, CURLOPT_COOKIEFILE, dirname(__FILE__).&#39;/cookie.txt&#39;);
        curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__FILE__).&#39;/cookie.txt&#39;);
        curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
        // $response_header = curl_getinfo($curl); // 获取返回response报头
        $content = curl_exec($curl);
        if (strstr($content, &#39;百度一下,你就知道&#39;)) {
            $result[&#39;list&#39;][$i][&#39;status&#39;] = 1;
            $result[&#39;succeed_times&#39;] += 1;
        } else {
            $result[&#39;list&#39;][$i][&#39;status&#39;] = 0;
            $result[&#39;defeat_times&#39;]  += 1;
        }
        $e = microtime();
        $result[&#39;total_spen&#39;]          += abs($e-$s);
        $result[&#39;list&#39;][$i][&#39;spen&#39;]    =  abs($e-$s);
        $result[&#39;list&#39;][$i][&#39;content&#39;] =  json_encode($content, true);
        // $result[&#39;list&#39;][$i][&#39;response_header&#39;] =  $response_header;
    }
    $result[&#39;precent&#39;] = (number_format($result[&#39;succeed_times&#39;]/$times, 4)*100).&#39;%&#39;;
    $result[&#39;average_spen&#39;] = number_format($result[&#39;total_spen&#39;]/$times, 4);
    return $result;
}

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Artikel berkaitan

Lihat lagi