Back to skills
extension
Category: Development & EngineeringNo API key required

captcha

Experience in handling CAPTCHAs. Techniques for recognizing and bypassing slider CAPTCHAs, image CAPTCHAs, and click-based CAPTCHAs. Triggers: CAPTCHA recognition, slider bypass, OCR, click-based CAPTCHA, CAPTCHA interception.

personAuthor: jakexiaohubgithub

验证码处理经验

快速识别流程

页面出现验证码?
├── 有滑动条 + 背景图 + 滑块图 → 滑块验证码
├── 有图片 + 输入框 → 图片验证码(OCR)
├── 有背景图 + 文字/图标提示 → 点选验证码
├── 有旋转图片 → 旋转验证码
├── 有拼图 → 拼图验证码(类似滑块)
└── 弹出第三方页面(极验/网易/腾讯)→ 第三方验证码服务

滑块验证码

缺口检测方法

| 方法 | 适用场景 | 精度 | |------|----------|------| | Canny 边缘检测 | 缺口边缘清晰 | 高 | | 模板匹配 | 有独立滑块图片 | 高 | | 像素差异对比 | 有完整背景图和缺口背景图 | 最高 | | 灰度梯度 | 缺口区域与背景对比度大 | 中 |

轨迹生成参数

总时长: 300-800ms(过快被检测,过慢不自然)
阶段分配:
  - 起步 (0-15%): 加速,速度从 0 到峰值
  - 中段 (15-75%): 匀速或微加速
  - 减速 (75-90%): 明显减速
  - 微调 (90-100%): 缓慢靠近 + 轻微回弹 (1-3px)

Y 轴抖动: ±1-2px 随机偏移(纯水平移动会被检测)
采样间隔: 10-30ms(模拟 requestAnimationFrame)

常见失败原因

  • 缺口偏移量不准 → 加 ±2px 随机偏移重试
  • 轨迹太规则 → 增加 Y 轴抖动和速度波动
  • 滑动太快 → 总时长调到 500ms+
  • 验证接口校验 → 检查是否需要额外参数(如 trace 数据、加密 token)

图片验证码

OCR 方案选择

| 方案 | 识别率 | 成本 | 适用场景 | |------|--------|------|----------| | ddddocr | 60-80% | 免费 | 简单数字/字母验证码 | | Tesseract + 预处理 | 50-70% | 免费 | 清晰文字 | | 打码平台 (超级鹰等) | 90%+ | 付费 | 复杂验证码、量大 | | 自训练模型 | 95%+ | 开发成本高 | 固定样式、长期使用 |

图片预处理流程

  1. 灰度化 → 去除颜色干扰
  2. 二值化 → 分离文字和背景(阈值需调试)
  3. 去噪点 → 中值滤波或形态学操作
  4. 字符分割 → 连通域分析(粘连字符需特殊处理)

常见失败原因

  • 背景干扰线 → 加强二值化阈值或用形态学开运算
  • 字符粘连 → 投影分割或滴水算法
  • 字体扭曲 → ddddocr 通常比 Tesseract 更好
  • 识别错误 → 刷新验证码重试(最多 3 次)

点选验证码

处理流程

  1. 获取提示信息("请依次点击:X、Y、Z")
  2. 目标检测:定位背景图中每个候选目标的坐标
  3. 匹配:将提示与候选目标对应
  4. 按顺序点击坐标

难点与应对

  • 文字点选:OCR 识别背景图中的文字位置
  • 图标点选:图像分类匹配提示图标
  • 语义点选("点击最大的"):需要目标检测 + 属性比较
  • 3D/旋转文字:打码平台更可靠

第三方验证码服务

| 服务商 | 常见类型 | 特征 | |--------|----------|------| | 极验 (GeeTest) | 滑块、点选、九宫格 | gt + challenge 参数 | | 网易易盾 | 滑块、拼图、点选 | NECaptcha 对象 | | 腾讯防水墙 | 滑块 | TencentCaptcha 对象 | | 阿里云 | 滑块、智能验证 | ALIYUN 前缀 | | hCaptcha | 图像分类 | h-captcha class | | reCAPTCHA | 图像分类、评分 | g-recaptcha class |

通用应对策略

  • 优先尝试绕过:部分验证码有 API 直接获取 token 的方式
  • 浏览器方案:用 Patchright 模拟真实操作
  • 打码平台:极验/hCaptcha 等有专门的打码服务
  • 降低触发频率:通过反检测手段减少验证码出现

验证失败通用处理

  1. 第 1 次失败 → 刷新验证码,调整参数重试
  2. 第 2 次失败 → 换方案(如 OCR → 打码平台)
  3. 第 3 次失败 → 返回告知主 agent,建议人工介入或换策略