验证码已失败 20 年

2026-06-24 1 阅读 harsehaj
TL;DR:每一代验证码(扭曲的文本、较硬的文本、图像网格)最终都会被机器击败。现在,随着每个人都使用代理来运行真实的工作流程,游戏已经从测试浏览器可以做什么变成了验证浏览器是谁。这就是 Browserbase 使用 Verified 和 Web Bot Auth 构建代理身份的原因,因为最好的验证码“解析器”根本不会看到验证码。验证码军备竞赛:从扭曲的文本到浏览器身份如果您点击过模糊图像网格中的每个交通灯、公共汽车和人行横道,那么您就参与了互联网上运行时间最长的安全实验之一。这些点击正在解决验证码:测试你是否是人类。随着 20 世纪 90 年代末网站的流行,滥用网站的动机也随之增加。垃圾邮件发送者创建了数千个虚假帐户,机器人抓取搜索引擎,脚本在论坛中充斥着广告。每个流行的网站都面临着同样的问题:如何区分人类和机器? CAPTCHA 是 Completely Automated Public Turing test to Tell Computers and Humans Apart 的缩写,由卡内基梅隆大学的 Luis von Ahn、Manuel Blum、Nicholas Hopper 和 John Langford 在 2003 年的一篇论文中创造。这是一个反向图灵测试。原版要求人类通过对话来识别机器;验证码会翻转它,因此机器会提出问题,如果响应者的行为像人类一样,测试就会通过。目标不是证明智力。这是为了使自动化成本超过攻击的价值。 20多年来,每一个验证码最终都会被愚弄,每一代人都遵循相同的循环:防御者提出新的挑战→它会起作用一段时间→攻击者学会解决它→防御者构建新的东西→重复。这是一场无休止的猫捉老鼠的追逐。让我们进入竞技场:猫(计算机)与鼠标(验证码)。 1级:你能读懂这个吗?第一个答案出人意料地简单:让计算机读取。早期的验证码显示扭曲的文本(扭曲的字母、不均匀的间距、随机的线条、嘈杂的背景)。对于人类来说,这通常是微不足道的。我们的大脑非常擅长通过丢失的像素和扭曲来识别模式。然而,计算机却不然。当时的光学字符识别 (OCR) 在处理干净的印刷文本时表现良好,但在字符旋转、拉伸、重叠或模糊时表现不佳。关键的假设是感知是最困难的部分。如果计算机无法区分一个字符在哪里结束以及下一个字符在哪里开始,它就无法读取该单词。有一段时间,它起作用了。一个扭曲的单词会阻止自动脚本的运行,但几乎不会减慢人类的速度。 AltaVista 和雅虎采用了早期的系统,这种方法运行良好,以至于卡内基梅隆大学的研究人员正式创造了这个术语。然后 OCR 变得更好了。 🐈 攻击者意识到他们不需要立即解决整个验证码。大多数文本验证码都是分阶段生成的:渲染文本、应用失真、添加噪声、绘制模糊线、输出图像。好吧,如果验证码是分阶段创建的,那么它就可以分阶段被击败。攻击者构建了计算机视觉管道,可以消除背景噪声、将图像阈值设置为黑白、将字符分割为各个区域,并将这些区域输入 OCR。看似人工智能的问题变成了图像处理问题。一旦分割可靠,识别准确度就会跃升。数字化书籍和阅读街道标志的进步使计算机能够解算验证码。老鼠采取了行动,猫也适应了。是时候重复一下了。第 2 级:使文本变得更难 防御者认为,如果攻击者可以分割字符,那么就无法进行分割。验证码变得越来越具有攻击性(重叠的字母、不自然的形状、嘈杂的背景),有些甚至扭曲得看起来更像是抽象艺术而不是文本。大约在这个时候,冯·安注意到了一件事。数百万人每天花几秒钟来解决验证码,这是一项大量的视觉识别工作,但很快就消失了。如果这种努力有用怎么办?这个想法变成了 reCAPTCHA。它显示的不是随机文本,而是 OCR 无法自信读取的书籍和档案中的扫描文字。每一个解决的挑战都有助于印刷材料的数字化。有一段时间,当网站得到保护、图书馆实现数字化时,每个人都赢了。然后机器学习到来了。 🐈 传统的 OCR 依赖于手工设计的规则(边缘检测器、字符模板、分割启发式),这些规则在设计师改变失真之前一直有效。机器学习消除了硬编码。研究人员没有教计算机如何识别字符,而是用数百万个示例训练模型并让它们学习模式。神经网络在没有完美分割的情况下识别严重扭曲的字符,因为混淆传统 OCR 的噪声仍然携带足够的信号来恢复答案。旨在停止机器的验证码最终对人类来说比对模型来说变得更困难。老鼠提高了赌注,但猫学会了