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 渲染,抓回去一片空白;有的标题起得跟公司官网一模一样,点进去全是私人日记;还有的博客就叫「好事发生」,四个字,机器看了半天不知道它是什么。

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

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

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

评论区

共 47 条评论
  1. 龙笑天 的头像
    龙笑天 Lv3.点头之交
    我设置的逻辑简单粗暴:用户最后一次评论时间超过30天的话,就全站隐藏该用户所有评论里的站点链接~😊
    20天前
    1. 老张 的头像
      老张 博主
      @龙笑天 30天是不是太短了呀
      19天前
  2. 秋风于渭水 的头像
    秋风于渭水 Lv4.常来常往
    我就直接超过1年没新回复的就降级为无链接
    20天前
    1. 老张 的头像
      老张 博主
      @秋风于渭水 也是一种方法。
      19天前
  3. 老狼 的头像
    老狼 Lv7.志趣相投
    我做了加密算法,URL是带有时间参数加密的,URL只有在N天内有效,超过直接失效,需要重新获取加密URL。
    20天前
    1. 老张 的头像
      老张 博主
      @老狼 有教程吗?可以向你学习下
      19天前
  4. Dylan Li 的头像
    Dylan Li Lv2.初识寒暄
    看到这个我才想起来,之前做游客中心的之后就是为了加访客网站的限制,结果搞着搞着搞忘了,哈哈哈
    20天前
    1. 老张 的头像
      老张 博主
      @Dylan Li 这个功能是必须要有的
      19天前
  5. 水拍石 的头像
    水拍石 Lv5.熟稔有加
    我那个后来升级了一个功能,就是用邮箱确定用户,然后对一个邮箱有多个域名的人进行提醒,可以用最新的域名替换评论中的所有旧域名,就是为了防止经常换域名的人被删链接。这个功能我开启后扫了下,发现喜欢换域名的博友真是多,有些人都换了四五个域名了,所以我觉得这个功能挺有用的,你可以加上。
    20天前
    1. 老张 的头像
      老张 博主
      @水拍石 我的所有评论里也有两百多人换过域名。我也有更换旧域名的功能,只不过需要手动,准备优化到批量更换的那种
      19天前
  6. 老何 的头像
    老何 Lv5.熟稔有加
    这是一个大问题,大家都在想啊
    19天前
    1. 老张 的头像
      老张 博主
      @老何 是的
      19天前
  7. Feng 的头像
    Feng Lv7.志趣相投
    牛啊,这插件不错,要以帮到很多的WP博主。
    19天前
    1. 老张 的头像
      老张 博主
      @Feng 都是根据自己需要来的。
      16天前
  8. 姜辰 的头像
    姜辰 Lv2.初识寒暄
    如果你像我这样,把一个月前的评论链接直接显示为空,这样不就搞定了?你可以通过后台直接访问。emmm
    19天前
    1. 老张 的头像
      老张 博主
      @姜辰 一个月有点太短了,我这个插件也可以这样设置。灵活性更大
      16天前
  9. 网友小宋 的头像
    网友小宋 Lv9.惺惺相惜
    ty有人做出来了。但是效果也不是很好,在想要不要接入ai审核
    19天前
    1. 老张 的头像
      老张 博主
      @网友小宋 其实想要省事,直接一年前的链接全部关掉。
      16天前
  10. 西风 的头像
    西风 Lv3.点头之交
    好人老张 我研究下看看
    19天前
😊