CAPTCHAs 二十年来一直失败

Hacker News Top 新闻

摘要

深度探讨了 CAPTCHAs 与自动破解器之间长达20年的军备竞赛,最终以 Browserbase 的新方法——通过验证浏览器身份来完全绕过 CAPTCHAs 的代理身份——告终。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/06/24 16:52

# CAPTCHA 军备竞赛:从扭曲文字到浏览器身份 来源:https://www.browserbase.com/blog/why-captchas-are-getting-harder **摘要:** 每一代 CAPTCHA(扭曲文字、更难的文字、图像网格)最终都被机器攻克了。如今,随着每个人都在使用代理执行真实工作流程,游戏规则已从测试浏览器能做什么转变为验证它是谁。这就是 Browserbase 正在构建代理身份的原因,通过 Verified(https://docs.browserbase.com/platform/identity/verified-customization)和 Web Bot Auth(https://www.browserbase.com/blog/cloudflare-browserbase-pioneering-identity),因为最好的 CAPTCHA“解决器”根本不会看到 CAPTCHA。 如果你曾在模糊的图像网格中点过每一个红绿灯、公交车和人行横道,那么你就参与了一场互联网上运行时间最长的安全实验。这些点击是在解决 CAPTCHA:测试你是否是人类。 随着网站在 20 世纪 90 年代末变得流行,滥用它们的动机也增加了。垃圾邮件发送者创建了数千个虚假账户,机器人抓取搜索引擎,脚本用广告淹没论坛。每个热门网站都面临同样的问题:*如何区分人类和机器?* CAPTCHA 是一个逆向缩写,代表“完全自动化的公共图灵测试,用于区分计算机和人类”,由卡内基梅隆大学的 Luis von Ahn、Manuel Blum、Nicholas Hopper 和 John Langford 在 2003 年的一篇论文(https://link.springer.com/chapter/10.1007/3-540-39200-9_18)中提出。 这是一个*逆向*图灵测试。原始的图灵测试让人类通过对话识别机器;CAPTCHA 则反其道而行之,让机器提问,如果回答者的行为像人类,则测试通过。目标不是证明智能,而是让自动化的成本超过攻击的价值。 20 多年来,每一种 CAPTCHA 最终都被欺骗了,每一代都遵循相同的周期: 防御者构建新挑战 → 它有效一段时间 → 攻击者学会解决它 → 防御者构建新挑战 → 重复。 这是一场无尽的猫鼠游戏。 让我们进入竞技场:猫(计算机)vs. 鼠(CAPTCHA)。 ## 第一关:你能看到这个吗? 第一个答案出奇地简单:让计算机阅读。 早期的 CAPTCHA 显示扭曲的文字(变形的字母、不均匀的间距、随机的线条、嘈杂的背景)。对人类来说,这通常很简单。我们的大脑非常擅长通过缺失的像素和变形来识别模式。 然而,计算机却不行。 当时的光学字符识别(OCR)在处理清晰的印刷文本时表现良好,但当字符被旋转、拉伸、重叠或遮挡时,就难以应付了。关键假设是感知是困难的部分。如果计算机无法判断一个字符在哪里结束,下一个在哪里开始,它就无法读取单词。 在一段时间内,这很有效。一个扭曲的单词阻止了自动化脚本,同时几乎不拖慢人类。AltaVista 和 Yahoo(https://www.sciencedirect.com/science/article/abs/pii/S016981411830413X)采用了早期系统,这种方法足够有效,以至于卡内基梅隆大学的研究人员(https://www.nsf.gov/impacts/captcha)正式创造了这个术语。 然后 OCR 变得更好。🐈 攻击者意识到他们不需要一次性解决整个 CAPTCHA。大多数文本 CAPTCHA 是分阶段生成的:渲染文本、应用扭曲、添加噪声、绘制混淆线条、输出图像。 那么,如果 CAPTCHA 是分阶段创建的,它也可以分阶段被击败。攻击者构建了计算机视觉流水线,去除背景噪声,将图像阈值化为黑白,将字符分割成单独的区域,并将这些区域输入 OCR。 看似是 AI 问题,结果变成了图像处理问题。 一旦分割可靠,识别准确率就大幅提升。同一项使得书籍数字化和识别路牌的技术,也让计算机能够胜任 CAPTCHA 解决者。 老鼠已经行动,猫也适应了。是时候重复了。 ## 第二关:让文字更难 防御者认为,如果攻击者可以分割字符,那就让分割变得不可能。CAPTCHA 变得激进(重叠的字母、不自然的形状、嘈杂的背景),有些扭曲得看起来更像是抽象艺术而非文本。 大约在这个时候,von Ahn 注意到了一个问题。数百万人每天花几秒钟解决 CAPTCHA,这是一项巨大的视觉识别工作,却立即消失了。“如果这些努力能变得有用呢?” 这个想法变成了 reCAPTCHA(https://support.google.com/recaptcha/answer/6080904?hl=en)。 它不再显示随机文本,而是显示来自书籍和档案中的扫描单词,这些单词 OCR 无法自信地识别。每次解决的挑战都有助于数字化印刷材料。在一段时间内,每个人都赢了:网站得到了保护,图书馆得到了数字化。 然后机器学习来了。🐈 传统的 OCR 依赖于手工设计的规则(边缘检测器、字符模板、分割启发式方法),这些规则在设计师改变扭曲方式时就会失效。机器学习消除了硬编码。研究人员不再教计算机*如何*识别字符,而是用数百万个示例训练模型,让它们自己学习模式。神经网络能够识别高度扭曲的字符,而无需完美的分割,因为让传统 OCR 困惑的噪声仍然携带足够的信号来恢复答案。 那些旨在阻止机器的 CAPTCHA 最终对人类来说比模型更难。 老鼠提高了赌注,但猫学得更快。 ## 第三关:找到红绿灯 到 2010 年代初,最初的假设(计算机不能阅读)已经难以维持。因此,设计者放弃了文本,转而要求用户识别物体。 文本 CAPTCHA 测试字符识别,而图像 CAPTCHA 测试语义理解。人类可以毫不费力地做到这一点:比如从侧面、半藏在车后、在夜间、或者被裁剪到画面角落时认出自行车。 对于计算机来说,这仍然是之前同样的问题(手工设计),但现在是在二维空间中。传统的视觉系统检测边缘、角点、梯度和纹理,然后尝试将它们组装成物体: ``` # 传统计算机视觉 features = combine(detect_edges(image), detect_corners(image), compute_gradients(image)) if matches_bicycle_template(features): return "bicycle" ``` 现实世界不遵循模板。一辆自行车可以从数千个角度出现,部分被遮挡,光线不断变化。边界情况无穷无尽。 然后 ImageNet(https://ieeexplore.ieee.org/document/5206848)出现了。🐈 2009 年的数据集为研究人员提供了数百万张跨数千个类别的标记图像,足以应对大规模物体识别。2012 年,一个名为 AlexNet(https://proceedings.neurips.cc/paper_files/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf)的深度神经网络在 ImageNet 基准测试上大幅超越了传统视觉系统。问题再次从“*计算机能识别自行车吗?*”转变为“*我们能给模型多少标记数据?*”卷积神经网络在早期层直接学习视觉特征如边缘和纹理,在中间层学习形状和部分,在深层学习整个物体。无需模板。 时机对设计者来说相当不幸。红绿灯、公交车、人行横道和店面是常见的 CAPTCHA 类别,也是大型视觉数据集中最常见的类别。那些旨在证明计算机看不到的挑战,恰好出现在计算机开始学习看到的时刻。 老鼠找到了新的藏身之处,但猫学会了看。 ## 第四关:浏览器本身成为 CAPTCHA 现在这个模式已经无法忽视。 每一代都假设人类拥有而计算机缺乏某种能力。防御者围绕它构建挑战。攻击者将其自动化。重复。 任何有正确答案的挑战都会成为优化的目标。你不能在开发者积极构建复制它的能力时,构建一个人类智能的测试。 因此,现代反机器人系统不再询问浏览器*能否*解决一个挑战,而是开始询问它是否*应该*被挑战。 它们变成了概率性的。不再使用单个挑战,而是收集整个会话中的信号,并合并成一个风险分数。这些信号包括浏览器指纹、已安装字体、Canvas 和 WebGL 渲染、TLS 指纹、Cookie 历史、网络声誉、请求时序和交互模式。单独来看很弱,但合在一起构成了一幅详细的画像。一台真实笔记本电脑上的真实 Chrome 浏览器与数据中心中新生成的浏览器行为不同。 这是 reCAPTCHA v3(https://developers.google.com/recaptcha/docs/v3)和 Cloudflare Turnstile(https://www.cloudflare.com/products/turnstile/)背后的理念。当系统有信心时,不显示 CAPTCHA。当不确定时,它会要求更多证据。 然后攻击者意识到解决 CAPTCHA 不再是目标。如果挑战仅在浏览器看起来可疑时才出现,那么目标就是不要看起来可疑。挑战解决变成了**浏览器指纹识别**。攻击者不再专注于更好的 OCR 或分类器,而是研究指纹、声誉和网络信号,以冒充合法用户。 老鼠不再问问题,猫学会了如何融入。 ## 平局:证明你是谁 历史上,网站将每个浏览器视为匿名的陌生人。为了获得信心,它们发出挑战。现代检测则反向运作。不是要求浏览器反复证明自己,而是试图确定它们是否已经识别出这个浏览器。 从这个角度来看,趋势就说得通了。具有一致历史记录的浏览器比刚出现三十秒的浏览器更值得信赖。指纹、网络和行为都对齐的浏览器比信号相互矛盾的更值得信赖。与已知身份关联的浏览器比匿名的更值得信赖。 产生 CAPTCHA 的 Web 主要被匿名流量主导,其中大多数自动化用于抓取、垃圾邮件或滥用。将每个机器人视为可疑通常是对的。 **今天的 Web 不同了。**浏览器代理正在预订旅行、提交合规报告、监控基础设施,并为真实用户完成工作流程。网站仍然难以区分代表用户的代理和利用系统的机器人,历史上最安全的选择是将它们一视同仁。 *这个浏览器能解决 CAPTCHA 吗?* → *这个浏览器是否应该看到 CAPTCHA?* 如果浏览器本身就是 CAPTCHA,那么开放的问题不再是浏览器能做什么,而是它能否建立信任。这催生了一种新模式:浏览器和代理明确证明自己是谁,而不是反复证明自己能做什么。 一个新兴标准是 Web Bot Auth(https://www.browserbase.com/blog/cloudflare-browserbase-pioneering-identity),它允许浏览器代理在浏览网页时用密码学方式标识自己。网站可以将匿名自动化与通过受信任提供商运营的代理区分开来,并根据身份而非推断做出决定。这是我们在 Browserbase 与 Cloudflare 合作中努力的方向。 这与过去二十年的前提不同:合法的自动化不必假装是人类。如果过去二十年教会了计算机通过人类测试,那么未来十年可能是给它们一种自我介绍的方式。最成功的 CAPTCHA“解决器”是那个永远不会看到 CAPTCHA 的。 给你的代理赋予身份,摆脱猫鼠追逐:browserbase.com/contact-web-bot-auth(https://www.browserbase.com/contact-web-bot-auth)

相似文章

CAPTCHAs仍能检测AI代理

Hacker News Top

一项研究论文表明,尽管AI在解决CAPTCHAs方面与人类能力相当,但交互模式中的行为差异仍然可以可靠地区分机器人和人类,从而提出了“过程图灵测试”的概念。

证明你是机器人:面向代理的验证码

Hacker News Top

Browser Use 推出了基于反向验证码的代理原生注册机制,旨在阻止人类进入,而让 AI 代理进入。代理通过解决混淆的数学题来获得 API 密钥访问权限和免费套餐福利。

AI代理在2026年如何收集数据

Reddit r/AI_Agents

本文阐述了2026年AI代理如何从网站和API收集数据,并讨论了如速率限制、CAPTCHA和IP封禁等关键挑战。

在机器人时代保持网络的开放与隐私

Lobsters Hottest

Mozilla和Cloudflare正与其他浏览器合作,推出一项新举措,旨在打击机器人滥用行为的同时保护用户隐私。该方案提出采用基于匿名担保的速率限制方法,而非像验证码或Web环境完整性这样侵入性的验证方式。