我们的业务需要阻止来自某些地区或国家/地区的访问者。当访问者来自某些区域时,我们希望显示403错误页面。
现在我们可以做的是,在每次请求时,使用任何第三方服务(如Telize或ipapi.co)获取访问者的IP地址并获取该IP的国家/地区名称,如果来自该国家/地区,请停止并显示错误页面。
但问题是,它将检查所有其他访问者,如果我们对每个请求进行卷曲,它肯定会减慢我们的网站速度。
我们有什么办法可以在不使用任何第三方服务或卷曲请求或任何不会减慢我们网站速度的情况下从IP地址获取国家/地区名称?
我们正在使用PHP&关于VPS的Symfony 3框架,以及速度和性能对我们来说非常重要,以防它对您有所帮助。
目前我们想阻止来自喀麦隆的访问者,是否为喀麦隆分配了任何IP范围?
答案 0 :(得分:2)
您可以在https://www.ip2location.com/free/visitor-blocker为喀麦隆IP范围生成htaccess拒绝文件,并在htaccess级别阻止它们,这将更快。
答案 1 :(得分:1)
您可以使用Maxmind GeoIP library for php。
您的想法是下载包含世界上所有IP的地理信息的数据库(只是一个文件)。由于数据库位于您的服务器上,并且您使用该库调用它,因此不会减慢您的服务器速度。实际上,从IP获取国家代码的速度非常快,性能影响可以忽略不计。
数据库会定期更新,因此您可以定期重新下载以保持最新状态。您可以获取有关可下载数据库here的详细信息。