百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

繁琐的验证背后,竟是一场“人机大战”?

myzbx 2025-02-08 12:03 25 浏览


证明自己不是机器人,几乎是每个网络冲浪人的日常小考。


有太多这样的瞬间:你正在网上订票,准备支付时,界面出现一个弹窗要求你确认你是人类:

为了给程序证明我不是程序 ——

你在5秒内找出了所有的十字路口,

在3秒内点击了混在草丛后的自行车,

以超过全民85%的速度把滑块移到了正确的位置……

最终,以人类身份光荣地通过了系统的考验!


那么,这个验证是如何判断区分真实人类的?机器人难道就无法勾选「我不是机器人」的复选框吗?


首先,我们来介绍一下这场人机战的关键裁判—— reCAPTCHA。



01

什么是reCAPTCHA

reCAPTCHA是Google开发的一种安全机制,核心任务就是区分真人用户和自动化程序(比如“爬虫”或机器人等)———


每当你在网上点击那个“我不是机器人”的小方框,就是在参与一场人机较量


reCAPTCHA就是较量中的裁判,通过用户的点击进行判断,把恶意程序挡在门外,确保只有真正的用户才能通过。


02

reCAPTCHA的演变历程

reCAPTCHA最早诞生在20年代初期,随着互联网的兴起,网络开始面临越来越多的垃圾信息和恶意程序的威胁。当时,卡内基梅隆大学的路易斯·冯·安(Luis von Ahn)在研究恶意程序防御时开发了reCAPTCHA。


这种技术最初通过让用户识别扭曲的文字或图像,来验证其是否为人类。


比较典型的验证

偶尔也会遇到特别离谱的……


研究过程中,冯·安意识到这项技术还可以应用于帮助转录旧手稿。为此,冯·安进一步改进了reCAPTCHA:不仅使用验证码,也同时把老旧文档文献中的单词展示给用户,借助用户的验证过程完成标注,助力历史文献的数字化。(这些文献中的字迹仅靠光学字符识别系统(OCR)无法很好地识别)


reCAPTCHA的使用大大减少了人工手动转录文献的工作量。目前已有约5万个网站在使用它进行身份验证,每天帮助转录超过1800万个单词。世界头部互联网档案馆(Internet Archive)每天使用reCAPTCHA来数字化多达1000本书籍、报纸和其他文档;《纽约时报》也利用reCAPTCHA来数字化其自1851年以来的档案。


和传统的OCR技术相比,reCAPTCHA在处理旧文档时的准确率高达99%,远远优于OCR在处理19世纪前出版书籍时高达20%的错误率


这个方法一开始效果还不错,但随着技术的进步,机器人也慢慢地学会了识别这些扭曲的文字。

于是reCAPTCHA也跟着进化,从简单的文字识别变成了我们今天看到的「请点击所有有交通灯的图片」之类的图片识别任务,以及让用户勾选「我不是机器人」的方式来完成验证。


谷歌在2009年收购了reCAPTCHA后,把这种技术用到了谷歌书籍和Google Maps等项目,用来改进文字识别和地理数据处理。


(顿悟原来我每次呕心沥血完成验证,都在充当Google的人工标注劳动力


那么,reCAPTCHA究竟是如何判断你是人类还是机器人的?



03

验证背后的实现原理


当你点击这个“我不是机器人”的方框时,reCAPTCHA就会根据你的点击行为判断你是否是一个真实的人类。


点击行为分析背后是非常有趣的领域:人机交互(HCI)与行为生物识别(Behavioral Biometrics):通过大量的行为数据分析,从用户的日常操作中提取出生物行为特征,与机器人的行为对比。

识别的关键并不在于你是否能在框中完成点击,而在于点击的动作。


reCAPTCHA通过分析你点击的速度、鼠标的轨迹,以及你在页面上的一些小动作来判断你到底是不是人类。

人在操作鼠标时,手指总是会有些许抖动的。移动路径可能会有一些小弯曲或停顿、速度时快时慢、点击前随着阅读思考有小片刻停顿,或是在点击后追加一些惯性动作。这些微小的变化通常会比机器人更自然。


而机器人则趋向于完美的直线和精准的点击。


大量行为数据分析发现,机器人虽然能快准狠地点击目标,但它们的动作太“完美”,不像人类的随意:鼠标的移动路径通常是最短的直线,点击速度也十分一致。这种差异是用来识别人类和机器人的关键。


(原来我胜出是因为菜…)


04

人类vs机器的移动轨迹


Castle(一家专注做账户安全和欺诈检测的公司)的研究员Johan Brissmyr通过记录鼠标在网页上的位置,展示了人机两种截然不同的移动轨迹:包括瞬间跳跃、直线移动和贝塞尔曲线:



可以看出,模拟生成的自动化程序通常会通过直接指定坐标的方式移动鼠标,导致不自然的轨迹,如瞬间跳跃或直线移动(1A)。

通过移动速度和加速度的分析比对,也可以发现机器人轨迹中的加速度通常接近于零,这是识别人机的关键。


人类日常点击鼠标时,随着手腕手指的发力,鼠标的移动轨迹会产生加速度变化。而自动化程序的鼠标移动通常是以恒定速度沿直线完成,加速度接近零。


针对行为分析的结果,系统会为每个用户生成一个“信誉评分”(score)。这个评分从0.1到1不等。分数越高,说明系统越相信你是个真真切切的人类;分数越低,系统就会更加警觉,甚至可能要求你进行进一步验证。

05

多模态验证:运动轨迹+图像识别

当用户点击太快或轨迹过于“机器人”时,系统给出的低分会触发更复杂的视觉验证,比如让用户选择含有摩托车或街灯的图片,或甚至语音、视频的验证。


系统展示的验证图片一般会具有一定的模糊性或复杂性,这种多角度的物体识别对自动程序来说挑战比较大。因为物体从不同角度看,轮廓、光影会发生变化,会导致识别难度大大增加。


而电脑程序主要根据平面图像来理解三维物体,如果训练数据不够全面,就可能无法准确识别在特定角度下的物体。人类的大脑则天然擅长处理这些变化,即使图片质量不高或角度怪异,也能迅速识别出目标物体。


06

不停歇的攻防战:reCAPTCHA的持续进化


道高一尺,魔高一丈。


随着人工智能技术的迅猛发展,机器人不仅能执行点击任务,也能逐渐通过复杂的算法模仿人类行为。防御与攻击相互推动,像一场无休止的猫鼠游戏。每一步都要求防御系统不断进化,以应对愈加精巧的对抗性AI。


end


参考文献:下滑动可浏览)

1. Google Developers. (n.d.).

https://developers.google.com/recaptcha

2. Google Security Blog. (2018).

https://security.googleblog.com/2018/10/introducing-recaptcha-v3-new-way-to.html

3. Cloudflare. (n.d.).

https://blog.cloudflare.com/a-brief-history-of-recaptcha/

4. TechCrunch. (2017, March 9). :

https://techcrunch.com/2017/03/09/googles-invisible-recaptcha/

5. The Verge. (2018, October 29).

https://www.theverge.com/2018/10/29/18037354

6. Brissmyr, J. (2020, December 9). Castle Blog: https://blog.castle.io/author/johan/


来源:DataCafe

原标题:am I a robot? 机器人验证背后的原理

编辑:ArtistET


转载内容仅代表作者观点

不代表中科院物理所立场

如需转载请联系原公众号


近期热门文章Top10

↓ 点击标题即可查看 ↓

1.假如一把枪的射程是 1500m,我能在 1501m 用手接住子弹吗?

2.明明是绿豆,怎么煮出了红色的汤,这健康吗?| No.416

3.苹果长出“果菌王”,科研人员千里求购,还尝了一口,结果……

4.听说油耳朵才会腋臭?祖先留给我们的天赋还真多

5.做噩梦,可能是免疫系统正在攻击你的身体

6.电风扇上装矿泉水瓶,效果堪比空调?真相是……

7.CPU干烧了,小明到底能不能把自己拉上去呢?| No.419

8.为什么飞机窗户玻璃下面总是有个小孔?| No.417

9.闻臭袜子和喂鸽子进ICU?都是因为它?

10.运动一定要30分钟以上才能减肥?29分钟就不行?

点此查看以往全部热门文章


相关推荐

零基础入门AI智能体:详细了解什么是变量类型、JSON结构、Markdown格式

当品牌跳出固有框架,以跨界联动、场景创新叩击年轻群体的兴趣点,一场关于如何在迭代中保持鲜活的探索正在展开,既藏着破圈的巧思,也映照着与新一代对话的密码。在创建AI智能体时,我们会调用插件或大模型,而在...

C# 13模式匹配:递归模式与属性模式在真实代码中的性能影响分析

C#13对模式匹配的增强让复杂数据处理代码更简洁,但递归模式与属性模式的性能差异一直是开发者关注的焦点。在实际项目中,选择合适的模式不仅影响代码可读性,还可能导致执行效率的显著差异。本文结合真实测试...

零基础快速入门 VBA 系列 6 —— 常用对象(工作簿、工作表和区域)

上一节,我介绍了VBA内置函数以及如何自动打字和自动保存文件。这一节,我们来了解一下Excel常用对象。Excel常用对象Excel有很多对象,其中最常用也最重要的包括以下3个:1.Workbo...

不同生命数字的生肖龙!准到雷普!

属龙的人总在自信爆棚和自讨苦吃之间反复横跳?看完这届龙宝宝的日常我悟了。属龙的人好像天生自带矛盾体:领导力超强可人缘时好时坏,工作雷厉风行却总在爱情里翻车。关键年份的龙性格差异更大——76年龙靠谱但不...

仓颉编程语言基础-面向对象编程-属性(Properties)

属性是仓颉颉中一种强大的机制,它允许你封装对类(或接口interface、结构体struct、枚举enum、扩展extend)内部状态的访问。它看起来像一个普通的成员变量(字段),但在其背后,它通过...

Python中class对象/属性/方法/继承/多态/魔法方法详解

一、基础入门:认识类和对象1.类和对象的概念在Python中,类(class)是一种抽象的概念,用于定义对象的属性和行为,而对象(也称为实例)则是类的具体表现。比如,“汽车”可以是一个类,它有...

VBA基础入门:搞清楚对象、属性和方法就成功了一半

如果你刚接触VBA(VisualBasicforApplications),可能会被“对象”“属性”“方法”这些术语搞得一头雾水。但事实上,这三个概念是VBA编程的基石。只要理解它们之间的关系,...

P.O类型文推荐|年度编推合集(一百九十五篇)

点击左上方关注获取更多精彩推文目录2019年度编推35篇(1V1)《悖论》作者:流苏.txt(1V1)《桂花蒸》作者:大姑娘浪.txt(1V1)《豪门浪女》作者:奚行.txt...

Python参数传递内存大揭秘:可变对象 vs 不可变对象

90%的Python程序员不知道,函数参数传递中可变对象的修改竟会导致意想不到的副作用!一、参数传递的本质:对象引用传递在Python中,所有参数传递都是对象引用的传递。这意味着函数调用时传递的不是对...

JS 开发者必看!TC39 2025 最新动向,这些新语法要火?

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。TC39第...

2025 年值得尝试的 5 个被低估的 JavaScript 库

这些JavaScript库可能不会在社交媒体或HackerNews上流行起来,但它们会显著提高您的工作效率和代码质量。JavaScript不再只是框架。虽然React、Vue和Sv...

Python自动化办公应用学习笔记30—函数的参数

一、函数的参数1.形参:o定义:在函数定义时,声明在函数名后面括号中的变量。o作用:它们是函数内部的占位符变量,用于接收函数被调用时传入的实际值。o生命周期:在函数被调用时创建,在函数执...

16种MBTI人格全解析|测完我沉默了三秒:原来我是这样的人?

MBTI性格测试火了这么久,你还不知道自己是哪一型?有人拿它当社交话题,有人拿它分析老板性格,还有人干脆当成择偶参考表。不废话,今天我一次性给你整理全部16种MBTI人格类型!看完你不仅能知道自己是谁...

JS基础与高级应用: 性能优化

在现代Web开发中,性能优化已成为前端工程师必须掌握的核心技能之一。本文从URL输入到页面加载完成的全过程出发,深入分析了HTTP协议的演进、域名解析、代码层面性能优化以及编译与渲染的最佳实践。通过节...

爱思创CSP-J/S初赛模拟赛线上开赛!助力冲入2024年CSP-J/S复赛!

CSP-J/S组初赛模拟赛爱思创,专注信奥教育19年,2022年CSP-J/S组赛事指定考点,特邀NOIP教练,开启全真实CSP-J/S组线上初赛模拟大赛!一、比赛对象:2024年备考CSP-J/S初...