要说 reCAPTCHA,就要先说一说 CAPTCHA,全称是 Completely Automated Public Turing test to tell Computers and Humans Apart,即全自动区分计算机和人类的图灵测试,也就是通常说的 “验证码”,目的就是要把计算机和人区分开来。在互联网站上,为了防止不安全的、重复暴力的登陆密码破解等操作,需要使用验证码来将机器行为拒之门外。
验证码当然可以被识别,随着破解和反破解技术的发展,验证码的技术日新月异(简单的验证码很容易实现,在我刚开始学习 JavaEE 的时候,曾经写过一个验证码的实现程序)。最初对于验证码的机器识别,大多采用 “规则” 的方式来实现,而如今则利用给定破解成功和失败的数据集合,更多地采用机器学习的方式来实现。另一方面,也不要忽视 “人工破解” 的价值,比如利用一些非法运营的网站,吸引用户在登陆、下载等等行为以前,输入待破解的验证码,让用户来帮助破解验证码。
所谓 reCAPTCHA,用官方自己的话来说,is a free anti-bot service that helps digitize books,即一个帮助数字化书籍的反机器服务。
对于一些数字时代以前的书籍、报纸,甚至电台节目,需要有人和工具来把它们一一解析成文字存储起来。如果本身以视频和图片的方式存储,占用大量存储不说,人类不易对其中的内容获得了解,也没有办法做进一步的统计、分析,以及索引和搜索等等。
传统的 OCR(Optical Character Recognition,光学字符识别)方式对于一些字迹模糊的古老的文字材料,识别率非常低,至少在可以预见的未来,再先进的机器也无法达到人类识别文字的能力:
可以看到,OCR 对于字母数量较多的单词识别效果较好,但是对于一些小品词,准确率非常低。
reCAPTCHA 是怎样工作的?原理其实也非常简单,对于每次提供给用户的验证码,有一个词是纯粹的验证码部分,用以校验对方是否是人类;还有另一个词正是来自古老文献中的词语,对于通过验证码校验的用户,可以简单地认为他们对这部分古老文献词语的识别也是正确的(事实上这部分的识别率非常高,官方提供的数据是 99.5%)。
大约每天都会有两亿个验证码被人类识别,粗略地说,大概每人次需要花费十秒钟的识别时间,单独看这确实很少,但是累计起来,相当于每天有十五万小时以上的工时,这也是 reCAPTCHA 得以利用它的重要原因。
如果你也想加入 reCAPTCHA 项目,比如为自己的网站增加 reCAPTCHA 的验证码,你可以阅读这部分文字。其实它的原始想法很简单,但是却是一个很有价值的项目,我的博客在评论部分已经使用了 reCAPTCHA 验证码,你现在就可以体验到;如果你要获取它的 wordpress 插件,你可以到这里找到。
文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》
提醒: 没加验证
发生的飞洒发
从一个大角度来说,此项目也许有着非常重要的意义。但从实际使用者来说,此项目则非常反人类、邪恶与烦人,因为这些字符非常难以识别。
普通用户来注册或评论时,为什么要设置这样的门槛,对于网站来说,又有什么益处?