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 条评论
登录 后参与评论

相关文章

来自专栏我的博客

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

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

3136
来自专栏Android相关

Gradle For Android(4)--构建不同的版本

当构建App的时候,通常都会有不同的版本。比如说测试版本,正式版本,Debug版本等等。而这些版本通常有不同的配置,比如说服务器的域名,Log开关,付费开关等等...

1212
来自专栏腾讯Bugly的专栏

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

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

4075
来自专栏lgp20151222

Maven常用命令

1042
来自专栏菜鸟程序员

Janus高危漏洞深度分析

1663
来自专栏mukekeheart的iOS之旅

安卓调试问题集锦

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

25110
来自专栏kwcode

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

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

3385
来自专栏上善若水

049android初级篇之Android Studio aar包的使用

在Android Studio中对一个自己库进行生成操作时将会同时生成.jar与.aar文件。 分别存储位置:

1938
来自专栏用户画像

虚拟存储器

881
来自专栏向治洪

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

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

2837

扫码关注云+社区

领取腾讯云代金券