我正在试图弄清楚如何检测登录我网站的人是否在代理之后。我已经读过你可以通过可嵌入对象(Flash和Java)检测一个人的真实IP地址。但是,我实际上找不到任何示例或来源。
我正在使用PHP而且我已经读过寻找$_SERVER['HTTP_X_FORWARDED_FOR'], $_SERVER['HTTP_CLIENT_IP']
等会检测到大多数代理但是到目前为止我还没能通过TOR测试(可能TOR没有标记那些,但我已经读过匿名代理仍显示HTTP_X_FORWARDED
)。如果可能的话,我想尝试使用java servlet。任何人都可以指出我正确的方向(最好用例子?)我在ha.ckers.org上看到了一些代码,但它们只显示了客户端而不是服务器端。
答案 0 :(得分:5)
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
。
答案 1 :(得分:2)
通过查找以下标题字段,您应该使用一些代理。
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,如果他在例如局域网你得到像192.168.1.x
答案 2 :(得分:2)
如果要检查天气,用户是否正在使用代理,可以进行端口扫描并在发出请求时检查标头。如果代理是不透明的,则这些方法将显示公共IP(通过这种方式,IP地址有公共IP地址和私有IP地址两种类型)。但是,如果它是透明代理,则将无法正常工作。
JobLaunchingGateway
第二种方法是通过使用DNS服务器,为每个用户分配子域。
您还可以检查此站点proxy checker,即使您使用代理,该站点也将显示公共和私有IP地址。
答案 3 :(得分:1)
如果是选项,您可以尝试使用https。然后,您应该可以看到用户IP。但是,不了解SSL代理背后的办公用户。
答案 4 :(得分:1)
Java Applet或Flash都不应泄漏客户端IP。我知道旧版本的Flash存在安全漏洞,使其成为可能。很可能现在已经修补了。
我从未使用过TOR,但从我读到的内容看来它似乎是作为一种VPN实现的,因此浏览器根本不会意识到它。
为什么您需要知道用户是否在代理服务器后面?
答案 5 :(得分:-1)
一旦有了客户端IP地址,最简单的方法就是将其传递给维护TOR出口节点最新列表的服务。例如,您可以使用Ipregistry(免责声明:我正在运行该服务):
https://api.ipregistry.co/89.187.143.81?key=tryout
其中89.187.143.81
必须替换为客户端IP,tryout
必须替换为API密钥。
在输出中,查看字段security -> is_tor_exit
。如果布尔值为true,则您的客户端正在使用Tor。