PHP实例分享判断客户端是否使用代理服务器及其匿名级别


Posted in PHP onJune 04, 2014

要判断客户端是否使用代理服务器,可以从客户端所发送的环境变量信息来判断。

具体来说,就是看HTTP_VIA字段,如果这个字段设置了,说明客户端使用了代理服务器。

匿名级别可以参考下表来判断。

给出一个应用例子,可以挂上代理试试效果: http://ip.mixsec.org/

一、没有使用代理服务器的情况:
     REMOTE_ADDR = 您的 IP
     HTTP_VIA = 没数值或不显示
     HTTP_X_FORWARDED_FOR = 没数值或不显示

二、使用透明代理服务器的情况:Transparent Proxies

    REMOTE_ADDR = 代理服务器 IP
    HTTP_VIA = 代理服务器 IP (补充:这个字段由代理服务器填充,有时会填充网关信息等)
    HTTP_X_FORWARDED_FOR = 您的真实 IP
    这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。

三、使用普通匿名代理服务器的情况:Anonymous Proxies
    REMOTE_ADDR = 代理服务器 IP
    HTTP_VIA = 代理服务器 IP (补充:这个字段由代理服务器填充,有时会填充网关信息等)
    HTTP_X_FORWARDED_FOR = 代理服务器 IP
    隐藏了您的真实IP,但是向访问对象透露了您是使用代理服务器访问他们的。

四、使用欺骗性代理服务器的情况:Distorting Proxies
    REMOTE_ADDR = 代理服务器 IP
    HTTP_VIA = 代理服务器 IP  (补充:这个字段由代理服务器填充,有时会填充网关信息等)
    HTTP_X_FORWARDED_FOR = 随机的 IP
    告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。

五、使用高匿名代理服务器的情况:High Anonymity Proxies
   REMOTE_ADDR = 代理服务器 IP
   HTTP_VIA = 没数值或不显示
   HTTP_X_FORWARDED_FOR = 没数值或不显示
   完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象。

除此之外,可以通过proxy judges总 结其他一些可供参考的判定信息,一遍于在实践中加以利用。

最后写一个php例子,仅供大家参考:

if(!empty($_SERVER['HTTP_VIA']))    //使用了代理
{
    if(!isset($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
        //Anonymous Proxies    普通匿名代理服务器
        //代理IP地址为 $_SERVER['REMOTE_ADDR']
   }
   else
   {
        //Transparent Proxies 透明代理服务器
        //代理IP地址为 $_SERVER['REMOTE_ADDR']
        //真实ip地址为 $_SERVER['HTTP_X_FORWARDED_FOR']
   }
}
else    //没有代理或者是高匿名代理
{
    //真实ip地址为 $_SERVER['REMOTE_ADDR']
}
PHP 相关文章推荐
linux iconv方法的使用
Oct 01 PHP
介绍一些PHP判断变量的函数
Apr 24 PHP
Destoon模板制作简明教程
Jun 20 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
Sep 29 PHP
php自定义函数实现JS的escape的方法示例
Jul 07 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
Sep 23 PHP
Thinkphp整合微信支付功能
Dec 14 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
Feb 07 PHP
php pdo操作数据库示例
Mar 10 PHP
thinkPHP5.0框架应用请求生命周期分析
Mar 25 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
浅谈PHP调用Webservice思路及源码分享
Jun 04 #PHP
利用谷歌 Translate API制作自己的翻译脚本
Jun 04 #PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
Jun 04 #PHP
PHP 如何获取二维数组中某个key的集合
Jun 03 #PHP
PHP 二维数组根据某个字段排序的具体实现
Jun 03 #PHP
php 批量添加多行文本框textarea一行一个
Jun 03 #PHP
PHP解决URL中文GBK乱码问题的两种方法
Jun 03 #PHP
You might like
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
javascript中的this详解
2014/12/08 Javascript
node.js中的fs.readFileSync方法使用说明
2014/12/15 Javascript
jQuery实现图片左右滚动特效
2020/04/20 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
用JS实现图片轮播效果代码(一)
2016/06/26 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
获取select的value、text值的简单示例(jquery与javascript)
2016/12/07 Javascript
AngularJS自定义控件实例详解
2016/12/13 Javascript
微信小程序实现分享朋友圈的图片功能示例
2019/01/18 Javascript
小程序getLocation需要在app.json中声明permission字段
2019/04/04 Javascript
echarts多条折线图动态分层的实现方法
2019/05/24 Javascript
JS操作json对象key、value的常用方法分析
2019/10/29 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
Python基于time模块求程序运行时间的方法
2017/09/18 Python
Django实现分页功能
2018/07/02 Python
Python 串口读写的实现方法
2019/06/12 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
vscode配置anaconda3的方法步骤
2020/08/08 Python
next在python中返回迭代器的实例方法
2020/12/15 Python
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
英国顶尖手表珠宝品牌独家授权经销商:HS Johnson
2020/10/28 全球购物
荷兰美妆护肤品海淘网站:Beautinow(中文)
2020/11/22 全球购物
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
《绿色蝈蝈》教学反思
2014/03/02 职场文书
小学感恩教育活动总结
2014/07/07 职场文书
2014年党务公开工作总结
2014/12/09 职场文书
社区结对共建协议书
2016/03/23 职场文书
2019年“红色之旅”心得体会1000字(3篇)
2019/09/27 职场文书
python批量更改目录名/文件名的方法
2021/04/18 Python
虚拟机linux端mysql数据库无法远程访问的解决办法
2021/05/26 MySQL
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python