SELECT ip, COUNT(*) c FROM comments
WHERE content_hash IN (SELECT content_hash FROM blocked)
GROUP BY ip ORDER BY c DESC LIMIT 20;

封了 30 个邮箱,同一批人换邮箱继续发,一小时又出现 200 条,评论内容几乎一模一样。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,封禁只写邮箱一个维度,没有记录 IP、设备和内容指纹。注册流程也不校验历史行为。

围绕「黑名单维度单一」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。

报错里带路径的,先去看那个路径在不在、权限对不对。

处理上按这个顺序:封禁时同时记录 IP 段、设备和内容指纹;命中任一维度先进入人工审核,不直接放行;对同内容重复提交做去重,别只按账号判断。

改完只确认一件事:换邮箱的同一批评论被拦下,封禁记录里能看到多个维度。

作者 9823189