QQ20150317-1

早上好!今天是3月17日周二。上图就是12306网站更新以后的验证码。

这是一张静态截屏,所以应该解释一下:在点击图片以后,相应图片才出现红底白色的铁路标识。有不少网友反映,这是他们遇到的最复杂,或者说最“魔性”的验证码。当然更变态的验证码也不是没有,但部署到一个为千万人回家准备的基础服务上,这真的好吗……?

使用第三方手机客户端和用插件的同学们率先崩溃。因为他们的界面都变成了这样:

7f7e7276jw1eq7bwrum22j20bu0hst9a

7084530bjw1eq7gtowrd2j20a00hs3z7

和数字验证码相比,图片验证码是一类对人类而言更难的验证码。这种“在多种图片中合并同类项”的查找方法本身没有问题,但最大的问题在于,其分类标准是由机器学习来确定的,因此总会出现人的判断和机器分类不符的情况。明明我觉得这张图对,但机器说不对,这样会让人感觉很不舒服。

但是,图片验证码对于机器来说,却不是一定比数字更困难。因为机器解读数字验证码,也是把画有数字的图片转换回文本。这种验证码的实现方式可以有两种,一是准备一个庞大的图库,由小图片和关键字一一对应,然后点到图片,后台其实进行的是文本关键字对比;二是根据关键字启动图片搜索(比如去百度搜索),而点击的图片就在搜索结果里面的话,就算是符合条件。

用一句话概括就是:

几乎不存在一种由机器生成,人识别快,机器识别慢的东西。

此前,国内著名漏洞检测平台乌云网曾经认为12306数字验证码太容易被破解,官方如下回应:

QQ20150317-1

 

结果,一年多以后12306还是选择了“用户不好认”的验证码形式。但这是不是意味着“机器不好认”了呢?新验证码发布不到24小时,已经有抢票插件宣布兼容:

a14108b3jw1eq7ncbnvuyj20hr0vkq56

 

QQ20150317-3

 

而网上也出现了机器破解的原型方案。该方案通过百度和谷歌“以图搜图”的公用API,将小图片转换成了符合图意的文本关键字。这样一来,只要检查关键字中有没有符合问题中字符的就OK。

QQ20150317-2

 

其实“以图搜图”已经是和输入关键字,或者念出语音搜索一样简单和普通的搜索手段,并非什么高科技的方式。所以正如上面说的,图片验证码和加了很多波浪纹干扰的数字验证码对机器而言并没有太大的难度差异。

然而,图片验证码却增加了人类识别的难度。尤其是想到这样的公共服务,还要面对很多电脑知识不足的用户,比如前几年需要人指点上网订票的农民工兄弟,这样在减缓抢票插件效率的同时,不免也让这些被抢票插件损害利益最多的人望而却步。

还有人提出,有些关键字并非全国通用,比如“火龙果”“生蚝”,可能北方人都不知道是什么。别笑,我自己前几天去超市买菜,想做个四喜烤麸,结果发现根本没“烤麸”这东西,只有长的挺像的“面筋”卖,而它俩好像区别还挺大的。而且我也很难跟爸妈解释“豆皮”和“千张”的区别。

一个知乎用户的回复,可以说很大程度上代表了我的心声:

这让我想起了很久以前高中时候,学校为了防止少数学生违反纪律,不断在校规的破解难度上加码,比如春夏秋冬强制穿校服,请病假必须家长亲自来接,出校门看病必须从班主任到教务处逐级签字。直接结果就是大部分学生的学习生活受到了很大的干扰,但是对于习惯破坏规则的人来说,他们有充足的时间和精力去寻找破解的方法并以此为乐,也不怕承担相应的风险

也许12306网站的特殊性导致怎么验证都有难处,我觉得另一个同属于公共服务网站的验证码,做得就相当绝妙。看下图你就知道了:

QQ20150317-4