我不是机器人
2021-08-19猫头鹰
猫头鹰
在登录大多数国外网站时,系统会要求用户做一个奇怪的保证——“I'm not a robot(我不是机器人)”。大多数情况下,用户点击确认键之后,网页就会放行。这种操作简单却十分怪异的验证形式让人十分疑惑,它究竟是如何判断操作者是不是机器人的呢?
要想了解这一点,我们就要回顾验证码的产生和发展。
2000年左右,网络已经拉开了互联网时代的序幕。一方面,各类论坛和服务商的出现为网络交流奠定了基础;另一方面,垃圾邮件、恶意信息、评论等随着脚本的出现扑面而来,著名的网站雅虎曾深受恶意脚本的威胁。于是,雅虎向卡内基梅隆大学计算机系求助,希望能找到一种能分辨网页使用者是真人用户还是恶意机器脚本的方法。
当时就读于卡内基梅隆大学计算机专业的21岁学生路易斯·冯·安恩提出思路:要让注册用户证明自己是人类,比如要求用户做一些人类可以轻而易举做到但机器人做不到的事情。
相比人工智能极其发达的今天,21世纪初的机器人并不聪明,识别图片就足以难倒它们。如果再将图片中的字符稍加扭曲,就可以轻易阻挡恶意脚本。在2000年左右,路易斯·冯·安恩发现了一个方法,并将其命名为“全自动区分计算机和人类的图灵测试”。
初期的验证码形式,凭借其极度扭曲的字符和难以识别的图案,给大多数人留下了深刻的印象。在这个阶段,验证码的难度与机器人智商的发展成正比,以至于最后让许多真人用户难以辨认。比如“U”和“V”由于字符的扭曲变成了孪生兄弟,而数字“0”和字母“o”看起来毫无差别。
所幸第一代驗证码并没有存在多久,中文验证码取代其成为主流。相比起扭曲字符带给人们的疑惑,中文验证码带给人们更多的是心理伤害。如2017年,成都一名大四女生在网上进行考研报名时,中文验证码竟然是“别考”。事后官方表明,此事件纯属巧合。
每个人输入验证码,只需要几秒钟时间,但上亿人的几秒钟叠加起来,就是很大的时间成本。路易斯·冯·安恩便将古籍上难以辨认的词变成验证码,利用这些时间推动古籍辨认的进程。他设置了两个验证码,一个是已知单词,另一个是摘自古籍中的单词。用户正确输入前者就可以通过验证,并且系统会将用户输入的古籍单词视为有效答案。如果有三个用户输入的同一古籍单词相同,那么该单词就得到辨识。据统计,每天大约有4万个古籍单词被广大网友所辨认。
人工智能的飞跃式发展,让由字符或者图案构成的验证码无力维持网络环境的和平。2014年,谷歌通过研究得出:机器人辨认扭曲字符的正确率高达99.8%,而人类只有33%。因此,谷歌做出应对之策——“没有验证码的验证码”,即我们今天常常看到的“I'm not a robot”,这类验证码为网站用户提供了便利,其背后机制却相当复杂,甚至涉及用户隐私。当用户点击“I'm not a robot”时,谷歌会分析用户在网站中的各种行为,收集用户的指针移动速率、当前IP、是否使用插件等信息,以判断用户是否为人类。从某种程度上来说,这种便利是用用户隐私换取的。
近两年,谷歌又推出了第三代验证码,用户无须证明自己是人类,系统会自行根据用户使用网页的情况来判断,但同时也意味着用户隐私被进一步侵犯。