网站评论区垃圾留言过滤,关键词拦截配置
网站评论区垃圾留言过滤的核心思路是“先拦机器,再防人工”。
对于零基础站长,最直接的方式是在建站程序后台配置关键词黑名单,配合 Nginx 层频率限制,就能过滤掉大部分广告和恶意灌水。
本文以宝塔面板和 WordPress 为例,步骤同样适用于其他 CMS,最终你能独立完成关键词拦截配置并验证效果。
动手前先确认两件事
开始配置前,先确认你的网站环境。
如果使用宝塔面板,登录后台后进入“网站”列表,找到目标站点,点击“设置”。
如果不用面板,则需要通过 SSH 连接服务器,后续命令默认在 root 权限下执行。
另一个要确认的是评论提交方式。
部分网站使用第三方评论系统(如 Disqus),关键词拦截需要在第三方后台操作,本文方法不适用。
本文针对的是自建评论系统。
后台关键词黑名单配置
这是最基础的过滤层,直接在 CMS 后台完成,不需要写代码。
以 WordPress 为例,进入“设置” -> “讨论”,找到“评论审核”和“评论黑名单”区域。
在“评论黑名单”文本框中,每行填入一个需要拦截的关键词。
例如:
viagra
casino
http://
www.
加微信
代开发票
每一行代表一个独立规则,保存后,包含这些词的评论会自动进入待审核状态或直接被标记为垃圾。
建议初期把“评论必须经人工批准”也勾选上,避免误杀正常留言。
如果你用的是 Typecho 或 Z-Blog,通常在“设置” -> “评论”中能找到类似的黑名单输入框,操作逻辑一致。
关键判断: 后台黑名单适合拦截固定词,但无法应对变形词(如“微*信”)。
遇到这种情况,需要配合下一层的正则匹配。
用正则表达式拦截变形关键词
大多数 CMS 的黑名单支持正则表达式,但需要你手动开启或使用特定语法。
在 WordPress 中,黑名单输入框实际上支持正则,但需要写成 /pattern/ 格式。
例如要拦截“加微信”中间插入任意字符的情况:
/加.{0,3}微.{0,3}信/
这段正则表示“加”和“微”之间允许出现0到3个任意字符,“微”和“信”之间同理。
保存后,包含“加微信”、“加V微信”、“加--微--信”的评论都会被拦截。
注意: 正则写得过于宽泛容易误伤正常评论,建议先在测试评论中验证,再正式启用。
Nginx 层频率限制与 IP 黑名单
如果垃圾评论来自同一个 IP 或短时间内大量提交,后台拦截会消耗服务器资源。
此时可以在 Nginx 层做频率限制。
在宝塔面板中,进入“网站” -> “设置” -> “配置文件”,在 server 块内添加以下配置:
# 定义限制区域,按 IP 限制请求频率
limit_req_zone $binary_remote_addr zone=comment:10m rate=5r/m;
location = /wp-comments-post.php {
limit_req zone=comment burst=2 nodelay;
# 其他原有配置保留
}
这段配置表示:每个 IP 每分钟最多提交5次评论,突发允许2次。
超过限制的请求会返回 503 错误。
保存后重载 Nginx:
nginx -t && nginx -s reload
如果发现某个 IP 持续恶意提交,可以直接在宝塔“安全” -> “IP 黑名单”中添加该 IP,或在 Nginx 配置中使用 deny 1.2.3.4; 拒绝访问。
可独立摘录的结论: Nginx 频率限制是防御批量灌水的有效手段,但 rate 值需要根据网站实际评论量调整,设置过严可能影响正常用户。
验证过滤效果与排查误拦
配置完成后,不要假设一定生效。
用无痕窗口打开文章页,尝试提交一条包含黑名单关键词的评论,观察是否被拦截或进入待审核。
如果仍能直接显示,检查:
- 后台黑名单是否保存成功,关键词是否换行分隔。
- 正则表达式是否被 CMS 正确解析,可临时换成纯文本词测试。
- Nginx 配置是否重载,
nginx -t是否报错。
如果正常评论被误拦,优先检查正则是否过于宽泛,或 Nginx 频率限制是否过低。
建议在 limit_req 后加 burst 参数缓冲,并观察几天日志再调整。
另一个判断条件: 如果垃圾评论来自多个 IP 且内容随机,说明是人工或分布式脚本,此时关键词拦截和频率限制效果有限,需要启用验证码或第三方评论过滤服务。
常见疑问
后台黑名单和 Nginx 拦截有什么区别? 后台黑名单在应用层执行,能识别评论内容;
Nginx 在服务器层执行,只能按 IP 和频率限制。
两者互补,建议同时开启。
关键词拦截会影响正常用户吗? 如果关键词选得太宽泛(如“http”),可能误伤带链接的正常讨论。
建议只拦截明确的广告词,并开启评论审核兜底。
配置后多久生效? 后台黑名单保存即生效;
Nginx 配置需要重载服务,通常几秒内生效。
建议配置后立即用测试评论验证。
需要安装插件吗? 以上方法不依赖插件,纯手动配置即可。
如果希望自动化更新黑名单,可以安装 Akismet 等反垃圾评论插件,但需要额外注册和配置。
完成以上步骤后,你的网站评论区垃圾留言过滤能力会明显提升。
如果后续发现新的垃圾评论特征,只需在后台黑名单中追加关键词,或调整 Nginx 频率限制参数即可。