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 页面跳转到另一个页面的多种方法方法总结
Jul 07 PHP
PHP动态编译出现Cannot find autoconf的解决方法
Nov 05 PHP
php实现指定字符串中查找子字符串的方法
Mar 17 PHP
列举PHP的Yii 2框架的开发优势
Jul 03 PHP
php递归函数三种实现方法及如何实现数字累加
Aug 07 PHP
既简单又安全的PHP验证码 附调用方法
Jun 02 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
Sep 16 PHP
php-fpm添加service服务的例子
Apr 27 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 PHP
php微信开发之图片回复功能
Jun 14 PHP
PHP模糊查询技术实例分析【附源码下载】
Mar 07 PHP
Laravel5.4框架中视图共享数据的方法详解
Sep 05 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/08/08 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
2013/06/24 PHP
PHP记录和读取JSON格式日志文件
2016/07/07 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
js获取select选中的option的text示例代码
2013/12/19 Javascript
对比分析json及XML
2014/11/28 Javascript
iPhone手机上搭建nodejs服务器步骤方法
2015/07/06 NodeJs
js中json处理总结之JSON.parse
2016/10/14 Javascript
JavaScript仿微博发布信息案例
2016/11/16 Javascript
vue.js如何将echarts封装为组件一键使用详解
2017/10/10 Javascript
js设置随机切换背景图片的简单实例
2017/11/12 Javascript
JS实现textarea通过换行或者回车把多行数字分割成数组并且去掉数组中空的值
2018/10/29 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
2019/04/17 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
微信小程序 wx:for遍历循环使用实例解析
2019/09/09 Javascript
vue 强制组件重新渲染(重置)的两种方案
2019/10/29 Javascript
详解Python中的条件判断语句
2015/05/14 Python
python+opencv 读取文件夹下的所有图像并批量保存ROI的方法
2019/01/10 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
Django框架 信号调度原理解析
2019/09/04 Python
Django REST Framework之频率限制的使用
2019/09/29 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
利用CSS3实现折角效果实例源码
2016/09/28 HTML / CSS
办公室内勤岗位职责范本
2013/12/09 职场文书
心得体会范文
2014/01/04 职场文书
投标单位介绍信
2014/01/09 职场文书
报关专员求职信范文
2014/02/22 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
个人欠款担保书
2014/05/20 职场文书
统计员岗位职责范本
2015/04/14 职场文书
2015最新婚礼司仪主持词
2015/06/30 职场文书
公司员工培训管理制度
2015/08/04 职场文书
小学生节约用水倡议书
2019/08/12 职场文书
创业计划之特色精品店
2019/08/12 职场文书
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL