WordPress 中文验证码

反机器人和垃圾评论是个人博客老生常谈的话题。除了特征识别算法外,最普遍使用的屏蔽方法就是验证码了。在 WordPress 插件库中,有着各式各样的验证码插件。然而,很多验证码插件都依赖于 Google 的 reCAPTCHA,这在国内无法访问;而一些基于 Session 或文件验证的验证码插件功能和质量参差不齐,性能和安全性难以得到保障。虽然笔者已经抛弃了 WordPress 转投 Hexo 静态博客(正如你所看到的这样),但考虑到 WordPress 中少有适合我国国情的验证码插件,故决定将一些主流图形验证码的功能进行整合,制作出一个全新的通用性更强的验证码解决方案。Mimi Captcha 就这样诞生了。
这是一个同时支持数字、大小写字母、中文、算术的图形验证码插件。它是基于 Vinoj Cardoza 的 Captcha Code 在 GPL 协议下二次开发的。原项目存在的问题是,验证码中的字符采用同一字体在同一高度下顺序排列,这样非常容易被识别。改动过程中,加入了「超时时间」设置,以及对用户更为友好的「不区分大小写」设置。而验证码图片的生成算法,则进行了重构,很大程度上采用了流水孟春的方案。同时,在 IP 白名单等功能上,参考了 Captcha 的代码。中文验证码和算术验证码则是新加入的功能,在原插件上拓展而成。最终效果如图:


代码可以在 GitHub 上查看:Mimi Captcha
同时也发布在了 WordPress 插件库:Mimi Captcha
如果你对这个插件有任何建议或反馈 Bug,敬请在 GitHub 上提交 Issue。博客评论区留言可能无法及时回复。

顺便吐槽一下 WordPress 官方团队粗暴无礼的插件审核机制,真的是非常严格呢。(不过要确保插件的可靠性,严格一点也是必要的)
最后要说的是,没有绝对安全的系统。中文验证码只是提高了机器人发布垃圾评论和暴力破解密码的成本,而管理员保持良好的使用习惯、进行合理的维护才是确保 WordPress 正常运行的关键。


拓展阅读:
知识库:使用 Tesseract 识别弱验证码
【翻译】wordpress 在后台自定义菜单页面上实现 TAB 页