前面的文章“宝塔和LNMP环境下Nginx图片防盗链的设置方法”说了,奶爸的一个站流量用超了,最开始以为是图片被盗链导致了。分析了下日志才发现,是AhrefsBot这个垃圾机器人在疯狂的爬站,不到一天时间爬取了6000多次,我X。果断研究如何封禁AhrefsBot。
AhrefsBot是什么
AhrefsBot是一个国外的搜索引擎蜘蛛。不过对你的网站来说除了浪费资源外,没有任何好处。
简单说,AhrefsBot是一个营销网站的爬取蜘蛛,负责分析你网站的链接信息,这个工具对于国内用户来说,有luan用。
详细的介绍你可以查看他们官网的英文解释。https://ahrefs.com/robot
AhrefsBot的IP段
奶爸通过对一天的网站日志进行分析,你们猜猜一共有多少个不同的AhrefsBot蜘蛛ip来抓取网站数据?
居然有561个IP,而且只是不到一天的日志记录。
官方公布的AhrefsBot爬虫IP段如下:
54.36.148.0/24 54.36.149.0/24 54.36.150.0/24 195.154.122.0/24 195.154.123.0/24 195.154.126.0/24 195.154.127.0/24
好了,既然这样变态,下面就开始来想办法封禁AhrefsBot的抓取吧。
直接封AhrefsBot ip段
被AhrefsBot蜘蛛爬取的站服务器用的阿里云,阿里云后台有安全组可以使用,所以直接屏蔽AhrefsBot的IP段,是最简单粗暴,效果立竿见影的方法。
进入阿里云后台,进入你的服务器列表,点击服务器的安全组,配置安全组规则。
按照上图的方法配置,把下面这些ip段全部添加进去就行了。(奶爸是直接把54.36.*.*和195.154.*.*的IP都封了)
54.36.148.0/24 54.36.149.0/24 54.36.150.0/24 195.154.122.0/24 195.154.123.0/24 195.154.126.0/24 195.154.127.0/24
使用robots.txt封禁
通常来说,只要是遵循robots规则的蜘蛛或者爬虫,都可以使用robots.txt来禁止它爬取。AhrefsBot官方也说遵守这个规则,不过实际上是如果你不是一开始就添加了这个规则,你都不知道它蜘蛛什么时候才会重新爬取你的robots.txt文件来修改抓取规则。
所以暴力点,直接封IP比较快。如果要添加,规则如下:
User-agent: AhrefsBot Disallow: /
使用apache或者nginx来封禁
这个方法参考之前的文章:WordPress网站阻止特定机器人和爬虫访问的方法
如果使用的nginx的话,也可以单独添加下面这串代码到你虚拟机配置文件来实现屏蔽AhrefsBot
if ($http_user_agent ~* AhrefsBot) { return 403; }