本文转载自腾讯网,大部分人可能都被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,其实也不用再被称之为“验证码”了,因为它并不需要用户做出任何证据来“证明”自己是个人类。

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

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

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

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

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

  1. 关于发布后网站调用本地exe的曲线救国之路

    关于发布后网站调用本地exe的曲线救国之路 web调用本地exe-尝试一 普遍方法:使用Process来调用应用程序 优缺点 优点 缺点 web调用本地exe-尝试二 优缺点 优点 缺点 web调用本 ...

  2. 解决服务器搭建傻妞sillyGirl机器人后扫码登录异常【4.26】

    文章目录 前言 ①安装面板 ②登录面板 ③添加入站规则 ④手机下载软件 ⑤进入软件 ⑥进入app设置-预定义规则选全局 ⑦返回主界面 ⑧运行sillygirl+重新扫描登录 前言 提示:机器人登录异常 ...

  3. 微信扫码 - 关注公众号后网站自动注册并登录的实现

    微信扫码 - 关注公众号后网站自动注册并登录的实现 需求描述 在自己网站上点击微信登录,网站自己弹出一个二维码.扫描二维码后弹出公众号的关注界面.只要一关注公众号网站自动登录.第二次扫描登录的时候网站 ...

  4. 无法更改域名 php网页,WordPress更改新域名后网站无法正常运行怎么办?

    很多站长在吐槽WordPress站点更改域名后网站无法正常运行,其实这是一个比较简单的问题,一般新手站长会经常遇到这个问题,那么WordPress更改新域名后网站无法正常运行怎么办? 方法一: 修改w ...

  5. 解题代码 用jquery控制一个按钮当一次点击完之后5 秒后才能继续点击 验证码的制作...

    解题代码 用jquery控制一个按钮当一次点击完之后5 秒后才能继续点击 复制验证码的制作 转载于:https://www.cnblogs.com/yaomengli/p/6927630.html

  6. fiddler和xampp安装成功后,网站打不开的原因

    fiddler和xampp安装成功后,网站打不开,出现403的错误 解决办法 编辑httpd.conf文件注释掉以下代码 #AllowOverride none # Require all denie ...

  7. 点击input,区域选中后外面会出现其他颜色边框去除方式和更改input字体颜色

    点击input,区域选中后外面会出现其他颜色边框去除方式和更改input字体颜色 {border:0;outline:none;} //去除边框 定义和用法 outline (轮廓)是绘制于元素周围的 ...

  8. 解决在工具栏Chrome图标上点击右键会显示“常去网站”和“最后关闭网站”的问题

    解决在工具栏Chrome图标上点击右键会显示"常去网站"和"最后关闭网站"的问题 参考文章: (1)解决在工具栏Chrome图标上点击右键会显示"常去 ...

  9. 使用CDN加速后网站不能使用HttpWebRequest提交数据

    使用CDN加速后网站不能使用HttpWebRequest提交数据 因为CDN的安全机制,处理方法,修改服务器HOST文件,将IP直接映身到外部域名 posted on 2013-02-03 13:07 ...

最新文章

  1. 二叉树非递归遍历的经典求解
  2. 用python读写excel(xlrd、xlwt)
  3. 区块链和java哪个更难_java 区块链中设计合理的难度系数
  4. 设计模式大集锦 程序员面试全攻略
  5. Python之IO编程——文件读写、StringIO/BytesIO、操作文件和目录、序列化
  6. [PALAPALA] 无题 - 外来的和尚会念经
  7. Web项目替换jar包中的文件的方法
  8. Java实验8 T2.编程包含一个文本框和一个文本区域
  9. 使用com.aspose.words将word模板转为PDF乱码解决方案(window下正常)
  10. Spring Boot中自动注入没有生效,报NullPointer的问题
  11. 求解汉诺塔问题(提示, 使用递归)
  12. HTML设置自动跳转后无反应,实际项目中html跳转无响应原因及解决方案总结
  13. 苹果x和xs买哪个好_苹果12和12pro哪个值得买_苹果12和12pro哪个好
  14. 大厂字节程序员薪资曝光:排行世界第五厉害了
  15. 产品经理需要了解的概念【职位篇】
  16. jupyter notebook中使用matplotlib的相关问题
  17. 【CSS 教程系列第 3 篇】CSS 如何添加注释
  18. Android 音频开发——AudioRecord录音
  19. Anima2D官方中文使用手册(对应Anima2D1.1.4)
  20. 智能安防监控系统的发展与应用

热门文章

  1. 开发板使用网线连接路由器,无法上网的解决办法
  2. 特斯拉(自动驾驶)如何做持续集成和持续交付
  3. 区块链与会计行业结合将产生何种化学反应?
  4. php mysql 网站 任务书_办公用品网上商城的设计与实现PHP+MYSQL任务书
  5. 猎豹 c++ 金山毒霸面试
  6. springboot报如下信息:Consider defining a bean of type 'com.***.Handler' in your configuration
  7. keepalived 检测服务状态、keepalived 检测脚本
  8. Python_Pandas
  9. c语言经典程序100例 - 百度,经典C语言程序100例(51-80)_绝望之家_百度空间
  10. 浏览器内核-Webkit