--- title: "AI Agent 绕过图形验证码的技术思路——原理、方法与局限性" author: "蔡贤明" date: 2026-06-09 --- ![AI Agent 绕过图形验证码](/tmp/captcha-cover.png) > **声明:本文仅做技术原理与安全攻防研究分享,严禁用于非法爬取、恶意登录、违规攻击等违法行为。所有技术探讨应在遵守网站服务协议与《网络安全法》的前提下进行。** --- ## 写在前面 很多网站在异常登录或敏感操作时,要求用户完成图形验证——滑块拼图、旋转方向、数字运算、点选文字等。这些机制本质上是**人机区分(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 不再需要"看懂"验证码,而需要"表现得像人"。这也许才是攻防博弈的真正终局形态。 --- *再次重申:本文所有内容仅供网络安全技术学习与学术研究参考,禁止用于任何违法活动。*