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 相关文章推荐
用PHP和ACCESS写聊天室(九)
Oct 09 PHP
php设计模式 Composite (组合模式)
Jun 26 PHP
PHP几个数学计算的内部函数学习整理
Aug 06 PHP
深入PHP FTP类的详解
Jun 13 PHP
PHP PDO fetch 模式各种参数的输出结果一览
Jan 07 PHP
php遍历删除整个目录及文件的方法
Mar 13 PHP
PHP使用PHPexcel导入导出数据的方法
Nov 14 PHP
深入讲解PHP的Yii框架中的属性(Property)
Mar 18 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
Apr 01 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
Jun 17 PHP
利用PHP计算有多少小于当前数字的数字方法示例
Aug 26 PHP
通过PHP实现用户注册后邮箱验证激活
Nov 10 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实现Soap通讯的方法
2014/11/03 PHP
php简单图像创建入门实例
2015/06/10 PHP
php实现微信发红包
2015/12/05 PHP
javascript &&和||运算法的另类使用技巧
2009/11/28 Javascript
javascript 特性检测并非浏览器检测
2010/01/15 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
2013/11/20 Javascript
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
基于jQuery创建鼠标悬停效果的方法
2015/03/07 Javascript
Angular2 Service实现简单音乐播放器服务
2017/02/24 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
2017/12/11 jQuery
浅谈vue引入css,less遇到的坑和解决方法
2018/01/20 Javascript
详解如何在vue项目中引入elementUI组件
2018/02/11 Javascript
一个Vue页面的内存泄露分析详解
2018/06/25 Javascript
vue实现表单录入小案例
2019/09/27 Javascript
JS数组方法reduce的用法实例分析
2020/03/03 Javascript
微信小程序实现多选框功能的实例代码
2020/06/24 Javascript
js实现弹幕墙效果
2020/12/10 Javascript
python监控linux内存并写入mongodb(推荐)
2017/09/11 Python
python中WSGI是什么,Python应用WSGI详解
2017/11/24 Python
使用python和Django完成博客数据库的迁移方法
2018/01/05 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
python实现的config文件读写功能示例
2019/09/24 Python
python实现飞行棋游戏
2020/02/05 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
通过Canvas及File API缩放并上传图片完整示例
2013/08/08 HTML / CSS
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
美国最大的在线生存商店:Survival Frog
2020/12/13 全球购物
采购员的工作职责
2013/12/26 职场文书
大学生村官事迹材料
2014/01/21 职场文书
总经理司机职责
2014/02/02 职场文书
美术社团活动总结
2014/06/27 职场文书
中层领导干部群众路线对照检查材料思想汇报
2014/10/02 职场文书
作风建设剖析材料
2014/10/06 职场文书
颐和园导游词
2015/01/30 职场文书
酒会开场白大全
2015/06/01 职场文书
Matlab如何实现矩阵复制扩充
2021/06/02 Python