注册账号、找回密码、信息验证……在互联网世界,免不了用到验证码。其中,滑动图块验证码只需要简单一滑,就能完成验证。这么简单的滑动验证码,是怎么区分出人类和机器人的呢?
验证码是一种区分用户是计算机还是人的公共全自动程序,主要是为了防止用户利用机器人恶意破解密码、登录、灌水、刷票等。验证码由计算机生成,评判用户做出的回答,从而区分出当前访问者是人类还是机器人,并做出让行或阻拦的反应。
验证码的形式很多,除了看图输入文字和数字,还有依次点击正确图案、算数学题、输入历史事件日期等。结果有着庞大数据库作支撑、不断学习发展的机器人没被拦住,人却被难住了。
2023 年的一项研究显示,在破解各种类型验证码的时间和准确度上,机器人的表现几乎都优于人类。最简单的点击识别,人类最快需要3.1 秒,准确率最高为85%,而机器人只需1.4 秒就能通过,且准确率高达100%。扭曲文本的识别,人类最快需要9 秒,准确率最高也不过84%,而机器人不到1 秒就能完成,准确率为99.8%。难度较大的图片验证,机器人的速度虽然稍有下降,但还是要比人类快一些,准确度上也与人类相当。而滑动验证码,相比机器人5.3 秒的时间,人类也慢得多,平均是28 ~ 30 秒。
既然和机器人比聪明比不过,科学家们另辟蹊径,选择和机器人比“蠢”。
表面上来看,滑动验证码的验证方式是“滑块是否被正确拖放到缺口处”,但实际上其校验的信息是“拖放轨迹是否符合真实用户的行为特征”,因此有时滑块和缺口没有对齐也能够验证成功。
对机器人来说,模拟鼠标画出直线并不是一件难事,难的是模拟真实用户的拖放轨迹。
人类难以快速地画出规定长度的完美直线,在移动滑块的过程中会手抖、速度变慢,呈现出的光标轨迹也会发生无规律的抖动,这种无规律性正是程序设定下的机器人难以模仿和出现的。所以一旦滑块移动得快又速度均匀,用户就会被认定为是机器人,无法通过验证。
问题来了,人怎么这么“笨”,连条直线都画不好?
阻碍我们画出完美直线的“元凶”之一,是震颤。震颤分为生理性震颤和病理性震颤。前者与生俱来,后者是由于疾病而产生的一种运动型障碍。此外,震颤还可分为静止性震颤和动作性震颤。静止性震颤是肢体重量得到充分支撑且处于放松状态下出现的震颤,比如,手放松地放在膝盖上会不由自主地发生颤抖。动作性震颤发生在肌肉收缩时,包括运动性震颤、意向性震颤等,这也是人们在滑动验证时导致拖放轨迹抖动的主要原因。
除了震颤,注意力有限、反应延迟也是人类在滑动验证过程中体现出独特行为特征的原因。在背景图片内容过多的情况下,既要确定缺口的位置,又要观察滑块的运动状态,注意力会被分散,加之手眼脑协调能力不够精细,导致画出的线条轨迹抖动、扭曲。
此外,整个手眼脑信号反馈系统有延迟。从眼睛观察到光标偏离路线,发出修正信号,到大脑识别到信号并命令肌肉做出反应,其中存在着神经传导信号的时间延迟。人类虽然能够通过后天训练提高反应速度,但上升空间有限。
除了滑动图块,类似的验证方式还有旋转图片、手势轨迹验证等,其本质与滑动验证是一样的。这些验证码,通过运用人类的行为特征,让机器人难以精确模仿,既安全又不容易误伤。
看到这里,再在完成滑动验证后,得到“打败99% 的人”的夸奖时,希望你还能保持从前的开心和自豪,毕竟这起码说明了,机器人没办法取代人类。
(摘自“壹读”微信公众号,魏克图)
