php代码检查代理ip的有效性


Posted in PHP onAugust 19, 2016

本文实例为大家分享了检查代理ip有效性php代码,稳定性,如错误率和查询用时

/**
 +-----------------------------------------------------------------------------
 * 检查代理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 = 'http://www.baidu.com/';
  $result['succeed_times'] = 0; //成功次数
  $result['defeat_times'] = 0; //失败次数
  $result['total_spen']  = 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, 'gzip,deflate'); // 解码压缩文件
    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 (
        'Client_Ip: '.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255),
      ));
      curl_setopt($curl, CURLOPT_HTTPHEADER, array (
        'X-Forwarded-For: '.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.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__).'/cookie.txt');
    curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt');
    curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
    // $response_header = curl_getinfo($curl); // 获取返回response报头
    $content = curl_exec($curl);
    if (strstr($content, '百度一下,你就知道')) {
      $result['list'][$i]['status'] = 1;
      $result['succeed_times'] += 1;
    } else {
      $result['list'][$i]['status'] = 0;
      $result['defeat_times'] += 1;
    }
    $e = microtime();
    $result['total_spen']     += abs($e-$s);
    $result['list'][$i]['spen']  = abs($e-$s);
    $result['list'][$i]['content'] = json_encode($content, true);
    // $result['list'][$i]['response_header'] = $response_header;
  }
  $result['precent'] = (number_format($result['succeed_times']/$times, 4)*100).'%';
  $result['average_spen'] = number_format($result['total_spen']/$times, 4);
  return $result;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
数字转英文
Dec 06 PHP
dede3.1分页文字采集过滤规则详说(图文教程)
Apr 03 PHP
php面向对象全攻略 (九)访问类型
Sep 30 PHP
php自动加载的两种实现方法
Jun 21 PHP
php变量作用域的深入解析
Jun 03 PHP
微信扫描二维码登录网站代码示例
Dec 30 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
Jun 19 PHP
ThinkPHP3.1数据CURD操作快速入门
Jun 19 PHP
教你如何开启shopnc b2b2c 伪静态
Oct 21 PHP
typecho插件编写教程(六):调用接口
May 28 PHP
解决nginx不支持thinkphp中pathinfo的问题
Jul 21 PHP
php使用环形链表解决约瑟夫问题完整示例
Aug 07 PHP
PHP中new static()与new self()的比较
Aug 19 #PHP
ThinkPHP3.2.1图片验证码实现方法
Aug 19 #PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
Aug 19 #PHP
Thinkphp框架开发移动端接口(2)
Aug 18 #PHP
Thinkphp框架开发移动端接口(1)
Aug 18 #PHP
PHP Ajax JavaScript Json获取天气信息实现代码
Aug 17 #PHP
PHP文件下载实例代码浅析
Aug 17 #PHP
You might like
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
Prototype Date对象 学习
2009/07/12 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
详解在React项目中安装并使用Less(用法总结)
2019/03/18 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
JS继承定义与使用方法简单示例
2020/02/19 Javascript
vue prop传值类型检验方式
2020/07/30 Javascript
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
Python中输出ASCII大文字、艺术字、字符字小技巧
2015/04/28 Python
python 连接sqlite及简单操作
2017/06/30 Python
Python实现类的创建与使用方法示例
2017/07/25 Python
Flask框架通过Flask_login实现用户登录功能示例
2018/07/17 Python
在Python中获取两数相除的商和余数方法
2018/11/10 Python
Java Unsafe类实现原理及测试代码
2020/09/15 Python
详解python的super()的作用和原理
2020/10/29 Python
英国著名的化妆品折扣网站:Allbeauty.com
2016/07/21 全球购物
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
企业为何需要商业计划书
2013/12/26 职场文书
上班睡觉检讨书
2014/01/09 职场文书
小班秋游活动方案
2014/02/22 职场文书
烹饪自我鉴定
2014/03/01 职场文书
各营销点岗位职责范本
2014/03/05 职场文书
经典团队口号
2014/06/06 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
2014年党务公开工作总结
2014/12/09 职场文书
病危通知单
2015/04/17 职场文书
首席执行官观后感
2015/06/03 职场文书
创业计划书之家政服务
2019/09/18 职场文书