我正在寻找可靠,准确/快速的方法,可以添加一些htaccess代码来阻止来自国家/ IP的网站访问,这些国家/ IP不在我希望允许访问的白名单列表中。我看了https://www.ip2location.com/free/visitor-blocker似乎提供了一个解决方案 - 对于我想允许访问的4个允许的国家 - 它创建了一个4.1MB的htaccess文件!当有人试图查看该网站时,这是否意味着访问速度缓慢?我想使用像这样的免费服务意味着数据可能远远不够全面?
是否有人建议允许来自少数几个国家/地区的访问者访问某个网站?
答案 0 :(得分:0)
听起来你使用的服务基本上试图强制黑名单。如果你查看htaccess文件,我相信你将是一长串硬编码IP块。
在我看来,处理地理黑名单是一种可怕的方法。对于您原来的问题 - 没有“最可靠,最准确,最快捷”的方法。这些是单独的类别,您需要优先选择一个。
对于性能,您可以考虑在路由级别/ dns服务器/代理上列入黑名单。这显然不是性能方面最快捷的方式。存在Apache模块,允许您使用本地数据库将传入的IP地址与来自列入黑名单的国家/地区的已知IP块列表进行比较。其中一个主要问题是您需要不断更新数据库以接收新的IP块。
在我看来,执行此操作的“最佳”方法是使用服务器端代码在应用程序层进行简单的重定向。存在多个地理API,您可以在其中发送IP或主机名并返回原籍国。一个例子:
$xml= new SimpleXMLElement(file_get_contents('http://www.freegeoip.net/xml/{IP_or_hostname}'));
if($xml->CountryCode == "US") {
header('Location: http://www.google.com');
}
答案 1 :(得分:0)
有两种方法可以阻止Web服务器中的访问者。一个是使用防火墙(.htaccess等),另一个是使用服务器端脚本(PHP等)。
如果您担心防火墙选项的性能,那么您可以从http://lite.ip2location.com下载IP2Location LITE数据库并在本地服务器中实施该数据库。对于每个连接,您查询访问者IP地址并查找其国家/地区。您可以使用PHP代码重定向或阻止它们。请在https://www.ip2location.com/tutorials/redirect-web-visitors-by-country-using-php-and-mysql-database
中找到完整的步骤还有另一种选择使用远程地理定位API。但是,由于网络延迟,我们不建议使用此方法。由于API查询,它会降低所有用户体验。