我建立了一个网站,我想限制我的网站中的代理浏览。我有搜索和谷歌这个问题,但我没有得到适当的方式这样做, 有没有办法检测/阻止代理浏览?
答案 0 :(得分:3)
您为什么要尝试阻止代理?
通常,服务器/网站所有者会尝试阻止代理,以防止其成员在服务器/网站上进行恶意攻击时绕过IP禁止或隐藏其身份。虽然我可以理解其背后的原因,但检测代理服务器会带来比解决更多的麻烦。
检测代理的缺点
那我该怎么做呢?
有更好,更安全的方法来保护您的服务器/网站。有许多人可以将它们全部命名,但其中有几个是:
改善代理检测的一些方法
标头检测(对匿名代理不起作用):
$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!") };
}
激进的端口扫描检测(不推荐!!!): *
$ports = array(8080,80,81,1080,6588,8000,3128,553,554,4480);
foreach($ports as $port) {
if (@fsockopen($_SERVER['REMOTE_ADDR'], $port, $errno, $errstr, 30)) {
die("You are using a proxy!");
}
}
*此方法会大大减慢您的服务器速度。它还会产生很多误报,它可能会触发你的访客病毒扫描器/防火墙。
其他检测方法包括Detect and Block TOR exit nodes,并使用Google可以找到的许多公共代理列表。请始终牢记,使用这些方法会使服务器成倍减速!这就是我建议使用不同方法保护您的服务器/网站的原因。
答案 1 :(得分:2)
代理检测非常复杂,因为主机可以在几秒钟内成为代理。大多数代理服务器都会隐藏它们作为代理的事实,因此检查HTTP头是不够的。通过API提供付费和免费解决方案(集成和使用非常简单)。我在另一个帖子中谈过它们,但我也会在这里重新讨论一些来源。
付费:
MaxMind - 通过API检测代理,$ 5/1000查询。作为GeoIP数据库及其欺诈检查系统中最着名的一种,它们还具有代理检测API。
免费:
GetIPIntel - 他们每分钟最多允许15次查询。它正在积极开发中,他们声称使用机器学习来检测IP是否是代理。有各种使用本网站的CMS的插件,根据我的经验,结果非常准确。
如果您只遇到VPN问题,请查看W I T C H.它不是API实现,但它仍然是免费的。
答案 2 :(得分:0)
如果这符合您的需求,您可以查看此ip2proxy库https://github.com/ip2location/ip2proxy-php。
以下是示例代码:
require 'class.IP2Proxy.php';
$db = new \IP2Proxy\Database();
$db->open('./samples/IP2PROXY-IP-PROXYTYPE-COUNTRY-REGION-CITY-ISP.SAMPLE.BIN', \IP2Proxy\Database::FILE_IO);
$records = $db->getAll('1.0.241.135');
if ($records['isProxy'] == 1){
//This is a proxy, you may return 404 or redirect to other custom error page
}