确定用户是否正在使用代理

jef*_*n24 19 php proxy http-headers

嗨,我正在创建一个游戏,我希望能够判断用户是否正在使用代理.如果它们比它基本上在他们的帐户上放置一个标志.我可以让它做旗帜,但我不确定如何判断用户是否正在使用代理.我已经看到你可以使用标题,但我不确定要查找哪些内容以及如何检查用户是否"有"标题(除了正常的http_referrer以外还有什么).

任何帮助是极大的赞赏.

编辑

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');
}
Run Code Online (Sandbox Code Playgroud)

所以这个代码大多数都可以工作,当用户是代理时,它会快速退出.但是当它们不是它需要永远加载(大约10秒).反正有没有使用这个脚本,但让它更快?

编辑2

将fsockopen上的超时从30更改为1,它的工作速度更快,并且仍在工作.感谢大家的建议:)

thk*_*ala 7

在搜索Google之后,php detect http proxies我想出了以下内容:

http://forums.digitalpoint.com/showthread.php?t=58964

http://forums.digitalpoint.com/showthread.php?t=365467

http://www.roscripts.com/PHP_Proxy_Detector-75.html

......还有很多其他有趣的热门歌曲.

编辑:

AFAIK无法绝对确定地或安全地检测HTTP代理:

  • 匿名者服务不会在他们的请求中添加正确的标头 - 事实上他们会删除其中的一些标头.您需要保留最流行的匿名者服务及其IP地址块的列表,并以这种方式检测它们.您可以使用一些在线列表,但它们远非完整 - 特别是如果您认为大多数大型机构(ISP,公司,大学等)为其用户提供代理服务器.有些人甚至要求他们的用户使用它们.

  • 许多HTTP代理都配置为只需转发请求而不更改标头.

  • VPN安装与HTTP代理具有相同的效果 - 即允许HTTP请求来自与Web broswer所在的计算机不同的IP - 而不是一个.

  • 任何SSH服务器都可以被其用户用作SOCKS代理,这实际上是不可检测的,因为它实际上不是HTTP代理.

  • 有许多合法的HTTP代理不能公开访问.例如,有一些HTTP代理产品安装在家庭网络中,并为整个网络提供家长控制和可疑内容(色情,网络钓鱼站点等)过滤.

你看到了什么样的滥用,检测HTTP代理可能有用吗?