一秒切换多款爬虫UA扫描网站?Nginx一键封禁恶意IP,杜绝伪装探测

本站真实攻击日志案例

翻看近期Nginx日志,发现一条很典型的恶意扫描行为,IP:88.151.32.188,短短1秒内,轮番切换多种正规爬虫UA访问站点:

  • 伪装 ChatGPT-User AI爬虫
  • 伪装 Amazonbot亚马逊爬虫
  • 伪装 Google/Google-Extended谷歌爬虫
  • 伪装 anthropic-ai(Claude)、CCBot归档爬虫

并且定向抓取 manifest.json、stats.json、.next配置文件,专门探测网站程序架构、主题源码、站点版本指纹,属于针对性漏洞探测。

之前配置的UA黑名单,可以拦截单一爬虫,但这类扫描器会批量轮换UA绕过规则,最优解法:直接封禁整恶意IP,从源头阻断访问。

区分:正常爬虫 VS 伪装扫描爬虫

很多新手分不清,容易误封正规爬虫,简单区分:

正规爬虫(可放行)

单一固定UA、访问间隔规整、IP固定官方网段、只抓取页面内容,不会批量探测配置文件。

恶意伪装扫描(必须封禁)

  1. 同一IP极短时间,切换十几种爬虫UA
  2. 专门抓取json、配置、源码类敏感文件
  3. 无视robots规则、高频批量请求、行为杂乱
  4. 境外IP居多,目的摸排站点漏洞,后期发起攻击

三种Nginx封禁IP方式(新手按需选择)

适配宝塔、原生Nginx,三种方案由简到优,互不冲突,直接复制使用。

方式1:站点单独封禁(最快,临时封禁首选)

直接写入网站conf的server{}区块内,即时生效,只针对当前网站生效。

# 封禁单个恶意扫描IP
deny 88.151.32.188;

方式2:全局黑名单封禁(推荐,全站统一管控)

适合恶意IP较多场景,单独建立IP黑名单文件,方便后期增删IP,不用改动网站配置。

  1. 新建黑名单文件
nano /etc/nginx/block_ip.conf
  1. 写入需要封禁IP,可批量添加
# 伪装爬虫扫描IP
deny 88.151.32.188;
# 可继续新增其他恶意IP
deny 66.132.195.113;
  1. 在nginx.conf全局引入黑名单文件
include /etc/nginx/block_ip.conf;

方式3:封禁整段IP段(批量拦截扫描网段)

如果该网段持续批量扫描,直接封禁整个网段,彻底阻断:

# 封禁整个IP网段写法
deny 88.151.0.0/16;

配置重载+效果核验命令

修改完规则,务必校验语法,避免网站宕机:

# 校验配置无误
nginx -t
# 平滑重载,不中断网站访问
systemctl reload nginx

# 查看该IP拦截日志,出现403即为封禁成功
grep 88.151.32.188 /var/log/nginx/access.log

双重防护搭配(防护拉满)

1、UA黑名单:拦截常规垃圾爬虫,适配固定特征爬虫

2、IP黑名单:拦截轮换UA、绕过规则的恶意扫描IP

二者配合,既能拦截批量爬虫,又能封堵伪装绕过的扫描器,适配WordPress博客长期防护。

常见疑问

1、封禁IP会不会误封正常访客?

不会。这类批量轮换爬虫UA的IP,全部为黑产扫描节点、境外代理IP,无真实普通访客,放心封禁。

2、和之前爬虫UA规则冲突吗?

完全不冲突。UA拦截防批量爬虫,IP拦截防绕过扫描,互补防护。

3、如何快速找出同类恶意扫描IP?

执行一键筛选命令,快速筛选一秒多次切换UA的异常IP:

grep -E "GPTBot|ChatGPT|anthropic" /var/log/nginx/access.log

最后

现在黑产扫描器越来越智能,不再固定单一爬虫UA,会随机伪装各类正规爬虫绕过拦截。

日常运维小技巧:看到同一IP短时间多UA访问、探测敏感配置文件,不用犹豫,直接封禁即可。不用等到网站被摸排漏洞、植入后门再处理,提前封禁,省心省力,减少服务器无效损耗。

本文首发于 58Linux技术博客,专注Ubuntu桌面使用、Linux服务器运维与网站搭建实战。

发表评论

粤ICP备10052831号 | © 2026 58Linux 技术笔记. All Rights Reserved. | 联系我们 | 关于本站
本站内容开放共享,仅供学习交流 | 专注 Ubuntu & Linux 实战教程
Built with GeneratePress