非请勿过 探索验证码背后的秘密
验证码 掀起你的盖头来
老网民可能都知道,在前几年的网络世界,我们几乎看不到什么验证码,验证码是近几年才出现的新生事物,现在几乎每个网站、论坛都会有验证码出现。验证码顾名思义就是用来验证用户某种操作(如购物网站提交订单、论坛提交回复、用户注册)的一种技术手段(图1)。
那么为什么现在网站要推出验证码?验证码的主要作用一是用来防止机器人注册,同时用于验证合法用户的提交。泡论坛的朋友都知道,现在论坛里都会有很多广告帖,大部分广告帖都是机器人注册的账号,这样纯水帖给论坛管理带来很大的不便。因此为了阻止机器人自动注册账号和自动发布广告帖,很多论坛在注册时引入了验证码机制,通过随机出现的图片或数字密码来阻止机器人的自动注册(图2)。
免输入――抢웃票软件如何自动输入验证码
如上所述,验证码的作用主要®是阻止类似机器人的自动操作。不过使用抢票软件购票的朋友都知道,虽然12306网站在登录、提交订单的时候都用了验证码机制,不过这些验证码并没有给抢票软件造成任何麻烦,它们仍然可以在后台自动输入验证码(图4)。
这些软件是怎么突破验证码封锁的?其实对于早期12306网站使用的数字(包括字母)方式的验证码♒,抢票软件是通过OCR识别技术来通过验证的。比如上图的验证码字符是“kdte”(验证码一般忽略字母大小写),这样当抢票软件读取到上述图片时,它会将这个图片传输到服务器,这样在服务器上的OCR软件通过扫描就可以快速获得正确的验证码,扫描结果返回抢票软件就可以直接输入正确的验证码了(图5)。
同样的对于网站其他需要输入验证码的地方,抢票软件都是通过上述方法实现准确的识别和正确的输入,从而实现自动、高效的购票。
道高一尺魔高一丈――验证与©反验证
简单字符式的验证码容易被机器识别,为了提高验证码的效率,现在很多网站纷纷使用各种方法来加强OCR识别的难度。一些网站使用类似“7+2=?”的简单算术式(用户通过输入正确答案)来作为验证方式,一些网站则使用中文字符来作为验证码,另一些网站如腾讯网站在注册QQ账号页面,则通过为验证码添加背景图片来干扰机器的OCR识别(图6)。
不过人眼都可以轻松识别,对于机器OCR来说更是小菜一碟,比如类似“7+2=?”简单算术式的验证,除了OCR只要再将识别结果进行简单运算即可获得正确的验证码。
图片验证码看上去要比字符式的复杂,那么识别起来是不是就更难?其实对于机器识别来说,图片验证码的难度并没有提高多少,字符识别机器是通过OCD扫描识别,图片同样可以借助图片识别技术进行精准的识别。相信很多朋友已经使用过百度的“以图找图”功能,这个实际上就是典型的机器图像识别技术(图8)。
验证码的未来
验证码作为一种目前普遍使用的验证手段,除了阻止机器人自动识别外,还是我们日常操作的一个重要保护手段。因此各大公司也纷纷在验证码识别技术上进行改进,一些公司通过多种验证的方式加强验证的安全性。如现在很多在线支付网站就推出附加短信验证的保护措施,除了要求输入直接显示的验证码外,还要求输入预先绑定的手机获取的短信验证码来加强验证(图9)。
此外,一些公司则通过人类的具体行为和机器的不同来实现验证。Google就ฟ提出了一个“human behavior analysis”的方案,它的核心是将用户的行为作为判断人与计算机的准则。这样推出的验证有很强的人类思维行为,从而杜绝机器的自动识别,有效保证验证码的安全。
总之,当验证码的存在给我们日常的网络行为(如购票)带来不便时,用户希望通过机器的识别来提高操作效率;而当验证码为在线支付等操作带来保驾护航时,人们又希望有机器无法识别的验证码来保障安全,鱼和熊掌不可兼得也。