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 相关文章推荐
example1.php
Oct 09 PHP
如何删除多级目录
Oct 09 PHP
PHP 命令行参数详解及应用
May 18 PHP
解析PHP跨站刷票的实现代码
Jun 18 PHP
php将mysql数据库整库导出生成sql文件的具体实现
Jan 08 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
Jul 05 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
Jul 04 PHP
php 解决substr()截取中文字符乱码问题
Jul 18 PHP
微信支付PHP SDK ―― 公众号支付代码详解
Sep 13 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
Oct 13 PHP
php遍历替换目录下文件指定内容的方法
Nov 10 PHP
ThinkPHP实现图片上传操作的方法详解
May 08 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读取txt文本文件并分页显示的方法
2015/03/11 PHP
PHP自定义错误处理的方法分析
2018/12/19 PHP
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
2014/11/24 Javascript
js中split和replace的用法实例
2015/02/28 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
JS实现模拟风力的雪花飘落效果
2015/05/13 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
2016/11/09 Javascript
简单理解Vue条件渲染
2016/12/03 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
JS实现浏览器打印、打印预览示例
2017/02/28 Javascript
nodejs个人博客开发第四步 数据模型
2017/04/12 NodeJs
js实现方块上下左右移动效果
2017/08/17 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
JS基于对象的链表实现与使用方法示例
2019/01/31 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
vue 限制input只能输入正数的操作
2020/08/05 Javascript
Vue组件通信$attrs、$listeners实现原理解析
2020/09/03 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
在Python中用has_key()方法查找键是否存在的教程
2015/05/21 Python
Python实现求两个csv文件交集的方法
2017/09/06 Python
Python实现扩展内置类型的方法分析
2017/10/16 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
巴西在线鞋店:Shoestock
2017/10/28 全球购物
人事部专员岗位职责
2014/03/04 职场文书
2014年高中生自我评价范文
2014/09/26 职场文书
2014年酒店工作总结范文
2014/11/17 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
CSS3实现的文字弹出特效
2021/04/16 HTML / CSS
Android开发EditText禁止输入监听及InputFilter字符过滤
2022/06/10 Java/Android