船说 CMS 评论灌水怎么拦截
学完这篇,你能把船说 CMS 的评论灌水从「天天删」变成「基本不用管」——前台堵、后台滤、服务器兜底三层都配上。
灌水评论一般分三种:机器批量发的带链接广告、手动刷的关键词推广、以及同一个人换着号刷屏。三种要用不同的手段对付,所以下面按顺序一步步来,不要跳步。
第一步:先把评论审核打开,拿到喘息时间
这一步的目标是立刻止血:所有新评论先进入待审状态,不再直接出现在前台。登录后台(船说 CMS 默认入口是 /admin.php 或 /admin/),进入「系统」→「功能设置」→「评论设置」(部分版本在「内容管理」→「评论管理」→「评论参数」里)。
把这几项改掉:
- 「评论是否需要审核」改成 开启
- 「评论间隔时间」填 60 秒(同一用户两次评论的最小间隔)
- 「同一 IP 每日评论上限」填 20
- 「评论是否开启验证码」改成 开启
保存后前台评论提交会立刻受限制。
注意:不同版本这几项的菜单位置和名称略有差异,以你后台实际显示的文字为准。如果找不到「评论设置」,直接在后台顶部的搜索框里搜「评论」。
第二步:配置敏感词和链接过滤
审核只是拖时间,真正省事的是让垃圾评论根本进不来。还是在「评论设置」页面,找到「敏感词过滤」或「评论关键词过滤」。
在文本框里按 一行一个 的格式填入:
http://
https://
加微信
加Q
代发
推广
保存后,命中这些词的评论会被直接拦截或转入待审。
其中 http:// 和 https:// 是最关键的两条——正常用户评论极少带链接,而广告评论几乎必带。如果你的站点允许用户在评论里发链接,可以改成「含链接的评论一律进待审」而不是直接拒绝。
第三步:找提交接口,准备做服务器限流
前两步是 CMS 层面的。如果对方是用脚本直接 POST 提交,绕过了前台页面,就得在 Web 服务器上拦。
先在浏览器打开你的文章页,按 F12 → 切到 Network(网络) 标签 → 在评论区随便发一条测试评论 → 看列表里新出现的那条请求,它的地址就是评论提交接口,通常是 /index.php/Home/Comment/add 或 /plus/comment.php 这类形式。把这个地址记下来。
第四步:用 Nginx 限制评论提交频率
打开 Nginx 配置文件(一般在 /etc/nginx/nginx.conf 或 /www/server/panel/vhost/nginx/你的域名.conf)。
在 http { } 块里加一行:
limit_req_zone $binary_remote_addr zone=cmt:10m rate=6r/m;
意思是:按访客 IP 记录,每分钟最多 6 次。
在网站的 server { } 块里,把你第三步记下的接口地址加进去:
location = /index.php/Home/Comment/add {
limit_req zone=cmt burst=3 nodelay;
limit_req_status 429;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
}
改完执行 nginx -t 检查语法,通过后 nginx -s reload 生效。
注意:
fastcgi_pass的地址要跟你站点原有的 PHP 配置保持一致,不要照抄。直接复制原来站点里的location ~ \.php段落改最稳妥。如果你的评论接口是/plus/comment.php这种真实文件路径,location就写成= /plus/comment.php。
第五步:清理已有的灌水评论
后台「评论管理」列表里,通常有「按 IP 搜索」或「批量删除」功能。先按 IP 排序,找出评论数异常多的那几个 IP,再批量勾选删除。
如果评论量太大,后台删到卡死,可以直接在数据库执行。用 phpMyAdmin 或命令行进数据库(表前缀看你安装时填的,常见是 cs_):
-- 先查出发帖最多的 IP
SELECT ip, COUNT(*) AS c FROM cs_comment
GROUP BY ip HAVING c > 20 ORDER BY c DESC;
-- 确认无误后,按 IP 批量删
DELETE FROM cs_comment WHERE ip = '要删的IP';
注意:执行 DELETE 前先
SELECT *看一眼内容确认是垃圾数据,并提前备份数据库。删错了没有回收站。
第六步:把后台入口和密码加固
灌水脚本很多是先爆破后台再批量灌的。做两件事:一是把 /admin.php 改成别的名字(直接重命名文件即可,改完记得自己存好新地址);二是把管理员密码换成 12 位以上的强密码。这一步不直接拦评论,但能砍掉一大半来源。
小结
- 先开评论审核 + 间隔限制,一分钟止血
- 敏感词里
http://、https://必填,链接是广告评论的最大特征 - 脚本灌水靠 Nginx
limit_req限流,用 F12 找到真实提交接口 - 存量垃圾评论用 SQL 按 IP 批量清,操作前先备份
- 后台入口改名 + 强密码,减少被爆破后灌水的可能
原文链接:https://www.gj0.com/thread-1198.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。