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 相关文章推荐
main.php
Dec 09 PHP
PHP 获取文件路径(灵活应用__FILE__)
Feb 15 PHP
PHP Class&Object -- 解析PHP实现二叉树
Jun 25 PHP
Codeigniter实现多文件上传并创建多个缩略图
Jun 12 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
Jul 04 PHP
ThinkPHP模版中导入CSS和JS文件的方法
Nov 29 PHP
将FCKeditor导入PHP+SMARTY的实现方法
Jan 15 PHP
php基于GD库画五星红旗的方法
Feb 24 PHP
PHP中SESSION的注销与清除
Apr 16 PHP
PHP将字符串首字母大小写转换的实例
Jan 21 PHP
PHP 获取 ping 时间的实现方法
Sep 29 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 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
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
PHP伪静态写法附代码
2008/06/20 PHP
PHP迅雷、快车、旋风下载专用链转换代码
2010/06/15 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
php正则preg_replace_callback函数用法实例
2015/06/01 PHP
php实现的操作excel类详解
2016/01/15 PHP
js克隆对象、数组的常用方法介绍
2013/09/26 Javascript
jquery数组过滤筛选方法grep()简介
2014/06/06 Javascript
在Linux上用forever实现Node.js项目自启动
2014/07/09 Javascript
js给网页加上背景音乐及选择音效的方法
2015/03/03 Javascript
很棒的Bootstrap选项卡切换效果
2016/07/01 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
基于python3 OpenCV3实现静态图片人脸识别
2018/05/25 Python
python3之模块psutil系统性能信息使用
2018/05/30 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
基于Django静态资源部署404的解决方法
2019/07/28 Python
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
Nike挪威官网:Nike.com (NO)
2018/11/26 全球购物
工业自动化毕业生自荐信范文
2014/01/04 职场文书
护理专业毕业生自荐信范文
2014/01/05 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
党员活动总结
2015/02/04 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
领导新年致辞2016
2015/07/29 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书
同学聚会开幕词
2019/04/02 职场文书
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
Python 实现Mac 屏幕截图详解
2021/10/05 Python
使用Ajax实现无刷新上传文件
2022/04/12 Javascript