搜索全站
插件 8 分钟阅读

Akismet 与 Antispam Bee 对比:垃圾评论拦截、配额与隐私合规

Akismet 和 Antispam Bee 都能拦垃圾评论,但计费、隐私合规和拦截逻辑差别很大。本文从配额、数据出境、拦截率与运维成本四个维度对比,并给出清理与调优方法。

U
UFO_PF 2020-07-18 · 阅读 8 分钟
Ak 插件
阅读提示
本文约 2,885 字,预计阅读 8 分钟。文中命令与配置均经过实测,可直接参考执行。

引言:每天几百条垃圾评论,靠人工删不是办法

只要站点开了评论,垃圾评论迟早会来:先是几条带链接的英文留言,接着是批量注册的机器人,最后可能是每天几百条。人工删不现实,全站关评论又可惜——真实的读者互动、产品咨询,往往就发生在评论区。

于是插件成了必然选择。而国内站长最常纠结的是两款:Automattic 的 Akismet(WordPress 官方推荐、默认预装)和 pluginkollektiv 的 Antispam Bee(德国团队开发,无需 API 密钥)。它们都能把垃圾评论挡住,但在「要不要把评论数据发给第三方」「免费额度怎么算」「拦截逻辑是什么」这三件事上完全不同,而这三点恰恰决定了你能不能用、敢不敢用。

原理分析:一个靠云端大数据,一个靠本地规则

Akismet 的工作方式是把每条评论(包含内容、作者信息、IP、User-Agent 等)发送到 Akismet 的云端服务,由服务端的模型判断是否为垃圾。它的优势是见多识广——全球几千万站点共同训练,新型垃圾话术能很快被识别。代价是:评论数据要出境到第三方服务,且免费额度有限(个人/非商业用途可自行选择付费档位,商业站点通常需要付费订阅)。

Antispam Bee 则是纯本地判断:检查评论提交时间是否过快、是否含过多链接、IP 是否可疑、是否来自已知垃圾源,还可以结合 Gravatar 信任度、正则规则等。它不依赖外部 API、不需要密钥、不出境数据,因此在隐私合规(GDPR 及国内个人信息保护要求)上更省心。代价是对新型话术的反应慢一些,误判率更依赖本地规则调校。

维度 Akismet Antispam Bee
判断位置 云端服务 本地规则
是否需 API 密钥 需要 不需要
数据是否出境 是 否
免费额度 个人站点可用免费档,商业站点通常需付费 完全免费
自动清理 可设置自动删除 N 天前的垃圾评论 可选择直接删除而不入垃圾队列
统计面板 有拦截统计与历史记录 有基础统计

保姆级实操:装上之后还要做这些

步骤1:先收紧 WordPress 自带的讨论设置。 插件之前,先把基础门槛立起来:后台「设置 → 讨论」里开启「评论必须经人工批准」「评论者须填写姓名和邮箱」,并把高频垃圾词加入「评论黑名单」。这一步能挡掉相当比例的低级垃圾。

步骤2:安装并接入 Akismet。 启用后需要填入 API 密钥。免费档位面向个人/非商业站点,商业站点请按官方要求选择付费方案——正常使用却长期占用免费档,会导致服务被降级。

步骤3:配置自动清理。 Akismet 默认会把判定为垃圾的评论保留一段时间(默认 15 天)再删除,方便你找回误判。若站点垃圾量大,可以适当缩短保留期,避免 wp_comments 表膨胀。

步骤4:安装并配置 Antispam Bee(或作为备选)。 常用选项包括:信任已批准的评论者、考虑评论停留时间、检测 BBCode、校验评论者 IP、启用正则规则。若你的站点面向欧洲用户或有严格的数据不出境要求,这一款更合适。

步骤5:定期清理垃圾评论。 无论用哪款插件,垃圾评论最终都会落库。用 WP-CLI 定期清一次,比在后台点「清空垃圾」可靠得多。

# 查看各状态评论数量
wp comment list --status=spam --format=count
wp comment list --status=approved --format=count
# 永久删除所有垃圾评论(先确认数量,删除不可恢复)
wp comment delete $(wp comment list --status=spam --format=ids) --force

步骤6:找出垃圾来源特征,做针对性封堵。 统计垃圾评论的来源 IP 与关键词,能帮你发现规律(比如某个 IP 段、某个关键词反复出现)。

-- 统计垃圾评论来源最多的 IP 与被拦截评论的关键词
SELECT comment_author_IP AS ip, COUNT(*) AS cnt
FROM wp_comments
WHERE comment_approved = 'spam'
GROUP BY comment_author_IP
ORDER BY cnt DESC
LIMIT 10;

步骤7:减少无谓的通知邮件。 插件拦下的评论若仍发通知,管理员邮箱会被淹没。用过滤器把通知收件人收敛掉。

<?php
// 不再给管理员发送评论通知与待审通知
add_filter( 'comment_notification_recipients', '__return_empty_array' );
add_filter( 'comment_moderation_recipients', '__return_empty_array' );

步骤8:检查插件实际拦下了多少。 两款插件都提供统计入口,对比「拦截数 / 通过数 / 误判数」,判断是否需要调整规则或换方案。

常见踩坑

  1. Akismet 密钥未配置导致插件不工作。没填密钥时插件不会拦任何评论,后台会一直提示配置,很多人视而不见。
  2. 商业站点占用免费档。按规定商业站点应付费使用,长期违规可能被限制服务。
  3. 误判真实客户留言。含外链的正常咨询容易被判为垃圾。定期抽查垃圾队列,把误判的恢复为已批准,并考虑把老客户加入信任名单。
  4. 垃圾评论表膨胀拖慢站点。wp_comments 与 wp_commentmeta 积累几十万条后,后台评论列表打开极慢。定期清理是必须的,具体清理思路与Advanced Database Cleaner 清理冗余数据相通。
  5. 关掉评论后表单仍被提交。只在前台隐藏表单,机器人照样能 POST。应通过「设置 → 讨论」按文章类型真正关闭,或用代码控制。
  6. 案例:某外贸站同时启用了 Akismet 与另一款本地反垃圾插件,两者都往 wp_commentmeta 写入判定记录,两年积累下来该表超过 900MB,后台打开评论列表超时。整改时先停用了其中一个插件,再用 WP-CLI 分批清理垃圾评论,最后把「垃圾评论保留期」改为 7 天,数据库体积回落到 60MB。
  7. 数据出境的合规说明缺失。使用云端方案却没在隐私政策里说明评论数据会发送给第三方服务,合规上存在缺口。
  8. 只靠插件,不做代码层防护。插件拦住的是内容,拦不住海量 POST 请求本身对服务器的消耗。

总结

两款插件的选择标准其实很清晰:站点面向国内或欧洲用户、有数据不出境要求、不想管订阅——选 Antispam Bee;站点垃圾话术复杂多变、需要高拦截率、能接受付费订阅——选 Akismet。无论选哪个,都要配合三件事:收紧讨论设置、定期清理垃圾评论表、把通知邮件收敛掉。另外记住,插件是最后一道过滤,配合代码层的轻量防护(时间戳 + 蜜罐)效果会更好,具体做法见不用插件拦垃圾评论的代码方案。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。