最近网站打开访问很慢,最开始以为是cc攻击。
分析了下日志才发现,是SemrushBot这个垃圾机器人在疯狂的爬站,不到一天时间爬取了6000多次,我X。
果断研究如何封禁SemrushBot。
SEMrush是什么
SEMrush是一个国外的搜索引擎蜘蛛。不过对你的网站来说除了浪费资源外,没有任何好处。
使用robots.txt封禁
通常来说,只要是遵循robots规则的蜘蛛或者爬虫,都可以使用robots.txt来禁止它爬取。
SemrushBot官方也说遵守这个规则,不过实际上是如果你不是一开始就添加了这个规则,
你都不知道它蜘蛛什么时候才会重新爬取你的robots.txt文件来修改抓取规则。
添加规则如下:
User-agent: SemrushBot
Disallow: /
使用nginx来封禁
如果使用的nginx的话,也可以单独添加下面这串代码到你虚拟机配置文件来实现屏蔽SemrushBot
#禁止SemrushBot垃圾蜘蛛访问
if ($http_user_agent ~* SemrushBot) {
return 444;
}
#禁止多个垃圾蜘蛛访问
if ($http_user_agent ~* (SemrushBot|AhrefsBot) ) {
return 444;
}
上面规则(匹配波浪号后面的字符,直接显示444
;~*:组合一起使用,意思是不区分大小写)返回444
状态码而不是403
,因为444状态码在nginx中有特殊含义。
nginx的444状态是直接由服务器中断连接,不会向客户端再返回任何消息,比返回403更加暴力。若有不足还请补充和指正。
最后于 2020-6-20
被aiyun编辑
,原因: