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 相关文章推荐
PHP取进制余数函数代码
Jan 19 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
Apr 10 PHP
php去除html标记的原生函数详解
Jan 27 PHP
如何利用http协议发布博客园博文评论
Aug 03 PHP
PHP框架Laravel插件Pagination实现自定义分页
Apr 22 PHP
微信随机生成红包金额算法php版
Jul 21 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
Oct 10 PHP
thinkphp修改配置进入默认首页的方法
Feb 07 PHP
php 如何设置一个严格控制过期时间的session
May 05 PHP
PHP中in_array的隐式转换的解决方法
Mar 06 PHP
thinkPHP框架中layer.js的封装与使用方法示例
Jan 18 PHP
PHP实现通过二维数组键值获取一维键名操作示例
Oct 11 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
PhpMyAdmin中无法导入sql文件的解决办法
2010/01/08 PHP
PHP实现显示照片exif信息的方法
2014/07/11 PHP
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
PHP实现抓取HTTPS内容
2014/12/01 PHP
Zend Framework数据库操作技巧总结
2017/02/18 PHP
Yii框架函数简单用法分析
2019/09/09 PHP
extjs中grid中嵌入动态combobox的应用
2011/01/01 Javascript
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
详解JavaScript的流程控制语句
2015/11/30 Javascript
javascript检测移动设备横竖屏
2016/05/21 Javascript
Javascript基础_简单比较undefined和null 值
2016/06/14 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
angular分页指令操作
2017/01/09 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
微信小程序page的生命周期和音频播放及监听实例详解
2017/04/07 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
2018/03/05 Javascript
jQuery实现左右两个列表框的内容相互移动功能示例
2019/01/27 jQuery
element-ui表格合并span-method的实现方法
2019/05/21 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
2019/01/04 Python
Python3日期与时间戳转换的几种方法详解
2019/06/04 Python
python标准库OS模块详解
2020/03/10 Python
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
2012/05/24 面试题
J2EE中常用的名词进行解释
2015/11/09 面试题
小学生清明节演讲稿
2014/09/05 职场文书
故宫导游词
2015/01/31 职场文书