登录

独立开发:WordPress 评论外链守卫插件

10221
  • 楼主博主 编辑于

    image.webp

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

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

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

    一、手工干不了

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

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

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

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

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

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

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

    三、后来我想明白一件事

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

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

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

    image.webp

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

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

    • 抓不到 ≠ 有问题。 DNS 死了、被墙了、超时,一律不降级。看不清就不下结论。
    • 实锤的结论不能被网络波动洗白。 判成风险的域名,之后哪怕某次抓取失败,结论也留着。

    四、后台长什么样

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

    image.webp

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

    image.webp

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

    image.webp

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

    image.webp

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

    五、前台是什么效果

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

    image.webp

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

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

    六、怎么开始用

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

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

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

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

    收藏支持 1反对打赏

21 条回复

发表回复