WordPress评论外链守卫插件

一个给 WordPress 老评论外链做体检的插件。先看人还来不来,再看这域名现在是什么。文末有下载。

我这博客写了十七年,评论两万一千多条。多年之前博主留下的评论链接除了大部分都无法访问外,还有一些着黄站、赌站、卖假药网站在那里躺着。,我心里一直有数——不是最近才发现。这也是我之所以把博客一直放在海外服务器上一个最主要的原因。

最开始折腾龙虾时候,也想着来处理这两万多条评论,可能当时龙虾太笨,最后不了了之了。前几天看到了扶功的《道路千万条,安全第一条》和水拍石的《wordpress 评论表单中旧链接安全检查插件》,文章之后,我把他们两的思路集合起来,再增加垃圾链接审核逻辑,最终得出我的"增强版"!

一、手工干不了

两万条,一天点五十个,得查一年多。域名还是活的,你今天查完,明年它又变了。

所以我想的是:能不能让它自己查,我只在它拿不准的时候看一眼。

二、照着做了一遍,三个坑绕不过去

水拍石那篇把做法写得很细:抓回首页、按四类词打分、过阈值判风险。我照着这个路子做了,跑下来发现三个坑。

坑一:词库不认识赌站的招牌。 标题明摆着写「交易所」「交易平台」「官网入口」,词库里一个都没有。开头那个 58yqm.com 就是这么漏的——正文只有"保证金""高收益"凑出 20 分,阈值 50,放行了整整一年。我当时就想,这词库得补到什么时候是个头?

坑二:看有没有博客特征。 有 RSS、有 WordPress 指纹就算个人博客。可交易所也能用 WordPress 搭啊。

坑三:一刀切全删。 安全倒是安全了,把正常博友也一起清了。人家来你这儿留了十几年言,你反过来把人家链接清了。

三、后来我想明白一件事

照这个路子做下去,问题是:内容这东西你永远查不全——今天补了"交易所",明天人家改叫"数藏平台"。我换了个角度:

别猜它坏不坏,看它还是不是那个人的站。

判断"是不是黄赌"得靠词库猜,永远慢半拍。但判断"还是不是原来那个博主的站",有两件事是硬证据:这个人还来不来,这个域名现在是什么。

我那两万多条评论,最后只有 325 个需要真的去抓页面看一眼。大部分链接在第 1 步就处理完了,一个页面都没去抓——这是我做它最得意的地方,省事,也不去打扰博友的站。

两条铁律,写死在代码里:

  • 抓不到 ≠ 有问题。 DNS 死了、被墙了、超时,一律不降级。看不清就不下结论。

  • 实锤的结论不能被网络波动洗白。 判成风险的域名,之后哪怕某次抓取失败,结论也留着。

四、后台长什么样

装好,左侧菜单多一个「外链守卫」。

体检页最上面是进度。它只扫「免考核期」到「人情味期」之间的域名,默认 1 年到 5 年:近一年还在留言的不扫,超过人情味期的也不扫——前台早降级了,扫了白烧 CPU。(图里写"2 年",是我这个站自己填的,默认是 5 年。)

风险清单每行有分数、命中词、页面标题,确认就点「拉黑」——以后这个域名再有人填,评论直接提交不了。

不过最有用的其实是「域名速查」。 拿不准一个域名为什么被降、或者为什么被放行,把它粘进去,判定链每一步都摊开给你看。

图里这个:标题「英国·威廉希尔体育公司-中文官网」,两个高置信词,100 分判风险。下面几层写着"本次未参与"——判定是短路的,不是每层都算一遍。所以误判时你一眼能看出是哪层判的。

五、前台是什么效果

降级不是删评论,是把链接换成纯文本。 评论内容、作者、时间一个字不改,网页源码里也不会再出现那个域名。

注意「车牌吉凶」底下那道虚下划线——它的网址被判成"已不是个人博客"。其他正常访客的名字就是普通文字,看不出来。

站长自己登录看到的不一样:所有链接恢复可点,被屏蔽的用彩色虚线标出来。这个是我特意要求的——一开始它连管理员也一起降级,我打开后台以为功能坏了。

六、怎么开始用

后台 → 插件 → 安装插件 → 上传 zip → 启用。

装完第一件事是扫描,一定要扫。 刚装好时体检表是空的,它还没看过任何一个域名的内容。进「外链体检」,点「连续扫描到完成」。

要扫多久,我实测大约 2~4 秒一个:

域名数量 大约耗时
100 个 5 分钟
500 个 25 分钟
2000 个 2 小时

扫的时候可以切到别的标签页干别的事,不会断。扫完每小时还会自动复查一批到期的(7 天一轮),不用你管。

设置里真正要你理解的就两个数字:「免考核期」默认 1 年,这期间还在来往的直接放行;「人情味期」默认 5 年,超过就归档降级。

七、可能会遇到的几个问题

改完设置、或者扫完了,前台没变化? 八成是页面缓存。降级是渲染的时候替换的,缓存插件存的是替换之后的页面。插件会自动清 WP Rocket、LiteSpeed、W3TC 这些,用 CDN 的话你手动清一次。

某个正常博客被降级了? 去「域名速查」看它是哪一层被判的,判错了点「加入白名单」。判据永远有误差,白名单就是留给人纠错的,别指望机器百分百准。

某个域名一直显示"抓不到"? 多半是 IP 被对方防火墙拦了,或者那个站只对国内网络开放。插件带了「本机抓取助手」,在你自己电脑上跑个脚本去抓、结果回传,判定标准和服务器完全一致。

八、数据这块我说清楚

  • 检测结果、黑白名单全存在你自己站点的数据库里,不向任何第三方上报

  • 运行时唯一的外部请求是抓待检域名的首页,这就是体检本身

  • 不采集访客 IP,不读访客的任何隐私信息

停用:数据全保留,链接恢复可点。删除:清空体检表和黑白名单,不可逆——两万个域名重扫要几个小时。想关掉的话,停用就够了。

下载

版本 1.5.6 | 需要 WordPress 5.5+、PHP 7.4+

项目地址:https://github.com/laozhangge/wp-comment-guard

这个链接永远是最新版,我发新版直接覆盖,你不用回来找新地址。

最后说几句实话

代码是我跟 WorkBuddy 一起折腾出来的,来回改了七八个版本。源码里看出点"AI 味",不奇怪。

免费,没广告,我也没打算靠它挣什么。

但它一定会误判。 十七年里我见过太多奇形怪状的博客——有的整站用 JavaScript 渲染,抓回去一片空白;有的标题起得跟公司官网一模一样,点进去全是私人日记;还有的博客就叫「好事发生」,四个字,机器看了半天不知道它是什么。

所以装上之后,要是发现哪个正常博友被降了,先别骂——去「域名速查」看看是哪一层的判据太宽,留言告我一声。误判的样本比任何功能建议都有用。

说到底,这插件只是帮你把风险筛出来,该不该留、该不该删,还得你自己看一眼最准。

机器判不了的,还得是人。

评论区

共 2 条评论
  1. 龙笑天 的头像
    龙笑天 Lv3.点头之交
    我设置的逻辑简单粗暴:用户最后一次评论时间超过30天的话,就全站隐藏该用户所有评论里的站点链接~😊
    刚刚
  2. 秋风于渭水 的头像
    秋风于渭水 Lv4.常来常往
    我就直接超过1年没新回复的就降级为无链接
    刚刚
😊