PHP - 如果使用像hidemyass

时间:2017-06-12 13:32:49

标签: php proxy

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

$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访问我的localhost网站,它阻止我查看返回“你正在使用代理!”。我尝试使用hidemyass和另一个代理检测器,我得到了相同的结果。这是hidemyass类型代理站点的我想要的。现在我的问题是ngrok还使用代理服务器,因为它阻止我访问?我读了一些人的评论,HTTP_X_FORWARDED_FOR对他的互联网直接连接返回误报。我试图删除这个和wooo,不再检测hidemyass或其他代理。可通过代理访问网站。所以,我认为这很重要。所以,我的第二个问题是HTTP_X_FORWARDED_FOR真的会返回假阳性吗?或者是因为ngrok也使用代理,即使我在直接连接上也无法访问我的网站?是否完全可以使用HTTP_X_FORWARDED_FOR?您在此脚本中看到的任何散文或缺点请告诉我。

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

如果ASN相同,那么用户就是一个非常奇怪的ISP,它可以通过不同的方式重定向网络流量。

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

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

答案 1 :(得分:0)

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

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

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

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

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