注意:博客目前已迁移到hexo博客框架,本文内容可能已经过时,仅供参考

博客评论区本是读者们交流的地方,但总会防不住有垃圾评论的出现,它们多数由机器自动发送,因此添加人机验证便是防范机器人自动刷评论的好方法
一些主题(例如本博客之前使用过的Butterfly主题)自带了人机验证模块,只需要在主题设置中启用即可,但对于没有这个功能的主题就需要借助插件来实现

CaptchaPlus插件

在查找过许多人机验证插件后,博主认为最好用的一款是 CaptchaPlus 插件:
Github 项目主页

  1. 克隆或直接网页端打包下载,然后将 CaptchaPlus 文件夹上传到 Typecho 网站目录 /usr/plugins/ 文件夹
  2. 进入博客后台,控制台-插件 中找到 CaptchaPlus 并启用
  3. 打开 /usr/themes/ 你的主题目录下 comments.php 文件,在提交按钮前面/后面插入以下代码:
    <?php if (array_key_exists('CaptchaPlus', Typecho_Plugin::export()['activated'])) : CaptchaPlus_Plugin::output(); endif; ?>
  • 注入人机验证模块后,提交评论的区域界面渲染可能会出错,例如本博客使用的 Jasmine 主题会出现提交评论按钮漂移的问题:
    Alt text
    需要稍微修改css,我的解决方法是直接在 button 标签内加内联css,强制将按钮调整到右侧:
    Alt text
    style="float: right;"
  1. 网站管理员登录后不用进行验证,可直接提交评论。如果用户/游客提交评论失败,可能是开启了评论反垃圾保护导致,在网站后台-设置-评论里关闭,或者在主题目录下的 functions.php 文件中找到 function themeInit() 函数,里面添加:
    $options = Helper::options();
    $options -> commentsAntiSpam = false;

注册hCaptcha

这个插件支持 hCaptcha 和 Cloudflare Turnstile 验证码,这里以 hCaptcha 作为示例

  1. 注册地址:https://dashboard.hcaptcha.com/signup
  2. 注册完先点击右上角头像进入 Settings ,将界面语言改成中文,并复制 Secret key
    Alt text
  3. 进入右上角的网站,点击搜索框旁边的新网站,直接转到下面的 General Information
  4. 填入域名并选择难度,右上角保存
    Alt text
  5. 然后在网站列表处点击前面的字符复制 Site Key
    Alt text

配置插件

回到 Typecho 后台,进入插件设置,填入 Secret KeySite Key ,其余配置自行调整,保存后即可查看效果
Alt text
启用后效果:
Alt text