PHP实现检测客户端是否使用代理服务器及其匿名级别


Posted in PHP onJanuary 07, 2015

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

具体来说,就是看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 相关文章推荐
PHP垃圾回收机制简单说明
Jul 22 PHP
php读取文件内容的几种方法详解
Jun 26 PHP
php 解压rar文件及zip文件的方法
May 05 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
Jul 22 PHP
yii使用activeFileField控件实现上传文件与图片的方法
Dec 28 PHP
简单解决微信文章图片防盗链问题
Dec 17 PHP
php 人员权限管理(RBAC)实例(推荐)
May 24 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
Jan 29 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 PHP
php语法检查的方法总结
Jan 21 PHP
PHP中引用类型和值类型功能与用法示例
Feb 26 PHP
php 多个变量指向同一个引用($b = &$a)用法分析
Nov 13 PHP
php模拟用户自动在qq空间发表文章的方法
Jan 07 #PHP
PHP中使用CURL获取页面title例子
Jan 07 #PHP
PHP中调用SVN命令更新网站方法
Jan 07 #PHP
PHP PDO fetch 模式各种参数的输出结果一览
Jan 07 #PHP
PHP中使用php5-ffmpeg撷取视频图片实例
Jan 07 #PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
Jan 07 #PHP
PHP实现的简易版图片相似度比较
Jan 07 #PHP
You might like
php mssql 时间格式问题
2009/01/13 PHP
PHP四大安全策略
2014/03/12 PHP
浅谈php错误提示及查错方法
2015/07/14 PHP
PHP中读取文件的几个方法总结(推荐)
2016/06/03 PHP
laravel 执行迁移回滚示例
2019/10/23 PHP
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
模仿jQuery each函数的链式调用
2009/07/22 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
javascript表单处理具体实现代码(表单、链接、按钮)
2016/05/07 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
JavaScript表单即时验证 验证不成功不能提交
2017/08/31 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
vue基础之事件v-onclick="函数"用法示例
2019/03/11 Javascript
Python 字典(Dictionary)操作详解
2014/03/11 Python
python实现的登陆Discuz!论坛通用代码分享
2014/07/11 Python
Python中处理字符串之endswith()方法的使用简介
2015/05/18 Python
Python读取网页内容的方法
2015/07/30 Python
python 判断矩阵中每行非零个数的方法
2019/01/26 Python
Python使用LDAP做用户认证的方法
2019/06/20 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
2019/11/22 Python
python Tensor和Array对比分析
2020/01/08 Python
pytorch梯度剪裁方式
2020/02/04 Python
在 Python 中使用 7zip 备份文件的操作
2020/12/11 Python
AVIS安飞士奥地利租车官网:提供奥地利、欧洲和全世界汽车租赁
2016/11/29 全球购物
苹果Mac升级:MacSales.com
2017/11/20 全球购物
旅游管理专业学生求职信
2013/09/28 职场文书
扩大国家免疫规划实施方案
2014/03/21 职场文书
教师见习期自我鉴定
2014/04/28 职场文书
世博会口号
2014/06/20 职场文书
考试作弊检讨书
2015/01/27 职场文书
公司管理建议书
2015/09/14 职场文书
小学班主任工作经验交流材料
2015/11/02 职场文书
导游词之无锡唐城
2019/12/12 职场文书