什么是 CAPTCHA?就是在许多网页窗体的最后,要你输入几个英文字母,确保你不是机器人的那个东西。CAPTCHA 的全名是「
C
ompletely
A
utomated
P
ublic
T
uring test to tell
C
omputers and
H
umans
A
part」,或「全自动区分电脑与人类的图灵测试」,实作的方式很简单,就是问一个电脑答不出来,但人类答得出来的问题。
早期的 CAPTCHA 很简单,大多就是在一个比较杂乱的背景上有几个英文字母,要求使用者将字母写出来。但随着电脑判断、解析的算法越来越进步,创造 CAPTCHA 的这一方也不得不努力,将 CAPTCHA 设计得越来越复杂难明...直到连人类都快要识别不出来的地步 orz。
电脑识别图片一共有三个步骤:
早期的 CAPTCHA 很简单,大多就是在一个比较杂乱的背景上有几个英文字母,要求使用者将字母写出来。但随着电脑判断、解析的算法越来越进步,创造 CAPTCHA 的这一方也不得不努力,将 CAPTCHA 设计得越来越复杂难明...直到连人类都快要识别不出来的地步 orz。
电脑识别图片一共有三个步骤:
- 消去背景
- 切割元素
- 辨认元素
上图的这个 EZ-Gimpy 产生的 CAPTCHA 就用了一个渐层的背景和扭曲的文字来让电脑辨识困难。事实上,以现代技术来说,这差不多是最容易破解的一种了 -- 电脑就是消去背景和辨认元素这两个部份最擅长,因此要让电脑辨识困难点,还必须要加上切割元素的困难度才行。
上图的这种 CAPTCHA 叫 reCAPTCHA,是一个使用率还蛮高的 CAPTCHA。reCAPTCHA 用的技术很有趣:它是去扫瞄古书,并从中找出电脑无法辨认出来的古字,加上一条增加切割元素困难度的曲线后,呈现给使用者。系统只知道两个字当中其中一个的答案,如果你答对了它知道的那个,那它就假设你是人类无误,并假设你的另外一个字也有答对,这样 reCAPTCHA 知道的字就又多一个了。
KCAPTCHA 则是让所有的字都黏在一起,让电脑无法正确地切割元素。
这是一个利用背景和前景的复杂度来增加辨试困难度的例子。不过总觉得这比扭曲的字还虐待人啊 = =。
这个系统叫「KittenAuth」,顾名思议就是要你从九张可爱的动物中选出三张是猫咪的图来。这个利用的是电脑对没有固定模式的东西(像照片)的内容没辙的这点。另外一种 CAPTCHA 完全舍弃了图片,只问一个大概只有人类才答得出来的问题,例如:
「请以 PGN 格式,回答执白者的最佳下一步」
虽然不多见,但也有些网站用的是动画的 CAPTCHA。这种对电脑来说几乎是不可能破解的,因为电脑很难知道哪个影格里的数据是正确的。当然,也不一定要靠文字才能做 CAPTCHA,像下面这个:
这个系统叫「KittenAuth」,顾名思议就是要你从九张可爱的动物中选出三张是猫咪的图来。这个利用的是电脑对没有固定模式的东西(像照片)的内容没辙的这点。另外一种 CAPTCHA 完全舍弃了图片,只问一个大概只有人类才答得出来的问题,例如:
- 浴缸里装满了热__。
- 瘾科技最帅的编辑是__。
「请以 PGN 格式,回答执白者的最佳下一步」