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

V站笔记

REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP。如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP。

HTTP_CLIENT_IP 是代理服务器发送的HTTP头。如果是“超级匿名代理”,则返回none值。同样,REMOTE_ADDR也会被替换为这个代理服务器的IP。

HTTP_VIA

$_SERVER['REMOTE_ADDR']; //访问端(有可能是用户,有可能是代理的)IP $_SERVER['HTTP_CLIENT_IP']; //代理端的(有可能存在,可伪造) $_SERVER['HTTP_X_FORWARDED_FOR']; //用户是在哪个IP使用的代理(有可能存在,也可以伪造)

$_SERVER['HTTP_VIA'];//是否使用代理

代理服务器分为透明代理和匿名代理

透明代理会将客户端的请求IP包含在HTTP头中,具体就是$_SERVER['HTTP_X_FORWARDED_FOR']中匿名代理将客户端的IP隐藏起来,IP信息只能在$_SERVER['REMOTE_ADDR']找咯

以下是网上的资料:

一、没有使用代理服务器的情况:

REMOTE_ADDR = 您的 IP HTTP_VIA = 没数值或不显示 HTTP_X_FORWARDED_FOR = 没数值或不显示

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

REMOTE_ADDR = 最后一个代理服务器 IP  HTTP_VIA = 代理服务器 IP HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。

三、使用普通匿名代理服务器的情况:Anonymous Proxies

REMOTE_ADDR = 最后一个代理服务器 IP  HTTP_VIA = 代理服务器 IP HTTP_X_FORWARDED_FOR = 代理服务器 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

隐藏了您的真实IP,但是向访问对象透露了您是使用代理服务器访问他们的。

四、使用欺骗性代理服务器的情况:Distorting Proxies

REMOTE_ADDR = 代理服务器 IP  HTTP_VIA = 代理服务器 IP  HTTP_X_FORWARDED_FOR = 随机的 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。

五、使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)

REMOTE_ADDR = 代理服务器 IP HTTP_VIA = 没数值或不显示 HTTP_X_FORWARDED_FOR = 没数值或不显示 ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏林德熙的博客

win10 uwp MVVM 轻量框架

如果在开发过程,遇到多个页面之间,需要传输信息,那么可能遇到设计的问题。如果因为一个页面内包含多个子页面和多个子页面之间的通信问题找不到一个好的解决方法,那么请...

1041
来自专栏腾讯Bugly的专栏

【译】使用 APK Analyzer 分析你的 APK

本文来自“天天P图攻城狮”公众号(ttpic_dev) 本文是对 《Analyze Your Build with APK Analyzer》 的翻译。 An...

3585
来自专栏我的博客

Nginx前端,apache后端获取真实IP

http://www.stderr.net/apache/rpaf/download/ 需要使用apxs命令(这个命令在httpd-devel,可以使用yum ...

2976
来自专栏kwcode

MVC 控制器中传递dynamic(对象) 给视图

 有时候不想重新定义一个实体,则使用 dynamic 来定义匿名类型。 //匿名类型 传递到前台 Model d...

3305
来自专栏向治洪

application之OnLowMemory()和 OnTrimMemory(level)讲解

1. OnLowMemory       OnLowMemory是Android提供的API,在系统内存不足,所有后台程序(优先级为background的进...

2587
来自专栏菜鸟程序员

Janus高危漏洞深度分析

1333
来自专栏mukekeheart的iOS之旅

安卓调试问题集锦

1、在AndroidManifest.xml文件中修改项目的版本号,即设置android:versionCode和android:versionName时,当手...

24210
来自专栏技术碎碎念

mysql基础 事务的认识和使用

事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务是恢复和并发控制的基本单位。 在关系数据库中,一个事务可以是...

3406
来自专栏PingCAP的专栏

TiKV 是如何存取数据的(上)

本文会详细的介绍 TiKV 是如何处理读写请求的,通过该文档,同学们会知道 TiKV 是如何将一个写请求包含的数据更改存储到系统,并且能读出对应的数据的。

2502
来自专栏林德熙的博客

win10 UWP 发邮件

UWP 下如何发邮件?可以使用mailto:xx?subject=*方式发送? 本文:如何在 UWP 使用默认邮件发邮件。

982

扫码关注云+社区