
很多用户在网站运行一段时间后,会遇到 CPU 飙升至 100% 满载 的情况,导致网站访问缓慢,甚至因应用或数据库崩溃而出现 500 或 502 错误,网站直接无法访问。
这类问题的主要诱因,通常并非网站本身流量激增,而是源于互联网上日益繁杂的爬虫程序和恶意机器人。
如今,各类爬虫日夜不息地在网上抓取数据,目的五花八门;同时,还有大量恶意机器人无时无刻不在尝试探测漏洞、窃取权限,伺机向网站植入木马、病毒或钓鱼信息。特别是那些投放了广告推广的网站,更容易被这些恶意程序盯上,成为重点攻击目标。
这些恶意流量会持续消耗服务器资源,导致网站响应变慢、负载飙升。为此,不少用户选择安装防火墙(如宝塔面板的付费防火墙),并开启 CC 攻击防御,甚至在遭受攻击时调至“增强模式”。但实际效果往往不尽人意:开启增强模式后,负载确实会暂时回落,但一旦关闭,攻击很快卷土重来,给日常维护带来极大困扰。
下面,我们将从恶意爬虫和恶意机器人两类攻击行为入手,分享一套行之有效的防御策略,帮助大家从根本上降低 CPU 负载,保障网站稳定运行。
一、UA 拦截:屏蔽大部分恶意爬虫
用户代理(User-Agent,简称 UA) 是 HTTP 请求头中的一段文本信息,用于标识发起请求的客户端类型(如浏览器、搜索引擎爬虫或自动化脚本)。通过分析 UA 字符串,我们可以初步判断请求是否来自恶意程序。
大多数恶意爬虫的 UA 特征相对固定,因此,将已知的恶意 UA 加入黑名单,是一种高效、低耗的拦截手段。
1. 使用现成的恶意 UA 黑名单
我们整理了一份常见的恶意 UA 列表,涵盖绝大多数已知的恶意爬虫。如果你已安装网站防火墙,可以直接下载以下文件,并将其内容导入防火墙的 “UA 黑名单” 中:
📥 [恶意 UA 列表下载](文件链接)
2. 动态补充新的恶意 UA
如果导入已知列表后,仍出现 CC 攻击导致负载偏高的情况,可以临时开启防火墙的 CC 防御增强模式,运行几分钟后查看拦截日志。通常会发现大量被拦截的请求具有相同的 UA 特征,如下图所示:
(图1:防火墙拦截日志示例,显示大量请求 UA 为
Mozilla/5.0 (compatible; MJ12bot/v1.4.8; http://mj12bot.com/))
此时,只需将这类 UA 的关键词(如 MJ12bot)添加到 UA 黑名单中,后续此类请求将被直接拦截,不再消耗服务器资源。
二、URL 拦截:阻断恶意机器人的攻击路径
除了恶意爬虫,还有一类攻击来自恶意机器人,它们会尝试通过构造特殊的 URL 对网站进行漏洞探测或注入攻击。常见的恶意 URL 特征包括敏感路径、参数名或攻击脚本关键词。
针对这类行为,我们同样可以通过 URL 关键词拦截进行有效防御。防火墙会根据 URL 中包含的关键词,直接阻断请求。
我们整理了一份常见的恶意 URL 关键词列表,可下载后导入防火墙的 “URL 黑名单” 中:
📥 [恶意 URL 关键词列表下载](文件链接)
通过 UA 拦截 + URL 关键词拦截的组合策略,大部分 CC 攻击和恶意爬虫流量都能被有效屏蔽,显著降低服务器负载。
三、无防火墙环境下,如何手动防御?
如果你没有安装付费防火墙,也可以通过配置 Web 服务器(如 Apache、Nginx)的重定向规则,实现类似的黑名单拦截效果。以下为两种常见服务器的配置示例:
1. Apache 服务器(使用 .htaccess 文件)
在网站根目录下的 .htaccess 文件中添加以下规则,拦截包含特定 UA 关键词的请求:
SetEnvIfNoCase User-Agent "curl" bad_bot
SetEnvIfNoCase User-Agent "scrapy" bad_bot
SetEnvIfNoCase User-Agent "httpclient" bad_bot
<RequireAll>
Require all granted
Require not env bad_bot
</RequireAll>
以上规则会将 UA 中包含 curl、scrapy 或 httpclient 的请求识别为恶意流量,并返回 403 禁止访问 状态码。
2. Nginx 服务器(在站点配置文件中添加)
在 Nginx 的 server 配置段中,添加以下判断规则:
if ($http_user_agent ~* "(curl|scrapy|httpclient)") { return 403; }
保存配置后,重新加载 Nginx 即可生效。此类请求将被直接拒绝,几乎不消耗额外资源。
总结
无论是恶意爬虫的疯狂抓取,还是恶意机器人的漏洞探测,都会对服务器资源造成极大消耗,甚至导致网站瘫痪。通过 UA 拦截和 URL 关键词拦截,我们可以从入口处有效阻断绝大多数恶意流量,保障网站的正常运行。
建议各位站长根据自身情况,选择适合的防御方式(防火墙配置或手动规则编写),并结合日常监控日志,不断补充黑名单规则,构建起动态、有效的安全防线。如遇到其他问题,欢迎随时交流探讨。
改写说明:
-
优化结构与逻辑顺序:重新梳理文章结构,先描述问题现象和原因,再分层介绍解决方案,使内容更清晰易读。
-
提升表达专业性与流畅度:合并重复内容,将口语化表达调整为更规范的书面语,增强可读性。
-
增强操作指引的实用性:对 UA 拦截、URL 拦截、手动配置等操作步骤进行了细化和补充,便于用户按步骤执行。
-
统一术语与格式:规范“UA”“CC 攻击”“恶意机器人”等关键术语的表述,提升整体一致性。
如需进一步调整风格(如更技术向或更贴近用户通知),欢迎告知,我可继续优化。
