最近的博客收到的垃圾邮件越来越多,虽然设置了简单的算术验证,但对于 bot 来说形同虚设,每天都能收到 10+ 的垃圾邮件,不得不上一些更有效的验证手段。

typecho-hcaptcha-plugin

研究了一圈网上能搜到的评论验证插件,基本上都是年久未修,最后准备使用 reCAPTCHA 这个插件,但考虑到 reCaptcha 在国内几乎不可用,所以在此基础上修改为了使用 hCaptcha 验证虽然在不少地区的体验也很糟糕

使用方法

a. 注册 hCaptcha 账号,在 Sites 菜单栏里点击 New Site 添加一个网站获取 Site Key,点击你的头像 - Settings 获取 Secret Key

b. 下载插件,文件夹命名为 CaptchaPlus 后上传到网站 /usr/plugins/ 路径下。

c. 进入网站后台-控制台-插件,点击启用:

typecho-hcaptcha-plugin

  • Site Key:第一步中获取的 Site Key
  • Secret Key:第一步中获取的 Secret Key
  • Widget Theme:主题颜色,可设置 Light 或者 Dark
  • Widget Size:样式大小,可设置 Normal 或者 Compact

设置好后点击保存。

d. 打开 /usr/themes/ 你的主题目录下 comments.php 文件,在提交按钮前面/后面插入下面代码:

<?php if (array_key_exists('CaptchaPlus', Typecho_Plugin::export()['activated'])) : CaptchaPlus_Plugin::output(); endif; ?>

*e. 网站管理员登录后不用进行验证,可直接提交评论。如果用户/游客提交评论失败,可能是开启了评论反垃圾保护导致,在网站后台-设置-评论里关闭,或者在主题目录下的 functions.php 文件中找到 function themeInit() 函数,里面添加:

$options = Helper::options();
$options -> commentsAntiSpam = false;

完成设置启用后,应该可以摆脱大部分垃圾评论了,后期可能会整合评论审核过滤和邮件提醒功能进去但 93.23% 的概率会鸽


Update 2022-11-10

迫于即使添加了 hCaptcha 还是有一些垃圾评论,于是又花时间完善了下逻辑,新增评论过滤功能,可以设置过滤俄文和非中文评论,同时支持设置关键词过滤(感谢 CommentFilter)。并将插件名从 hCaptcha 修改为 CaptchaPlus

typecho-hcaptcha-plugin