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 相关文章推荐
第五节 克隆 [5]
Oct 09 PHP
深思 PHP 数组遍历的差异(array_diff 的实现)
Mar 23 PHP
PHP array_flip() 删除重复数组元素专用函数
May 16 PHP
PHP冒泡排序算法代码详细解读
Jul 17 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
Dec 16 PHP
基于MySQL分区性能的详细介绍
May 02 PHP
PHP时间格式控制符对照表分享
Jul 23 PHP
php实现删除指定目录下相关文件的方法
Oct 20 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
Nov 23 PHP
php中namespace use用法实例分析
Jan 22 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
Dec 07 PHP
PHP反射实际应用示例
Apr 03 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中常用的预定义变量小结
2012/05/09 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
零基础php编程好学吗
2019/10/11 PHP
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
juqery 学习之六 CSS--css、位置、宽高
2011/02/11 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
Javascript Object 对象学习笔记
2014/12/17 Javascript
jQuery实现不断闪烁文字的方法
2015/05/15 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
基于Bootstrap实现的下拉菜单手机端不能选择菜单项的原因附解决办法
2016/07/22 Javascript
jQuery基本选择器之标签名选择器
2016/09/03 Javascript
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
2017/09/30 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
JS实现的A*寻路算法详解
2018/12/14 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
2019/06/04 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
jquery向后台提交数组的代码分析
2020/02/20 jQuery
python用户管理系统的实例讲解
2017/12/23 Python
pandas修改DataFrame列名的方法
2018/04/08 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
Python实现封装打包自己写的代码,被python import
2020/07/12 Python
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
环境科学专业大学生自荐信格式
2013/09/21 职场文书
大学总结自我鉴定
2014/01/18 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
2014小学教师个人工作总结
2014/11/10 职场文书
民主评议党员个人总结
2015/02/13 职场文书
python Polars库的使用简介
2021/04/21 Python
详解盒子端CSS动画性能提升
2021/05/24 HTML / CSS
python3 字符串str和bytes相互转换
2022/03/23 Python