检测用户是否位于代理检测用户是否位于代理(Detecting whether a user is b

2019-05-13 10:22发布

我试图找出我怎么能检测到人登录到我的网站是否使用代理服务器或不。 我读过您可以检测通过嵌入对象(Flash和Java),一个人的真实IP地址。 但是,我一直没能真正找到任何的例子或来源。

我使用PHP和我读过,寻找$_SERVER['HTTP_X_FORWARDED_FOR'], $_SERVER['HTTP_CLIENT_IP']等会检测到大多数的代理,但到目前为止我还没有与TOR测试(能也许TOR没有标志的,但我读过,匿名代理仍然显示HTTP_X_FORWARDED )。 我想如果可能尝试与一个Java servlet这样做。 任何人都可以点我在正确的方向(最好的例子吗?)我看到ha.ckers.org一些代码,但他们只显示客户端,而不是服务器端。

Answer 1:

TOR不提供任何服务器头,如X_FORWARDED_FOR,所以最好的办法是使用所有已知的出口节点的列表。 名单可以在这里找到https://torstat.xenobite.eu/ 。

对于其他代理,你可以看看服务器头。 可能的利益服务器头包括:

HTTP_VIA 
HTTP_X_FORWARDED_FOR
HTTP_FORWARDED_FOR 
HTTP_X_FORWARDED
HTTP_FORWARDED 
HTTP_CLIENT_IP
HTTP_FORWARDED_FOR_IP 
VIA
X_FORWARDED_FOR 
FORWARDED_FOR
X_FORWARDED FORWARDED
CLIENT_IP
FORWARDED_FOR_IP
HTTP_PROXY_CONNECTION

在PHP中,你可以得到这些字段中的值$_SERVER[] superglobal



Answer 2:

通过查找下列头字段你应该有的proxys。

VIA
FORWARDED
USERAGENT_VIA
X_FORWARDED_FOR
PROXY_CONNECTION
XPROXY_CONNECTION
HTTP_PC_REMOTE_ADDR
HTTP_CLIENT_IP

至于阻断TOR你最好使用iptables阻断TOR出口节点。

如果你真的必须确保你可以尝试像嵌入在页面中的一些Flash或Java它发送你回真正的客户端IP一些“半恶意”的事情。 但是,只有有限的范围,因为你可能只是获得本地IP,如果他是在如LAN你喜欢的东西为192.168.1.x



Answer 3:

如果它是一个选项,您可以尝试使用HTTPS。 然后,用户IP应该是你看到。 但是不知道SSL代理背后办公用户。



Answer 4:

无论是Java小程序或Flash应该泄露客户端IP。 我知道,旧版本的Flash有一个安全漏洞,使得它成为可能。 最有可能由现在修补。

我从来没有使用TOR但是从我读它似乎被实现为一种VPN的,所以浏览器不会意识到这一点的。

为什么你需要知道,如果用户是在代理?



文章来源: Detecting whether a user is behind a proxy
标签: php http proxy