检查代理ip的有效性

大家讲道理
发布: 2016-11-08 10:49:06
原创
2024 人浏览过

/**
 +-----------------------------------------------------------------------------
 * 检查代理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;
}
登录后复制

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板