PHP - 代理检测并阻止网站访问,如果使用代理服务器,如 hidemyass



我想在我的网站上集成一个好的代理检测器脚本。因此,在搜索时我得到了这个代码。

$proxy_headers = array(
'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'
);
foreach($proxy_headers as $x){
if (isset($_SERVER[$x])) die("You are using a proxy!");
}

然后我尝试通过 ngrok 访问我的本地主机网站,它阻止我查看它返回"您正在使用代理!我尝试使用hidemyass和另一个代理检测器,我得到了相同的结果。这就是我在hidemyass类型代理站点的情况下想要的。现在我的问题是 ngrok 是否也使用代理服务器,因此它阻止了我的访问?我读到某人的评论,HTTP_X_FORWARDED_FOR为他的互联网直接连接返回误报。我试图删除它并呜,不再在 hidemyass 或其他设备上检测代理。网站可通过代理访问。所以,我想这很重要。所以,我的第二个问题是HTTP_X_FORWARDED_FOR真的会返回误报吗?还是因为 ngrok 也使用了代理,即使我在直接连接上我也无法访问我的网站?使用HTTP_X_FORWARDED_FOR完全可以吗?你在这个脚本中看到的任何散文或缺点,请告诉我。

没有明确的标准来简单地通过HTTP标头对VPN或Web代理服务器后面的用户进行分类,

您还阻止了许多在其合法网络中使用 Web 代理的用户,例如大学校园或具有严格网上冲浪策略的政府机构。

您最好的机会是获取与 AS 编号相关的 IP 地址和与之相关的 IP 范围,并阻止 Web 服务器中的整个 IP 空间或将它们重定向到特定的 Web 服务器。

识别使用互联网代理的用户的另一种最佳方法是使用Flash中可用的Flash的P2P作为RTMFP协议,并且可以与 https://github.com/randunel/ArcusNode 一起使用(另见 https://github.com/OpenRTMFP)。因此,在服务器上,您应该等待消息并通过闪存记录远程IP,然后将其与您的IP REMOTE_ADDR进行比较,如果不相等,则用户可能在防火墙后面。

我还建议为两个 IP 获取 AS 编号,如果两个 IP ASN 不同,那么用户肯定在滥用

如果 ASN 相等,则用户落后于 ISP,该 ISP 很奇怪地通过不同的 IP 重定向网络流量。

要获取 IP 的 ASN,您可以执行命令:

whois -h whois.cymru.com "216.90.108.31" |grep -v 'AS      |'|grep -v whois.cymru.com| awk '{print $1}'

代理检测是一个复杂的问题,需要不断关注才能正确处理。大多数代理/VPN 不会显示任何转发标头,因此您将无法使用该代码捕获足够的代理连接。

您可能会发现一些有用的在线服务

GetIPIntel.net - 通过API免费提供代理/VPN检测。他们使用机器学习和概率论技术来确定 IP 地址的分数。

Maxmind - 通过API提供代理/VPN检测。它目前列为旧版服务。

W I T C H - 查看在服务器端实现的MSS值,这些值可以捕获OpenVPN连接。

相关内容

最新更新