我愤怒了! z-CAPTCHA超级验证码

原创文章,严禁转载!
本文发在:http://www.discuz.net/thread-467609-1-1.html,文中提到的附件可以去那里下载。
在正式开始之前,请先允许我发一点小小的牢骚。
我的论坛是:http://www.dgwxx.com/nmmbbs
这几天被机器人SPAM发得不胜其扰,因为我的论坛似乎被机器人加入了自动SPAM列表,所以每天都有十几条SPAM过来,还都是那些OX用品的广告。可恶,连我这么个没人气的技术论坛都不放过,真是太可恶了!连续三天被骚扰之后,我打开了所有的验证码。没想到到了第二天变本加厉发得更多了。一猜想,很可能是Discuz的验证码已经被OCR(或者破解)了(后来我去了一趟那个机器人的网站,竟然大言不惭地宣称自己的OCR识别率达到89%,大家去踩:htmdp://www.ab222.cn)。
因为验证码不管用了,所以只好将以前写的一个验证码程序移植到Discuz。成功后不敢独享,将经验分享给大家,愿大家以后远离SPAM的骚扰。

简单介绍一下:
z-CAPTCHA是一个验证码生成工具。也是z系列程序中的一员。
z-CAPTCHA基于Howard Yeend(http://www.puremango.co.uk)的freeCap v1.4.1优化、改进而来,提高了运行效率,大幅强化了验证码的质量以及破解难度。同时,在强化了GDFont字体版本的基础上,开发了支持TTF字体的版本,能够输出更高质量的验证码图片,以及制造更大的破解难度。
原理:随机生成加法算式、减法算式、乘法算式以及四位验证码(图片左上角有中文提示“请计算”或者“请输入”),因为加入了计算的成分,使得机器人OCR的正确率大幅度降低。图片背景可以生成网状线条和乱序斜线两种背景。(因为生成的算式比较大,会出现两位数乘法,所以会造成用户的困扰,最下面有写如何简化算式。)
不过有一点,受到PHP的GD库限制,无法生成出更好的图片(如果做到像Google和MSN那种,还有QQ的中文验证码,几乎没法OCR了)。而且GD库的速度不算太好,用了这个插件之后,可能在一定程度上会拖累服务器的速度。所以别开太多了,只开发新话题和回复话题就够了。
因为开放TTF字体函数库的虚拟主机不多,这里就采用GDF版了。我写的TTF版还支持字母数字混合模式和纯字母模式(因为GDF字体中加入字母会让字体文件变得非常大,速度很慢,就放弃了字母)。

为了方便更新维护,具体安装使用方法以及附件下载,请移驾Discuz社区的帖子里面,帖子的地址在最开头写了 :)