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函数spl_autoload_register()用法和__autoload()介绍
Feb 04 PHP
php判断电脑访问、手机访问的例子
May 10 PHP
PHP图像处理类库及演示分享
May 17 PHP
PHP设置进度条的方法
Jul 08 PHP
yii2中使用Active Record模式的方法
Jan 09 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
May 06 PHP
php中二分法查找算法实例分析
Sep 22 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
Oct 14 PHP
PHP实现的解汉诺塔问题算法示例
Aug 06 PHP
PHP大文件切割上传功能实例分析
Jul 01 PHP
thinkphp5 模型实例化获得数据对象的教程
Oct 18 PHP
PHP框架实现WebSocket在线聊天通讯系统
Nov 21 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
php5.x禁用eval的操作方法
2018/10/19 PHP
Javascript模板技术
2007/04/27 Javascript
javascript this用法小结
2008/12/19 Javascript
jquery 弹出层注册页面等(asp.net后台)
2010/06/17 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
js 实现 input type=&quot;file&quot; 文件上传示例代码
2013/08/07 Javascript
jquery遍历checkbox介绍
2014/02/21 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
2015/10/12 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
荐书|您有一份JavaScript书单待签收
2017/07/21 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
微信小程序学习笔记之获取位置信息操作图文详解
2019/03/29 Javascript
浅析vue插槽和作用域插槽的理解
2019/04/22 Javascript
浅谈layui 绑定form submit提交表单的注意事项
2019/10/25 Javascript
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
Python中subprocess的简单使用示例
2015/07/28 Python
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
利用python实现在微信群刷屏的方法
2019/02/21 Python
python代码编写计算器小程序
2020/03/30 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
Luxplus荷兰:以会员价购买美容产品等,独家优惠
2019/08/30 全球购物
正隆泰信息技术有限公司上机题
2012/06/14 面试题
科级干部考察材料
2014/02/15 职场文书
总裁助理岗位职责
2014/02/17 职场文书
中国梦主题教育活动总结
2014/05/05 职场文书
在职党员进社区活动总结
2014/07/05 职场文书
小学音乐课歌曲《堆雪人》教学反思
2016/02/18 职场文书
python迷宫问题深度优先遍历实例
2021/06/20 Python
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript