12 KiB
title, author, date
| title | author | date |
|---|---|---|
| AI Agent 绕过图形验证码的技术思路——原理、方法与局限性 | 蔡贤明 | 2026-06-09 |
声明:本文仅做技术原理与安全攻防研究分享,严禁用于非法爬取、恶意登录、违规攻击等违法行为。所有技术探讨应在遵守网站服务协议与《网络安全法》的前提下进行。
写在前面
很多网站在异常登录或敏感操作时,要求用户完成图形验证——滑块拼图、旋转方向、数字运算、点选文字等。这些机制本质上是人机区分(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. 接口逆向 + 协议层直连(最稳定,难度最高)
验证码本质是 前端展示 + 后端校验,绕过前端即绕过验证码:
- 抓 HTTPS 流量(浏览器 DevTools / mitmproxy)
- 分析验证码请求、提交接口、加密参数(AES、RSA、自定义混淆)
- 逆向 JS/wasm 加密逻辑 → 直接调用后端接口
- 部分平台验证码 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 逆向 + 接口直调 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 长期稳定、高频场景 |
| 业务逻辑绕过 | ⭐ | ⭐⭐⭐⭐⭐ | — | 发现漏洞时有效 |
| 强化学习端到端 | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | 研究前沿 |
六、平台反制手段——矛与盾的博弈
了解防御才能更好理解攻击的边界:
- 动态变形:验证码样式/字体/字号实时变换,训练好的模型需要持续更新
- 强行为风控:轨迹、点击间隔、键鼠特征、设备指纹全链路检测
- 图片动态加密与分片:Canvas 实时绘制而非静态图片,无法直接截图
- 深度学习行为模型:用 Transformer/BERT 区分机器与真人操作特征
- 接口签名实时变化:密钥动态下发、Wasm 强混淆,提高逆向成本
- 多因子叠加:验证码 + 设备指纹 + 行为评分 + IP 信誉分联动
七、总结
AI Agent 绕过图形验证码的核心路线可归纳为三条:
-
视觉路线:图像处理 / AI 识别 → 解析验证码内容 → 模拟交互。最直观,但仍然需要对抗不断的变形与风控升级。
-
工程路线:对接第三方打码服务,或利用业务逻辑漏洞、Token 复用等手段。开发成本最低,但依赖外部条件。
-
逆向路线:破解前端加密,直调后端接口,彻底绕过图形验证。这是最高阶同时也最稳定的方式,但对攻防能力要求极高。
最后的思考:随着 reCAPTCHA v3、Cloudflare Turnstile 等"无感验证"的普及,验证码正在从"图形挑战"转向"行为挑战"。未来的 AI Agent 不再需要"看懂"验证码,而需要"表现得像人"。这也许才是攻防博弈的真正终局形态。
再次重申:本文所有内容仅供网络安全技术学习与学术研究参考,禁止用于任何违法活动。
