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 相关文章推荐
C# Assembly类访问程序集信息
Jun 13 PHP
PHP排序之二维数组的按照字母排序实现代码
Aug 13 PHP
php实现统计网站在线人数的方法
May 12 PHP
如何解决PHP无法实现多线程的问题
Sep 25 PHP
YII使用url组件美化管理的方法
Dec 28 PHP
php中array_unshift()修改数组key注意事项分析
May 16 PHP
php操作路径的经典方法(必看篇)
Oct 04 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
Nov 14 PHP
thinkphp的dump函数无输出实例代码
Nov 15 PHP
PHP8.0新功能之Match表达式的使用
Jul 19 PHP
如何利用PHP实现上传图片功能详解
Sep 24 PHP
PHP+Mysql分布式事务与解决方案深入理解
Feb 27 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项目开发中最常用的自定义函数整理
2010/12/02 PHP
PHP中error_reporting函数用法详细介绍
2017/06/11 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
2015/10/23 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
JavaScript SHA512加密算法详细代码
2016/10/06 Javascript
原生js实现查询天气小应用
2016/12/09 Javascript
jQuery+HTML5实现弹出创意搜索框层
2016/12/29 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
2017/05/08 jQuery
webpack将js打包后的map文件详解
2018/02/22 Javascript
浅谈vue.js导入css库(elementUi)的方法
2018/03/09 Javascript
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
python匿名函数lambda原理及实例解析
2020/02/07 Python
Django bulk_create()、update()与数据库事务的效率对比分析
2020/05/15 Python
Python使用jupyter notebook查看ipynb文件过程解析
2020/06/02 Python
瑞典廉价机票预订网站:Seat24
2018/06/19 全球购物
印度民族服装购物网站:BIBA
2019/08/05 全球购物
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
乡镇网格化管理实施方案
2014/03/23 职场文书
高一学生评语大全
2014/04/25 职场文书
机械专业求职信
2014/05/25 职场文书
销售岗位职责范本
2014/06/12 职场文书
2014年党员学习“三严三实”思想汇报
2014/09/15 职场文书
小学生九一八纪念日83周年演讲稿500字
2014/09/17 职场文书
初三毕业评语
2014/12/26 职场文书
教师创先争优承诺书
2015/04/27 职场文书
主题班会开场白
2015/06/01 职场文书
JS封装cavans多种滤镜组件
2022/02/15 Javascript
进行数据处理的6个 Python 代码块分享
2022/04/06 Python