最近安装了 GoAccess 之后,分析日志发现服务器被 MJ12Bot 访问特别严重,CPU 进程经常被占用 70~80%,这让人是极度不爽的。
MJ12bot 是什么?
MJ12bot 是英国 Majestic 搜索引下的一个蜘蛛。这家公司的搜索引擎主要是用来绘制互联网地图的,然后用这个互联网地图数据来为企业提供互联网营销数据服务
当然它大多是无害的,。但是它经常慧占用我们服务器大量资源。
如何屏蔽它
不要尝试通过 Ban IP 的方式屏蔽,MJ12bot 属于分布式爬虫,Ban IP 效果微乎其微。一般常用 robots.txt 标准屏蔽为宜。
通过 robots 屏蔽 MJ12bot
MJ12bot 遵守 robots.txt 标准。如果希望机器人抓取自己网站,请将以下文本添加到您的 robots.txt:
User-agent: MJ12bot
Disallow: /
如果你也跟我一样,已经在 robots.txt 中已经加入了上述屏蔽字符,但 MJ12bot 任然困扰着你可以尝试发送邮件告知 Majestic 官方。可以通过电子邮件告知Majestic 官方:bot@majestic12.co.uk ,我遇到的情况就是已经在 robotx 加入了屏蔽指令,但 MJ12bot 任然困扰着我。
通过 Nginx 屏蔽 MJ12bot
如果已经在 robots 中屏蔽了 MJ12bot 的话,肯定不是立刻见效的。如果任然遭遇了大量访问侵扰,可以在 nginx 配置文件加入一下代码达到屏蔽 MJ12bot 的效果。
#屏蔽非常见蜘蛛
if ($http_user_agent ~* (SemrushBot|python|MJ12bot|MJ12bot/v1.4.8|AhrefsBot|AhrefsBot|hubspot|opensiteexplorer|leiki|webmeup))
{
return 444;
}
这里买的屏蔽的蜘蛛类型也可以自己优化一下,上述屏蔽类型非搜索引擎蜘蛛,效果见下图,444 是 nginx 独有的,收到请求不反馈结果。
通过 CDN 节点屏蔽 MJ12bot 的 User-Agent
在上述 nginx 屏蔽的方式虽然可以让 MJ12bot 知道当前资源不可达,但服务器还是会收到一些请求。如果网站有使用 阿里云CDN 、阿里云全站加速 或者腾讯云 CDN 、腾讯云全站加速 的话,可以在配置里面启动 User-Agent 屏蔽,把 MJ12bot 加入黑名单 也可以达到屏蔽效果,这样的话源站就不会收到请求,源站就不用了处理这些无意义请求。
阿里云屏蔽 MJ12bot 的 User-Agent
1.打开 全站加速/CDN
控制面板,选择要配置的 域名
点击配置
按钮进入设置。
2.进入配置也没之后在 访问控制
里面选择 User-Agent黑/白名单
启用配置之后,在黑名单里面加入 MJ12bot
腾讯云屏蔽 MJ12bot 的 User-Agent
1.打开腾讯云 控制面板,在 域名管理 > 访问控制 > UA黑白名单配置
2.新增规则,选择黑名单,内容为 MJ12bot ,生效类型为全部即可。