验证码是如何把盲人拒之门外的 [无障碍系列 Vol.1]

这是与无障碍相关的第四篇文章,今天我们聊一个必不可少但又反人类的设计:验证码

如果搜索“验证码 盲人”,很大概率会看到一则2016年的新闻:盲人因无法输入12306图形验证码状告铁路总局。验证码的存在不仅让普通人抓耳挠腮,也成为了几乎所有残障人士的噩梦。这个神奇的东西是因何存在,它在无障碍方面又有怎样的改进呢?

一句话总结

验证码被用来区分人类与机器,从而防止有人对网站进行恶意攻击;除了视觉验证机制,声音验证码更受视障用户的青睐。

目录

  • "请输入图中文字”:CAPTCHA

  • 廉价劳动力:reCAPTCHA

  • 听到请回答:Audio CAPTCHA

  • 硬核时刻:破解验证码

“请输入图中文字”: CAPTCHA

验证码的英文名叫做CAPTCHA [1],是一种区分人和机器的测试。许多网络服务都会受到机器的恶意攻击,比如黄牛抢票,注册多个邮箱发送垃圾邮件,或者利用代码帮爸妈发来的拼多多提现……这些攻击往往是通过代码实现的,而验证码的出现就是为了阻止这些攻击:除非你是个真人,否则别想用我的服务!

所以一个好的验证码,对用户而言需要非常简单,对机器而言需要非常困难。自然而然地,大家会联想到图像识别。在2000年左右,计算机视觉还没有强大到可以短时间内识别各种物体,对于识别模糊图像中的文字更是难于登天。于是第一代验证码CAPTCHA诞生,本质上就是看图认字:

当画面扭曲不是那么变态的时候,人类的通过率可以达到93% [2] ——问题解决了,不是吗?

廉价劳动力:reCAPTCHA

事情还没有那么简单——验证码需要花费用户不小的精力:平均每日会有两亿个验证码被输入。那么除了真人验证,这份人力劳动能不能用来做点其他的事?于是reCAPTCHA出现了:它的本质和CAPTCHA没有什么不同,也是让用户按图识字;然而不同于CAPTCHA的图片是由程序生成的,reCAPTCHA的图片是真实的古代文献里的文字:人们在扫描书籍使其电子化时,有许多书由于破损或者印刷问题,文字并不能被程序很好地识别。于是这部分文字就被用作了reCAPTCHA的测试图,而用户在填写验证码时,实际上也是帮助标注这些扫描图中的文字。

Google随机推出了reCAPTCHA第二代:点击图片来找出相关物体。例如点击所有包含街道牌的图片:

当你通过测试并且暗暗窃喜的时候,你点击的图片也已经被记录了下来,用作训练视觉模型的标注。然而这些验证机制无不存在一个共同的假设:用户可以看见图片。那么视力有障碍的用户该怎么办呢?

听到请回答:Audio CAPTCHA

聪明的你一定想到了:用声音来验证!没错,如果你仔细看上面那张街道牌的验证码,会发现左下角有一个耳机的图标,点击它的话,就会转到声音验证的模式。最普遍的声音验证方式,是播放一段带有嘈杂背景声的音频,而你的任务是把音频中读出的数字正确识别出来:

audio captcha - YouTube​www.youtube.com/watch?v=QMPJV9Sj8Yc

(音频验证,数字是54964342,你答对了吗(狗头 )

如果你播放了这个语音识别码,第一印象也许像我一样:这什么鬼东西,乱糟糟的甚至有点恐怖……因为背景声混入了许多其他人说话的声音,辨别真正的数字朗读反而会变得非常困难。实际上,研究发现语音验证码的回答准确率不足50% [3]。

由于语音只能从头听到尾,很难直接定位到关键信息。而图片即使盖住一部分,有时也可以根据剩下的画面推测有用信息。因此语音验证码对普通人来说有天然的难度加成——为了改善语音验证码的用户体验,不同版本的语音任务也被提了出来。例如给用户快进/快退的选项来帮助浏览 [3];播放不同的声音而非数字,例如鸟叫,火车声,猫叫,然后让用户输入某一种声音出现的次数,或者在播放特定声音时按下空格 [4] ;或者直接说出一道算术题让用户填写答案 [5]。这些设计通常可以把用户准确率提高到70%以上;也有一些网站会让用户说一段话,然后分析这段话是不是真人说出的。

国内许多验证码都尚未提供除了图片以外的验证方式,并先后推出滑块验证,点击图中文字等等奇葩的验证方式,使得验证难度大幅增加。不过短信验证码的普及也在一定程度上减少验证的困难。

硬核时刻:破解验证码

这里是硬核一点的知识,面向想要进一步了解的同学们:)

验证码真的能如愿以偿分出人类吗?当然不是!为了破解验证码,大致有这么几种主流的方式:

  1. 花钱找人帮忙!有些公司被称作“CAPTCHA farms”,专门雇人识别验证码。一些帮助盲人识别验证码的软件,例如“邦邦听图”,也是通过把验证码发送给志愿者来达到破解的目的。

  2. 机器学习。通过计算机视觉的算法来识别图中文字,通过语音识别来听数字——许多本文提到的验证码其实都已经被“破解”:例如unCaptcha甚至利用谷歌自家的语音识别破解了谷歌自己的验证码……


一个小小的验证码,如果设计不当,就会成为几千万用户的拦路虎——这些用户中,包括视力障碍者,读写障碍者,老年人…… 提供不同的验证方式,也是设计包容性的体现。如果你在登陆某个网站时,看到了音频验证码的选项——不要怀疑了,这一定是一家好公司!

本文引用: [1] Luis von Ahn, Manuel Blum, Nicholas J. Hopper, and John Langford: CAPTCHA: Using Hard AI Problems for Security, 2003 [2] Elie Bursztein, Steven Bethard, Celine Fabry, John C. Mitchell, Dan Jurafsky: How Good are Humans at Solving CAPTCHAs? A Large Scale Evaluation, 2010 [3] Jeffrey P. Bigham and Anna C. Cavender: Evaluating Existing Audio CAPTCHAs and an Interface Optimized for Non-Visual Use,2009 [4] Jonathan Lazar, Jinjuan Heidi Feng, Tim Brooks, Genna Melamed, Jon Holman, Abiodun Olalere, Nnanna Ekedebe, and Brian Wentz: The SoundsRight CAPTCHA: An Improved Approach to Audio Human Interaction Proofs for Blind Users, 2012 [5] Valerie Fanelle, Sepideh Karimi, Aditi Shah, Bharath Subramanian, and Sauvik Das: Blind and Human: Exploring More Usable Audio CAPTCHA Designs, 2020 [6] Kevin Bock, Daven Patel, George Hughey, Dave Levin: unCaptcha: A Low-Resource Defeat of reCaptcha's Audio Challenge, 2017

最后更新于