gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:04:02 26 4
gpt4 key购买 nike

您好,我正在制作一款游戏,我希望能够判断用户是否在使用代理。如果他们是,则基本上会在他们的帐户上标记一个标志。我可以让它做标志和所有但我不确定如何判断用户是否正在使用代理。我已经看到您可以使用 header ,但我不确定要查找哪个 header 以及如何检查用户是否“拥有” header (除了正常的 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');
}

所以这段代码大部分都有效,当用户是代理时它会很快退出。但是,如果它们不是,则需要很长时间才能加载(大约 10 秒)。有没有办法使用这个脚本但让它工作得更快?

编辑 2

将 fsockopen 的超时从 30 更改为 1,它运行得更快并且仍在运行。谢谢大家的建议:)

最佳答案

在 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 代理:

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

  • 配置了许多 HTTP 代理,以便它们只转发请求而不更改 header 。

  • VPN 安装与 HTTP 代理具有相同的效果 - 即允许 HTTP 请求来自与网络浏览器所在计算机不同的 IP - 而不是一个。

  • 任何 SSH 服务器都可以被其用户用作 SOCKS 代理,因为它不是真正的 HTTP 代理,所以无法真正检测到。

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

您看到什么样的滥用行为,检测 HTTP 代理在哪些方面可能有用?

关于php - 确定用户是否正在使用代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4527345/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com