为什么12306会出那么奇葩的验证码
2015-09-10
春节还有两个月,好多人却要在这寒冷冬日里练习手速了。没错,我说的就是在12306网站上抢火车票。你们想的也是这件事吧?
和上网购物一样,登录时依次填写用户名、密码,接下来是图形验证码……等等,这是什么鬼?“请点击下图中所有的美男子”、“请点击下图中所有的非智能眼镜”……在这个分秒必争的时刻,12306上的购票验证码让抢票者瞬间“抓瞎”。而且还他喵的是多选!有统计说,每输错一次验证码,就意味着当次购票成功率下降80%。这些验证码也迅速成为朋友圈里吐槽的对象。
那么,为什么12306会出现这么奇葩得验证码呢?
本质上是图灵测试
输入验证码的过程,其实是让机器判断你到底是真人还是软件。“验证码”的英文名字很拗口,叫CAPTCHA,翻译过来是“全自动区分计算机和人类的图灵测试”。
验证码的诞生,是为了杜绝通过软件设计的“注册机器人”进行恶意注册,进而产生大量的垃圾用户(僵尸用户)以及垃圾点评信息。这得说到2000年左右,互联网仍是一番原生态景象。雅虎公司最早受到大量通过机器程序注册的困扰,犯罪者在短时间内自动创建上千个电子邮件地址,然后利用这些地址发送垃圾邮件。
为此,雅虎找到了刚刚进入卡内基·梅隆大学硕博连读的Luis von Ahn,后者为雅虎研究了一种强制用户输入某个适当变形的字符串,以检验注册者到底是机器还是人的程序。按照当时的技术,没有电脑能通过这种测试:人为扭曲的验证码毫无规律地以图形方式呈现,必须通过肉眼辨识才能通过验证。
最暴力的验证码破解法——雇人来刷
我们每天在网上付费、登录论坛或者多次输错密码后,都得面对各式各样的验证码的考验,而到现在我们也没有摆脱垃圾邮件或网络水军的骚扰。按照其发明人Luis von Ahn的表述,如何绕开验证码激励着垃圾邮件发送者展开一场军备竞赛。
为了防止被轻易破解,十几年间验证码陆续发展出了多种形式,但直到今天使用最广泛的仍是基于字符的图片类验证码。这类验证码最易产生,具有标准答案,不受背景知识和文化差异的影响。其图像中包含数字、字母或其他文字,字符序列既能与背景图像进行融合,又能做出扭曲、变形之类的处理,所以破解的难度很大。我们平日里常去的网站,大都使用了这种基于字符的图片验证码。
在平面字符的基础上,还曾诞生过3D验证码,它对于机器来说更难破解,但生成难度很高,用户体验也不如字符更简单,所以已被弃用。说到难度,总有道高一尺的存在,比如一些数学验证码,想通过就得算出答案。结果是计算机没法回答,学渣们哭晕在厕所。这样一看,各种奇葩验证码并没有广泛应用的可能。
验证码诞生之初,就可以通过人力暴力破解的方式绕过测试,但代价太过高昂。在一些招工网站上,可以搜到一些公司发布的广告,专门雇人全天人工阅读、输入验证码。不过,计算机不能完成的任务已经越来越少,许多技术博客都会定期宣布对Gmail、雅虎等知名网站的验证码破解成功。
验证码正在拿你当苦力
随着软件的发展,人与计算机之间的差别会越来越小,发明人Luis von Ahn认为,或许3-5年内,能完全识别验证码的软件就将出现。这就要求更有效的验证码,比如听一段音频(类似英语听力?),或者要求用户起兴作首诗。好吧,12306上那些区分动物、人物的图片,也不失为一种尝试。
其实,在你输入某些验证码的同时,也不知不觉做了一回文字的“搬运工”。2005年,Luis von Ahn对验证方式进行了更改:注册者输入验证码时,提供给两个字符串,一个是真正的验证码,另一个则来自某个古老文献中难以辨识的单词或词组。注册者需要自己辨识、输入这两个字符串。奥妙就在第二个字符串上,这个通过扫描仪、OCR软件甚至整理者都难以辨识的字符,可以通过大量注册者的“举手之劳”,很快得到确认。如果把互联网档案馆的文本都校对一遍,每天处理100万个单词需要400年,而加入验证码中,每天可以校對160本书,精度超过99%。2009年9月,Google专门购买了这项技术,作为书籍扫描中难以辨认字符的识别工作。
最后回到被大量吐槽的12306。验证码是为了防御机器的,现在却把真人都给难住了。出现这样的系统,是因为旧的验证码体系已经完全被攻破、起不到防刷的作用,不得不采用新的方案。
一套新规则出现可能是好事。从实际效果看,这些低像素的图片着实难住了普通人,理论上也让机器学习更加困难,所以是故意为之。在打击黄牛和抢票软件的效果上,仍有待观察,有科技公司就表示攻破这些图形验证码并不困难,因为对于12306上使用的581种图片(哪怕是5810种图片),只要有足够的耐心,把所有图片都刷出来并加上备注,就能实现破解。(来源/ 微信公众号 壹读)