最近开发网站考虑到做GEO优化的需要,所以在编写robots.txt还特意做了细致区分。结果发现网站后台的redis疯狂的几乎是无限制的产生规则诡异的缓存键,寻求AI之后得知可能是爬虫或者扫描器之类的行为。
于是我远程SSH登录服务器,使用tail动态查询网站日志情况,结果日志是疯狂的增加内容。罪魁祸首就是它:
meta-externalagent/1.1 (+https://developers.facebook.com/docs/sharing/webmasters/crawler)
想到服务器有安装fail2ban,于是再次询问怎么匹配UA进行i屏蔽,于是有了如下操作:
1.首先是编辑一个新的过滤器配置文件:
vi /etc/fail2ban/filter.d/block-meta-crawler.conf
填写如下内容:
[Definition] failregex = ^-.*"(GET|POST|HEAD).*meta-externalagent.*" ignoreregex =
2. 再配置jail启用这个规则
vi /etc/fail2ban/jail.local
填写如下内容:
[block-meta-crawler] enabled = true port = http,https filter = block-meta-crawler logpath = /path/to/your/website maxretry = 1 findtime = 300 action = iptables-multiport[name=block-meta-crawler, port="http,https", protocol=tcp]
注意,logpath换成你的日志绝对路径,然后再
systemctl restart fail2ban
让新的规则就生效了。
这样就让meta(facebook)爬虫meta-externalagent无法爬取了,终于消停了,当然,在nginx配置里也可以怎加一个配置:
# 匹配包含 meta-externalagent 的 User-Agent
if ($http_user_agent ~* "meta-externalagent") {
return 444;
}最后,需要说明的是,如果只是配置nginx,那么日志文件依然膨胀,而使用fail2ban之后,日志清净多了,再次去网站后台检查redis缓存键,发现终于恢复正常了。
截止发完博客,fail2ban 依然在努力的工作:






