宝塔面板怎么拦截恶意蜘蛛

chinaz
chinaz 正式会员超兽战士
发布于 2026-10-07 19:15 ·1 浏览 ·0 回复

按这篇教程做完,你就能用宝塔面板自带的日志和 Nginx 配置,把采集器、刷流量的恶意蜘蛛挡在服务器外面,同时不影响百度、谷歌的正常收录。

第一步:从网站日志里揪出恶意蜘蛛的 UA

这一步是查出「谁在爬」,做完你会拿到一份按访问次数排序的 User-Agent 列表。

打开宝塔面板左侧「网站」,在站点列表里点你的域名右侧的「设置」,弹窗左侧菜单选「网站日志」,确认日志是开启状态。更快的办法是直接用 SSH 敲一条命令:

awk -F'"' '{print $6}' /www/wwwlogs/你的域名.log | sort | uniq -c | sort -rn | head -30

它会输出访问量最高的 30 个 UA 和对应次数。像 AhrefsBot、SemrushBot、MJ12bot、DotBot、BLEXBot、Bytespider、PetalBot、MegaIndex 这类,一天刷几万次又没有真实用户价值的,就是本次要拦的对象。

注意:日志文件路径是 /www/wwwlogs/域名.log,日志格式是 Nginx 默认的 combined,所以第 6 个引号字段才是 UA。如果你的日志里是空的,通常是站点设置里「网站日志」被关了,或者日志被「日志切割」任务清掉了。

第二步:在 Nginx 配置里加 UA 拦截规则

这一步是把黑名单落到配置里,做完恶意蜘蛛会直接被拒绝访问。

回到站点「设置」→ 左侧「配置文件」,找到 server { ... } 这一段,在里面加入:

if ($http_user_agent ~* (AhrefsBot|SemrushBot|MJ12bot|DotBot|BLEXBot|Bytespider|PetalBot|MegaIndex|ZoominfoBot)) {
    return 444;
}

~* 表示不区分大小写匹配。return 444 是 Nginx 特有的状态码,意思是直接断开连接、不返回任何内容,比 return 403 更省带宽,恶意爬虫也拿不到任何提示。保存后宝塔会自己重载 Nginx,不需要手动重启。

注意:改之前先把原有配置全文复制一份存到本地记事本,改坏了能立刻还原。

注意:黑名单里绝对不能出现 Baiduspider、Googlebot、bingbot、Sogou spider 这些正规搜索引擎,多打一个字母都可能导致网站掉收录、掉排名。不确定某个 UA 是不是正规蜘蛛时,先只加日志里确认过的高频可疑项。

第三步:处理空 UA 和伪装成浏览器的采集器

有些采集程序干脆不带 UA。在同一个 server 块里再加一条:

if ($http_user_agent = "") {
    return 403;
}

保存后,完全没有 UA 的请求会被拒掉。

注意:少数老旧客户端、部分 API 调用工具确实不带 UA,如果你的站点有这类正常流量(比如 App 接口),就别加这条规则,或者改成只对特定目录生效。

第四步:用 Nginx 防火墙插件批量维护黑名单

如果上面手写规则嫌麻烦,可以在左侧「软件商店」搜索「Nginx防火墙」安装(这是宝塔的付费插件,有试用期)。安装后进入「Nginx防火墙」→「全局配置」→「UA黑名单」,一行填一个 UA 或正则,还有预设的「恶意蜘蛛」规则和「蜘蛛池」放行白名单,适合站点多、需要长期维护的场景。

第五步:验证拦截是否生效

回到 SSH,用 curl 模拟不同蜘蛛请求:

curl -I -A "AhrefsBot" https://你的域名
curl -I -A "Baiduspider" https://你的域名

第一条应该返回 403 或者直接连接被重置,第二条应该正常返回 200。两条结果都符合,说明规则生效且没有误伤。

注意:UA 是可以伪造的,真正有攻击意图的采集器会伪装成浏览器。所以这套方案拦的是「讲规矩的恶意蜘蛛」;对付伪造 UA 的,需要配合频率限制(Nginx 防火墙里的 CC 防护)或按 IP 段封禁。

小结

  • 先用 /www/wwwlogs/域名.log 和 awk 命令找出高频可疑 UA,别凭感觉封。
  • 在站点「配置文件」的 server 块里用 if ($http_user_agent ~* (...)) 加规则,返回 444 最省资源。
  • 正规搜索引擎的 UA 一个都不能写进黑名单,改配置前先备份。
  • 空 UA 拦截要视业务决定,有 App 接口的站点慎用。
  • 站点多、要长期维护,就用 Nginx 防火墙插件的 UA 黑名单和蜘蛛池白名单。
  • 改完必须用 curl 分别模拟恶意蜘蛛和百度蜘蛛验证一遍。
版权声明:本文来自 GJ站长论坛《宝塔面板怎么拦截恶意蜘蛛》
原文链接:https://www.gj0.com/thread-490.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~