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

Php 确定用户是否正在使用代理,php,proxy,http-headers,Php,Proxy,Http Headers,嗨,我正在创建一个游戏,我想知道用户是否在使用代理。如果他们是比它基本上把一个标志对他们的帐户。我可以让它做标记和所有,但我不确定如何判断用户是否正在使用代理。我知道你可以使用头,但我不确定要查找哪一个,以及如何检查用户是否“有”头(除了正常的http\U引用和其他什么) 非常感谢您的帮助 编辑 if ( $_SERVER['HTTP_X_FORWARDED_FOR'] || $_SERVER['HTTP_X_FORWARDED'] || $_SERVER['HTTP_FORWARDED_FOR

嗨,我正在创建一个游戏,我想知道用户是否在使用代理。如果他们是比它基本上把一个标志对他们的帐户。我可以让它做标记和所有,但我不确定如何判断用户是否正在使用代理。我知道你可以使用头,但我不确定要查找哪一个,以及如何检查用户是否“有”头(除了正常的http\U引用和其他什么)

非常感谢您的帮助

编辑

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');
}
因此,这段代码主要起作用,当用户是代理时,它会很快退出。但如果它们不是,则需要花费很长时间才能加载(大约10秒)。是否仍然可以使用此脚本,但要使其工作得更快

编辑2


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

在谷歌搜索了
php-detect-http代理之后,我得出了以下结论:

…还有很多其他有趣的歌曲

编辑:

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

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

  • 许多HTTP代理被配置为只转发请求而不改变头

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

  • 任何SSH服务器都可以由其用户用作SOCKS代理,但由于它不是真正的HTTP代理,因此无法真正检测到

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


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

这是检查用户是否作弊的另一种方法。我们有一些支票,但在我的游戏中作弊的唯一方法是让同一个“集团/公司/联盟”中的一个人控制两个或多个帐户。除此之外,真的没有任何理由作弊。因此,通过检查他们是否使用了代理,这基本上是一种在角落里支持他们并询问他们为什么作弊的方法。他们还有别的东西要证明。查看上面我找到的最好的脚本的编辑以及为什么它对我不起作用。好吧,我只是更改了上面脚本的超时时间,它就起作用了。该脚本似乎正在工作,它阻止了vtunnel.com和hidemyas.com。我不是PHP程序员,但除非我弄错了,否则您的脚本会尝试在远程主机的端口80打开连接。如果该端口被防火墙(家庭用户的标准)阻止,并且数据包被丢弃而不是被拒绝,那么您的脚本将不得不等待连接超时。我会直接删除该检查-它并没有真正的用处,因为许多代理都不使用端口80,而且它还能捕获家中有开放式web服务器的家庭用户。这似乎是捕获大多数代理并允许我进入的事情。当我把那条线从vtunnel.com和hidemyas.com中拿出来时,它会像平常一样通过,但我把那条线放进去,它会阻止它们。我认为这与大多数代理没有打开端口80或其他什么有关。事实上,我相信你的代码捕捉到任何打开端口80的人。我不认为它在广泛使用时会非常可靠,因为它会吸引任何家庭用户使用web服务器。无论如何,它也无法捕获SOCKS代理。