点击“我不是机器人”,网站到底怎么知道你真的是人?

大部分人可能都被Google要求做过这样奇怪的保证:

“我不是机器人”。

只要你经常使用一些国外的网站,它就会隔三差五地弹出这个对话框,要求你点击来“声明”自己不是机器人。

以前这种“证明自己是人”的环节里,有很多让人不胜其烦的验证码,要么是一串扭曲的字符,要么是一堆支离破碎的图片让你辨认。但在这种最新的验证下,大部分情况下,只要你点击确认之后,网页就会成功放行。

这显然是一种更方便快捷的验证形式。但它同时也让一些用户陷入了迷惑:

“这究竟怎么判断我到底是不是机器人的?”

“难道是因为机器人不会撒谎?”

事实当然并非如此。

简单的点击背后,其实暗藏着很多信息传递,甚至包含你的隐私的暴露……

这个你已经可能见怪不怪的机器人测试背后,掩盖着的是十数年人机对抗的斗争史。

点击“我不是机器人”这一交互形式,本质上来说还是你在填验证码。

要解释这一点,我们就有必要回顾一下验证码的发展历程。

对于现在的用户而言,填写各类验证码已经必不可缺的技能之一。验证码只会耽误每位用户几秒钟的时间,但却能极大提升网络环境的“清净程度”。

如果没有它的存在,那你现在恐怕会遭受更多的垃圾邮件轰炸,信息骚扰。服务商也会面对泱泱脚本大军而感到崩溃……

就像20年前的互联网那样。

2000年之前,验证码并不存在。那时的网络虽然并不发达,但已开始兴起,各类论坛和邮件服务商的涌现,拉开了网络交流时代的序幕,而与正向技术一同出现,当然还有种种恶意脚本。

垃圾邮件、评论、恶意信息随着脚本的出现开始漫天飞舞。雅虎作为2000年左右最为出名的网络服务商之一,深受其害——他们是互联网早期最重要的免费邮箱提供商,但面对脚本和海量垃圾邮件束手无策。于是雅虎便联系到了卡内基梅隆大学的计算机科学系来寻求帮助。

雅虎的主要需求是想“有效分清真人用户和机器脚本”。卡内基梅隆大学一名21岁的学生路易斯·冯·安恩(Luis Von Ahn)针对这个目的有了思路:要让注册的用户提供“证据”来证明自己是一个人类,例如做一些只有人类能做,而机器做不到的事情。

什么事情是在当时只有人类能做而机器做不到的?答案是阅读图片。

人类可以很轻松的读出图片中的信息,但当时的机器并没有这样的能力。如果通过程序来提供一些稍加扭曲的图片,然后让注册者回答图片中的内容,便能很轻易地将机器拒之门外。

听起来是不是很熟悉?这正是即使在现在我们也很常看到的验证码形式之一。

2000年左右,这名学生路易斯·冯·安恩发明了验证码这一概念,他将其命名为CAPTCHA。

CAPTCHA是Completely Automated Public Turing test to tell Computers and Humans Apart的简写,意为“全自动区分计算机和人类的图灵测试”。

也是从这一刻开始,一场持续数十年的,人与机器之间,围绕着图灵测试的对抗开始了。

说起这种最早出现,也是最常见的验证码形式,恐怕大多数人,都对它有过一些不太美好的回忆。

最早出现的验证码,都是一些简单容易看懂的形式。人类可以很简单地分清上面的内容。

但随着机器识别图片能力的提高,验证码的难度也日益提升。

有时它的难度甚至大到网友怀疑自己的程度。

为了避免被机器识别,验证码需要对图上的文字加以扭曲等视觉干扰,本质上是为了避免被机器认出来。

但有时扭曲的程度也难到了人类。

“U”和“V”像是双胞胎兄弟,“O”和“0”很难分清,这基本上是每个网友都碰见过的麻烦。但这些都只是初级问题,当中文验证码出现之后,人们面前的困难也就更多了。

和英文、数字验证码不同的是,中文验证码更多是给人心理上的折磨。

2017年,成都大学的一名大四女生,在网上准备报名考研。输完用户和密码后,她的屏幕上弹出两个字的中文验证码:

“别考”

后官方表明“纯属巧合”

关于这种初级形态的验证码,类似的问题无时无刻在困扰着网民们。而验证码又对网络环境而言来说是个不可或缺的存在。

每位网民都要在验证码上花费几秒时间,看似成本短暂,但叠加起来又是一个巨大的量级。

根据统计数据,全球网民每天需要输入近2亿次验证码,每次需要花费十秒。算起来,全人类每天会在验证码上花费50万个小时。

验证码最初的发明者,路易斯·冯·安恩发现这个事实后,深感浪费——毕竟时间就是金钱。而这50万小时的资源,就这样白白浪费掉了。

他现在是多邻国的创始人

有什么能利用这些时间的方法吗?路易斯·冯·安恩又有了想法:既然验证码需要让人类辨认图上的文字,那能不能让人类“顺带”帮忙辨认一下一些难以识别的书籍?

这听起来似乎是天方夜谭,但路易斯·冯·安恩通过一个简单的小方法实现了。

他把验证码需要输入的单词改为两个,其中一个是已知答案的单词,另一个是摘自旧书或手稿中的单词。

已知答案的单词是单纯的验证码,如果用户成功输入,那就已经通过了测试。

于此同时,这也意味着这名用户不是瞎打的字。那么用户所辨认的另一个截取自古书籍的单词的内容,也将被记录为有效答案。如果有3位用户对一个单词给出同样的答案,那么该字就将得到校验。

你看似是在输入验证码,其实是在帮助翻译古书籍上的内容。

这个新的验证码机制(reCaptcha)很快被各大网站利用,随后被谷歌收购。每天大约有4000万个单词就这样被辨认出来,这个新的验证码系统,靠着无穷无尽的免费人力资源,每年能读出数十万本书。

这是验证码大战的另一次升级:人类创造脚本来牟利,脚本让人类在验证码上浪费无数时间成本,而聪明的人类又把这份成本有效的利用了。

当然,这并不意味着这场斗争的停止。

看图识字型验证码,仅仅维持了一段时间的互联网和平。验证码农场的诞生,开始带来一些改变。

所谓验证码农场,就是一些专门来人工识别验证码的工作室。它的原理非常简单:“农场主”雇佣大量廉价人力资源,这些人坐在电脑前,无间断地输入从各地发来的需要辨认的验证码。

这种质朴的方式的确扰乱了大环境,但带来的改变并没有那么致命。

真正的变化,还是起于机器识别能力的日益提升。随着技术逐步升级,原本对于机器来说难以辨认的扭曲验证码,已经不再是一个天大的难题。

在2014年,谷歌发布新的研究成果,一个专门用来解读扭曲验证码内容的算法。

最后测试的结果中,机器解读验证码成功率99.8%,而人类的成功率,是33%。

在绝对的技术面前,人力再一次落败。但这当然不是验证码的陌路。

2014年,Google发布了新一代验证码技术,他们将其称为:“No CAPTCHA reCAPTCHA ”——“没有验证码的验证码”。

这个没有验证码的验证码十分简单,只需要你勾选一个按钮,来“证明”自己不是机器人。

这就是如今我们常常看见的“我不是机器人”。

“我不是机器人”看起来简单方便,只需用户轻轻一点。但背后的逻辑要比普通验证码复杂许多。

当你点击“我不是机器人”时,Google将会分析你的各种行为,包括点验证码前、点验证码时、点验证码后的动作,来判断你是不是人类。

它也会收集一些你的数据,比如指针移动速率,当前IP,是否使用插件,页面使用时间,进行过多少次点击……

如果你展现出来的行为,都符合一个人类的标准,那网页就会放行。

基本上可以这样说:这是用一小部分隐私换来的快捷。

而且有意思的是,这种测试对于真正的(物理)机器人来说反倒不太有效。

当然,有时Google也无法单纯从你的行为来确认你是否为人类,而这时就会出现图片测试,要求用户选择图片中出现的XX。

这种也是当下比较常见的一种验证码形式,同时也遭人吐槽最多。

比如说,图片测试中要求辨认的物体,总是很刚好地超出选项框一点点,令人左右为难。

“选出图片中的汽车”往往是最难的一项。

选交通信号灯也常常让用户感到无从下手。

有时图片里根本不会有要求辨认的物体:

基本上每个网民,都曾被这种类型的验证码折磨过几回。也让“选出图片中的xx”顺利成为了一种梗图。

如果你有幸曾在12306上购买过车票,应该也能理解这种痛苦。自2015年开始,12306上线了新的图片验证码,自此让所有买票人叫苦连天。

据官方统计,能一次性输入对12306验证码,只有8%。

脚本越来越厉害,验证码越变越复杂,这似乎是一个无解的循环……

由人们创造的,日益提升的机器算法,和同样出自于人类之手的脚本相互抗衡,最终诞生的时间成本,似乎还是要人类自己来承担。

最近这两年,Google又推出了新一代验证码 reCaptcha v3。

而reCaptcha v3,其实也不用再被称之为“验证码”了,因为它并不需要用户做出任何证据来“证明”自己是个人类。

它会在网站后台自动记录使用者在网站中浏览的行为特征,随后根据这些记录来给用户打分,当用户的“非人”操作足够多之后,就会被判定为机器人。

这项技术如今并没有被大面积使用。但对验证码的发展来说,似乎是个较好的方向。但它必然也是有代价的,比如隐私……

截至目前来看,这场人与机器之间,围绕着图灵测试的对抗,仍未有个明确的局势。

或许在技术更加发达的未来,如何证明自己是个人类,对于人类而言将变成更难的一个问题。

推荐阅读