本文转载自程序员不高兴

现在上网冲浪,当你完成注册登录或者做一些操作的时候,随之而来的会是各式各样的验证码。

虽然我们不怵任何验证,但总有被验证码气的抓耳挠腮的时候。

尤其是早先的字符验证码,不经意间就会被那些随机出现的字符秀一波智商。

有祝你早日离职的:

有直接说你是 loser,甚至考研报名时直接弹出俩字「别考」的:

还有小米这种更直接的:

没错,和最开始那种英文、数字组合而成的字符验证码不同,巧合下的中文验证码是直接骑脸输出。

不过这些年验证码的形式也一直在变化,像选图、答题这样需要你交互的验证码也会时不时的冒头出现。

有让你做阅读理解的:

有让你看抽象画的:

还有这种更过分的:

所以我每次想到验证码,总会想起当年那个吐槽 12306 的奶糖哥,那句「我又没有吃到嘴里头,我 tm 知道哪个是奶糖」的吐槽历历在目。

不过这个能浪费我们数秒的验证码,虽然看着总是槽点满满,但它绝不是多余的,甚至说过去的验证码一度成为了互联网的保护神。

没有夸张,在网友们和沙雕验证码斗争的背后,藏着一场更大的人机对抗赛。

过去

你能想象 20 多年前,那个不存在的验证码的互联网有多荒蛮吗?

虽然那时的网络和发达挂不上钩,但论坛、门户网站的出现让这个年轻的互联网处处散发着生机。

在当时可没有现在的微信、QQ,大家交流向来用的都是邮箱,不少网络服务商都提供有免费邮箱注册的服务。

所以就有一批盲生发现了华点,编写脚本注册了大量的邮箱,然后用来实现垃圾邮件轰炸和网络诈骗,与现在的某些黑产比起来也不遑多让。

所以那时的互联网,被脚本大军的信息骚扰弄的是乌烟瘴气,服务商们更是哑巴吃黄连,有口难说。

咋整,自己解决不了就请能解决问题的大神呗。

于是他们联系了卡内基梅隆大学的计算机科学系,正在上学的天才少年路易斯提了个方案:

既然解决不了五花八门的脚本,为啥不让用户自己来自证身份,加一个只有人类才能做到的事情不就解决了。

什么事只有人类才能做到?路易斯想到的是读图,然后字符验证码应运而生。

在千禧年上下,还是学生的路易斯提出了验证码这一概念,然后命名为「CAPTCHA」,其中的字母 T 代表着图灵测试。

但谁也没想到,这个小小的验证码竟然真的保护起了尚且稚嫩的互联网,后面又会给我们带来这么多欢乐。

发展

早期的验证码是一眼就能看出来的字母和数字,对于身为人类的我们是一点难度都没有。

但你有张良计,我有过墙梯,当机器识别图片被脚本大面积使用的时候,过去的字符验证码很难再拦截脚本作恶。

为了不让脚本正确识别,验证码被不断的更新升级,让验证码变长,给背景加上干扰,甚至是扭曲验证码。

一来二去之下,被增加难度的可不只有脚本,还有肉眼识别的我们。

为此,验证码不再局限于字符,识图、问答等多种基于图片的新型验证码相继问世。

可越来越复杂的验证码并没有解决问题,据统计网络地球村上一天浪费在验证码上的时间就有 50 万个小时。

还记得那个发明验证码的路易斯不,人家这回当了盲生,发现了新的华点。

既然这 50 万个小时不可避免,何不薅一薅全球网友的羊毛,把这 50 万个小时二次利用一下。

于是,他提出了新的验证机制,reCAPTCHA。

薅羊毛

路西斯对于自己的新想法是这么说的:既然人类与机器各有擅长,能不能利用验证码系统,让人类和机器共同解决问题呢?

能,当然能,反正大家都要用肉眼实打实的识别一遍文字,为何不把由电脑随机生成的字符换成已经模糊的旧书或手写稿。

于是,再往后的验证码你就能看到很多奇奇怪怪的字体。

当 reCAPTCHA 被各大网站使用起来后,谷歌盯上了这个项目,发挥钞能力把 reCAPTCHA 收购了下来。

按照早先路易斯的思路,reCAPTCHA 被用来识别旧书或手稿,每天能有近 4000 万个单词被人为识别出。

可谷歌没想着就这么放过如此庞大的免费人力资源,从 2012 年起,谷歌的自家应用谷歌街景中的一些识别不了的门牌和路牌开始出现在 reCAPTCHA 里。

这一回手掏的操作赋予了验证码新的价值,但丝毫没有解决 50 万个小时被浪费的现实。

更残酷的现实,据当时谷歌的统计,人类成功识别复杂验证码的成功率只有 33%。

我不是机器人

直到 2014 年,有了「我不是机器人」的谷歌验证。

没有过去那些奇怪难懂的图片,只需用户移动鼠标一勾,验证就通过了。

表面上看起来没有任何难度,但在背后谷歌做了更多的准备。

在你移动鼠标的过程中,谷歌收集了你数据,比如移动鼠标的速度、有无重复点击、当前 IP 地址等等。

不过这些后台才会做的验证反馈到了页面,就变成了点击,通过。

当然谷歌可没有忘记之前薅全网羊毛的经历,后面也添加了识别图片的步骤,背地里顺手训练了自家 AI 的识图能力。

是的,有些时候,可能谷歌自己也不清楚自家的验证码正解到底是什么。

有这种暗含陷阱的:

最常见的就是这种有关交通的验证码,路标、红绿灯、自行车、大巴车等等不一而足。

为啥老针对交通,自然是因为在谷歌的 AI 规划中,无人驾驶是最先受益的项目。

可以说这个小小的验证码,集全网之力,成就了谷歌。

当然了,早期也有这种过分的:

有时候点错了也有可能通过,不是你运气好,而是人家也不知道答案。

用来牟利的脚本,阻挡脚本的验证码,重新利用验证码创造新价值的人类,这个转动的圈从未停歇。

医学验证码

当然,利用验证码创造新价值的公司不只有谷歌,腾讯也在做这个事。

今年年初,我记得腾讯和深圳大学一起搞了个医学验证码,用来验证的是医学影像图片,背后的目的是提高 AI 标注和诊断的成功率。

不得不说,相比谷歌来说,小企鹅的这个项目更有爱一些。

而且这还是一项公益项目,虽然验证起来可能会更麻烦了些,但我相信碰到这个验证码的人,会停下多花这么几秒,让这个验证码更精准些。

总结

关于验证码,这个围绕着图灵测试的人机对抗赛的故事还在继续。

等哪天人类胜利了,可能早几年的那种和刷单一样让你识别验证码的兼职又来了。又或许哪天机器胜利了,我们就要面对人类如何证明自己是人类的新难题了,真到了那一天,估计机器得学会降智才能跟上人类的脚步吧

好了,这一篇到这就结束了,最后再多吐槽一句,暴雪的验证码是真恶心。

想不到验证码背后的故事这么有意思相关推荐

  1. Vue框架背后的故事

    文章目录 前言 Vue萌芽 Vue名字的由来 因着Vue免试进入Meteor Vue逐步完善 Taylor推荐Vue Vue因受质疑发布1.0 LinusBorg加入 萌生全职做Vue想法 Vue在恰 ...

  2. 图像处理经典图片Lena背后的故事

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 在数字图像处理中,Lena(Lenna)是一张 ...

  3. 图像处理界的标准图像lena背后的故事

    在数字图像处理中,Lena(Lenna)是一张被广泛使用的标准图片,特别在图像压缩的算法研究中.每天全球数一万计的科研人员用Lena进行着反复实验,而每天又有以Lena为例子的论文发表在核心期刊上. ...

  4. 【奇虎360】剥开周鸿祎天天向上背后的故事

    导读]周鸿祎在2013年1月21日当天就到湖南卫视娱乐节目<天天向上>录制了一期360产品专场节目,这一节目于2013年2月1日播出.在节目当中,周鸿祎说了一大堆有意思的话,忽悠了不少小白 ...

  5. ​Uber新Logo背后的故事:二进制和原子带来灵感

    Uber更换新Logo意味着公司品牌的全面改变 凤凰科技讯 北京时间2月4日消息,打车应用Uber最近启用全新Logo,看起来只是一个不经意的举动,实则饱含了Uber创始人.CEO特拉维斯·卡兰尼克( ...

  6. HTML5背后的故事

    乍一看,你可能觉得HTML5是网页编写语言HTML的第5个版本.但实际上,这背后的故事可乱得多. HTML5是一个叛逆.它是由一群自由思想者组成的团队设计出来的,这个团队的成员并不负责制定官方HTML ...

  7. android 新闻编辑,超机访问:ZOL手机新闻编辑背后的故事

    在上周超机访问中,我们为大家介绍了手机频道评测刘宇航和手机的故事.通过上期节目,我们对这位评测编辑以及他的工作.使用手机的偏好有了一个全面的了解.本期节目我们再次请到了中关村在线的编辑,来讲讲他和手机 ...

  8. 我眼中的计算机,我眼中的计算机-计算机开机背后的故事

    我眼中的计算机-计算机开机背后的故事 (20页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 ? 我们每天使用计算机必 须要做的第一件事就 ...

  9. 【下载】《看见新力量》第二期,带你走进数十位科技创业者背后的故事

    简介:这是一本正在进行中的科技创业者的记录,书中涉及的创业者还都奔跑在路上.然而,他们的所思所做,已足以令一些产业发生微小而有效的变化,令数字经济时代下人们的生活变得更加智能.阿里云创新中心作为科技创 ...

最新文章

  1. Visual Studio 2010 Ultimate测试体系结构
  2. IIS中架设二级域名网站
  3. ios之UISegmentedcontol
  4. python 编码问题_Python电源挑战| 竞争编码问题
  5. BGP ——路由过滤+路由聚合(讲解+配置)
  6. php获取apk中文应用名,php提取apk包信息 - 搜知道网 - 搜知道社区,C, iOS,Android,golang 等的知识....
  7. 用chkconfig配置linux自启动服务,用chkconfig配置linux自启动服务
  8. 云计算入门科普系列:云计算与人工智能
  9. configServer的高可用
  10. System.Net.Http.Formatting的nuget版本冲突问题
  11. Delphi7学习第一天
  12. 对抗样本生成算法-FGSM、I-FGSM、ILCM、PGD
  13. linux任务计划时间讲解,linux下计划任务详解
  14. android旧版本运行器下载,有没有办法让新版安卓系统运行以前老安卓版本的软件?...
  15. java中三元运算符_java中的三元运算符详解
  16. “笨办法学python”学习笔记-一些附加题
  17. Ubuntu18.04如何安装汉语(拼音)输入法
  18. 关系数据理论--规范化
  19. 记录vue预渲染prerender-spa-plugin踏坑
  20. python关于二手房的课程论文_基于python爬取链家二手房信息代码示例

热门文章

  1. Shape-Aware Meta-Learning 在模型泛化中引入形状约束
  2. html表格上下居中
  3. 赋值过程中的类型转换,以及截断问题
  4. 制作 docker 精简 jre8 基础镜像
  5. CSS+DIV三种布局方式
  6. 计算机小学数学辅助教学缺点及对策 论文,小学数学第二学段图形与几何领域的作业设计研究...
  7. Route命令使用详解
  8. 假设有50瓶饮料,喝完3个空瓶可以换一瓶饮料,依次类推,请问总共喝了多少瓶饮料?
  9. android控制创维电视,创维电视怎么连接手机 创维电视连接手机的方法【详细介绍】...
  10. Orcal 用户权限