Files
nanocode/personal-blog/content/posts/ai-agent-captcha-bypass-techniques.md
Ubuntu 32b43f85bd a
2026-07-03 16:58:28 +08:00

12 KiB
Raw Permalink Blame History

title, author, date
title author date
AI Agent 绕过图形验证码的技术思路——原理、方法与局限性 蔡贤明 2026-06-09

AI Agent 绕过图形验证码

声明:本文仅做技术原理与安全攻防研究分享,严禁用于非法爬取、恶意登录、违规攻击等违法行为。所有技术探讨应在遵守网站服务协议与《网络安全法》的前提下进行。


写在前面

很多网站在异常登录或敏感操作时,要求用户完成图形验证——滑块拼图、旋转方向、数字运算、点选文字等。这些机制本质上是人机区分(Turing Test),但随着 AI Agent 能力的提升,这些"图形验证"正在被逐一突破。

目前主流的 CAPTCHA 服务商包括 Google reCAPTCHA(v2/v3/Enterprise)、Cloudflare Turnstile、hCaptcha、GeeTest(极验)、阿里云滑块等。它们的安全强度差异巨大:有的纯前端校验(极易绕过),有的配合后端行为风控(较难突破),有的已是无感评分模式(reCAPTCHA v3 根本不展示验证码)。

下文按 传统视觉方案、端内交互模拟、模型识别、旁路绕过、行为对抗 五大类,逐一拆解技术思路。


一、AI Agent 运行环境——自动化基础设施

AI Agent 要操作验证码,一般依托无头或仿真浏览器(Playwright、Selenium、Puppeteer、CDP 直连),也可能运行在真实设备/真机上。常用强化工具包括:

工具/库 用途
Playwright + stealth 插件 浏览器自动化 + 隐藏自动化特征
undetected-chromedriver 绕过 Chrome 自动化检测
Browser-Use / Agent-Browser AI Agent 专用浏览器操作框架
puppeteer-extra-plugin-stealth 额外浏览器指纹伪装
curl-impersonate / TLS 指纹模拟 绕过 TLS 层面的自动化检测

核心流程:页面渲染 → 元素定位 → 截图获取验证码 → 坐标计算 → 键鼠事件模拟 → 结果提交。


二、各类验证码对应的技术思路

(一)滑块验证码(滑动缺口、拼图拼接)

分为三类:简易滑块、轨迹校验型、行为风控型。

1. 基础图像识别 + 固定坐标滑动(简易滑块)

流程:浏览器截图 → OpenCV 边缘检测 → 定位缺口与滑块起始位置 → 计算偏移距离 → 模拟鼠标按下→拖动→松开。

局限:只对无轨迹校验、无速度校验的低安全级滑块有效。

2. 动态轨迹模拟(对抗轨迹风控)

主流平台(极验、阿里云)会校验速度曲线、加速度、停顿点、轨迹非线性。

  • 真人轨迹采样复现:采集大量人类轨迹(坐标-时间序列),拟合后重放:分段变速、小幅抖动、中途停顿。
  • 物理运动模型:模拟人体手部惯性——先加速、匀速、减速,加入随机微小偏移。
  • 分次短距调整:将一次长滑动拆成多次小幅度调整,模拟人类"瞄一下再对准"的行为。

3. 图像预处理 + 轻量模型

针对缺口模糊、阴影、干扰线的滑块:先高斯去噪 → 轮廓提取 → 模板匹配或轻 CNN(如 MobileNet-SSD)直接输出目标坐标。

4. 旁路 Hook 绕过(高阶非视觉方案)

逆向前端 JS → 捕获滑块最终偏移量、校验 token、加密参数 → 直接构造合法参数提交,不执行鼠标滑动。这是当前最稳定的绕过方式之一。


(二)旋转/方向验证码

1. 传统图像处理

截图 → 霍夫变换/图像投影法计算偏转角度 → 调用旋转控件。

适用于规则化文字或图标(如"将图片转正")。

2. 图像分类模型

用 MobileNet / ResNet-18 轻量化版,输入图片直接输出目标角度值(回归任务)。大幅优于传统算法,且抗模糊、扭曲能力强。

3. 交互模拟

分次小幅旋转,避免一步到位(风控特征)。


(三)数字运算 / 文字计算验证码

这是技术最简单的一类,OCR 方案完全成熟:

  • 传统 OCR:截图 → 降噪分割 → Tesseract 识别数字和运算符 → 自动计算填值。
  • AI OCR:PP-OCR、CRNN 直接整行识别,无需分割,适配花体、粘连字符。
  • 对抗干扰:面对噪点、干扰线,先用图像掩码去噪再送入模型。

补充说明:这类验证码当前基本已被 AI 完全攻克。部分网站已放弃纯文字运算,转而使用"语义理解题"(如"点击图片中的红色车辆"),需要多模态模型才可解决。


(四)点选类验证码(文字点选、图标点选、顺序点选)

"按顺序点击文字""点击相同图标""点击倒立文字"等。

1. 目标检测方案(主流)

YOLOv8 / DETR 等检测模型 → 定位所有文字/图标位置 → 识别内容 → 按题目要求排序坐标 → 模拟点击。

2. 多模态模型(新兴方案)

用 GPT-4o / Gemini Vision 等输入"截图 + 指令"直接输出点击坐标序列。无需训练,但延迟较高且成本大。

3. 行为伪装

两次点击间加随机时延,鼠标路径曲线化,模拟人类视线移动。


(五)无感式验证码(reCAPTCHA v3 / Cloudflare Turnstile)

这类验证码不展示任何图形界面,完全基于用户行为打分。它的挑战在于:

行为模式模仿是唯一方案:

  • 页面停留随机时长(5-30 秒)
  • 模拟真实滚动路径(分段、变速、偶尔回滚)
  • 鼠标轨迹曲线化(Bezier 曲线拟合)
  • 随机的页面交互(悬停、划词、点击无关元素)
  • 模拟多标签切换等真人浏览特征

设备指纹与网络环境:

  • 使用真实浏览器指纹(Canvas、WebGL、AudioContext、字体等不暴露自动化特征)
  • 接入动态代理池,避免单 IP 高频触发评分
  • 避免 TLS 指纹异常(可用 curl-impersonate、ja3 模拟)

关键认知:这是最接近"人机对抗终局"的形态——当验证码不再可见,AI Agent 的唯一方法就是让自己看起来像人。


(六)音频验证码——语音替代通道

多数 CAPTCHA 提供"音频备用"选项(为视障用户设计),播放一段含干扰的语音数字/字母。

  • 经典方案:用 Whisper(OpenAI 语音模型)或 DeepSpeech 直接转录 → 填入答案。
  • 特点:音频干扰往往较弱,语音模型的准确率远高于图像 OCR。
  • 启示:这是一个经常被忽略的低悬果实——反而可能是当前 bypass 技术中最简单的入口。

三、通用高阶绕过方案(不依赖视觉识别)

1. 接口逆向 + 协议层直连(最稳定,难度最高)

验证码本质是 前端展示 + 后端校验,绕过前端即绕过验证码:

  1. 抓 HTTPS 流量(浏览器 DevTools / mitmproxy)
  2. 分析验证码请求、提交接口、加密参数(AES、RSA、自定义混淆)
  3. 逆向 JS/wasm 加密逻辑 → 直接调用后端接口
  4. 部分平台验证码 Token 可复用或存在有效期漏洞

适用场景:长期稳定的高频操作(如爬虫、自动化测试)。

2. 代理池 + 指纹伪装(基础风控对抗)

  • 动态代理轮换,避免单 IP 高频触发验证
  • 环境伪装:UA、Canvas 指纹、WebGL、时区、语言、分辨率
  • 关闭无头浏览器特征(navigator.webdriver 等)→ 使用 stealth 插件

3. 第三方打码平台对接(工程化最简方案)

流程:截取验证码图片 → 调用第三方打码 API → 接收答案 → 自动填入。

  • 优点:零视觉开发,最快落地
  • 缺点:有延迟、按量付费、服务可能下线、敏感场景不适用

4. 业务逻辑绕过(常被忽略的方向)

很多系统的内部/管理 API 不经过验证码校验,这是架构设计上的疏漏:

  • 直接调用 POST /api/login 而非 POST /api/login_with_captcha
  • 手机端 API 可能无验证码(网页端才有)
  • 登录后获得的 Token/Session 后续所有操作均无需验证码

这是性价比最高的绕过方式——根本不用破解验证码本身。

5. Session 与 Token 复用

合法获取一次验证码后,在有效期内重复使用其 token。部分弱实现的验证码 token 可跨请求、跨页面复用。


四、AI Agent 特有的新兴攻击面

1. 强化学习 + 屏幕观察

不依赖传统图像识别,让 Agent 通过屏幕截图→动作输出→奖励信号的 RL 循环直接学习操作验证码。

  • 框架:RL + Vision Encoder + Action Decoder
  • 优势:端到端,无需手工设计图像管线
  • 劣势:训练成本高、泛化到新验证码较慢

2. 多模态大模型直接推理

GPT-4o / Claude / Gemini 等具备视觉理解能力,可以:

"截图看这里 → 这是一个滑块验证码,缺口在距左边 240 像素处 → 计算轨迹 → 模拟拖动"

这正在成为最"自然"的 AI Agent 破解方式——就像人看到验证码后思考、动手一样。

3. 上下文感知 + 自适应策略

Agent 可先识别验证码服务商(从页面特征/JS 指纹),自动加载对应策略模块——不同平台走不同方案,大幅提升整体成功率。


五、不同方案的技术对比

方案 开发难度 稳定性 反制难度 适用场景
OpenCV 传统视觉 ⭐ ⭐ ⭐ 老旧简单验证码
轻量视觉模型(YOLO/PP-OCR) ⭐⭐⭐ ⭐⭐⭐ ⭐⭐ 主流滑块、点选、计算
多模态大模型直推 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐ 复杂验证码、低频率操作
轨迹/行为模拟 ⭐⭐⭐ ⭐⭐⭐ ⭐⭐ 带行为校验的滑块
音频转录(Whisper) ⭐⭐ ⭐⭐⭐⭐ ⭐ 有音频备选的验证码
第三方打码平台 ⭐ ⭐⭐ ⭐ 快速开发、不想自研
JS 逆向 + 接口直调 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ 长期稳定、高频场景
业务逻辑绕过 ⭐ ⭐⭐⭐⭐⭐ — 发现漏洞时有效
强化学习端到端 ⭐⭐⭐⭐⭐ ⭐⭐ ⭐⭐⭐ 研究前沿

六、平台反制手段——矛与盾的博弈

了解防御才能更好理解攻击的边界:

  1. 动态变形:验证码样式/字体/字号实时变换,训练好的模型需要持续更新
  2. 强行为风控:轨迹、点击间隔、键鼠特征、设备指纹全链路检测
  3. 图片动态加密与分片:Canvas 实时绘制而非静态图片,无法直接截图
  4. 深度学习行为模型:用 Transformer/BERT 区分机器与真人操作特征
  5. 接口签名实时变化:密钥动态下发、Wasm 强混淆,提高逆向成本
  6. 多因子叠加:验证码 + 设备指纹 + 行为评分 + IP 信誉分联动

七、总结

AI Agent 绕过图形验证码的核心路线可归纳为三条:

  1. 视觉路线:图像处理 / AI 识别 → 解析验证码内容 → 模拟交互。最直观,但仍然需要对抗不断的变形与风控升级。

  2. 工程路线:对接第三方打码服务,或利用业务逻辑漏洞、Token 复用等手段。开发成本最低,但依赖外部条件。

  3. 逆向路线:破解前端加密,直调后端接口,彻底绕过图形验证。这是最高阶同时也最稳定的方式,但对攻防能力要求极高。

最后的思考:随着 reCAPTCHA v3、Cloudflare Turnstile 等"无感验证"的普及,验证码正在从"图形挑战"转向"行为挑战"。未来的 AI Agent 不再需要"看懂"验证码,而需要"表现得像人"。这也许才是攻防博弈的真正终局形态。


再次重申:本文所有内容仅供网络安全技术学习与学术研究参考,禁止用于任何违法活动。