【发布时间】:2017-06-12 05:01:14
【问题描述】:
我想检测一个人是否正在使用代理访问我的网站,如果是,则限制他访问该网站。我在某处找到了这段代码,但我不确定它是否有效。有人可以解释一下它是否足够,或者我是否需要添加任何其他内容以及这段代码是如何工作的?
if (
$_SERVER['HTTP_X_FORWARDED_FOR']
|| $_SERVER['HTTP_X_FORWARDED']
|| $_SERVER['HTTP_FORWARDED_FOR']
|| $_SERVER['HTTP_CLIENT_IP']
|| $_SERVER['HTTP_VIA']
|| in_array($_SERVER['REMOTE_PORT'], array(8080,80,6588,8000,3128,553,554))
|| @fsockopen($_SERVER['REMOTE_ADDR'], 80, $errno, $errstr, 30))
{
exit('Proxy detected');
}
感谢您的帮助:)
【问题讨论】:
-
可能就够了。您无法检查所有
REMOTE_PORTs。fsockopen操作可能会将您的网站标记为恶意软件。 -
为什么端口 80 被视为代理?我不会咨询
http_标头。