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 更新数据库中断的解决方法
Jun 05 PHP
php 图片上添加透明度渐变的效果
Jun 29 PHP
PHP导入Excel到MySQL的方法
Apr 23 PHP
解析php中const与define的应用区别
Jun 18 PHP
解析关于wamp启动是80端口被占用的问题
Jun 21 PHP
php的$_FILES的临时储存文件与回收机制实测过程
Jul 12 PHP
浅析linux下apache服务器的配置和管理
Aug 10 PHP
PHP中Closure类的使用方法及详解
Oct 09 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
Oct 11 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
php学习笔记之字符串常见操作总结
Jul 16 PHP
PHP7 新增功能
Mar 09 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输出表格的实现代码(修正版)
2010/12/29 PHP
php数组使用规则分析
2015/02/27 PHP
JavaScript中的事件处理
2008/01/16 Javascript
Javascript实现CheckBox的全选与取消全选的代码
2010/07/20 Javascript
客户端 使用XML DOM加载json数据的方法
2010/09/28 Javascript
JavaScript遍历table表格中的某行某列并打印其值
2014/07/08 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
通过Tabs方法基于easyUI+bootstrap制作工作站
2016/03/28 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
jquery延迟对象解析
2016/10/26 Javascript
详解jquery easyui之datagrid使用参考
2016/12/05 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
JavaScript实现审核流程状态的动态显示进度条
2017/03/15 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
nodejs多版本管理总结
2018/04/03 NodeJs
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
深入探讨JavaScript的最基本部分之执行上下文
2019/02/12 Javascript
JS中准确判断变量类型的方法
2020/06/01 Javascript
Python实现的Kmeans++算法实例
2014/04/26 Python
Python中selenium实现文件上传所有方法整理总结
2017/04/01 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
使用Python获取网段IP个数以及地址清单的方法
2018/11/01 Python
python基础知识(一)变量与简单数据类型详解
2019/04/17 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
2019/06/19 Python
幼儿园开学家长寄语
2014/01/19 职场文书
城市规划应届生推荐信
2014/09/08 职场文书
中华在我心中演讲稿
2014/09/13 职场文书
大国崛起英国观后感
2015/06/02 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
vue中三级导航的菜单权限控制
2021/03/31 Vue.js
电频谱管理的原则是什么
2022/02/18 无线电