Files
reverse-skills-max/vendor-new/xbsReverseSkill/web-reverse-algorithm/references/03-captcha-families.md

2.9 KiB
Raw Blame History

验证码与 challenge 家族

一、验证码统一拆法

先拆 5 条线:

  1. 初始化 / challenge 线
  2. 图像或题面识别线
  3. 参数 builder 线
  4. 环境 / 指纹 / collect 线
  5. 最终 verify 线

每条线都单独保存证据,不要混写。

二、高频字段

  • collect
  • pow_answer
  • pow_calc_time
  • w
  • fs
  • ac_c
  • Signature
  • SignatureNonce
  • captcha_collect
  • behavior
  • token
  • challenge
  • lot_number
  • payload

不要只看它像不像密文,要看:

  1. 删除后是否失败
  2. 伪造后是否失败
  3. 是否与识别结果、时间戳、环境值绑定

三、站点家族

腾讯滑块 / TCaptcha

两条路线要分开:

  1. prehandle -> 图像 -> gap -> PoW -> collect -> verify 的纯 HTTP 工程链
  2. tdc.js / VM / collect 的补环境 + VMP 链

重点:

  • pow_answer 与 pow_calc_time
  • collect
  • 轨迹与 gap 的一致性
  • 不要把腾讯题误写成“只靠图像和轨迹”

极验 3/4 代

三代

  • 高价值入口:搜 "\u0077"
  • 重点不是只盯最终 w,而是记录 h + u

四代

  • captcha_id 更像固定配置
  • challenge 更像运行时生成值
  • 必须记录 load 返回对象

网易盾

统一链:

初始化
-> 图片接口
-> 距离识别
-> userAnswer
-> P1~P9
-> w
-> verify

重点:

  • 图片接口返回对象要保留
  • userAnswer 可能是距离、比例、固定分隔材料、时间戳的组合
  • 不能只做图像,不做 w

百度旋转 / 阿里 v2 / 某多多

  • 某度旋转:图像角度恢复 + fs/ac_c/tk
  • 某里 v2:SignatureNonce / Signature / 排序+编码 更重
  • 某多多:图片/标题解密 + 坐标 verify + captcha_collect

V5 / WebSocket challenge

  • 先数包,再分首包、图片包、验证包
  • 不要在协议边界不清时直接猜算法

hCaptcha / Cloudflare / PerimeterX 一类强对抗 challenge

  • 需要从一开始就把 WASM + 指纹 + 状态机 + challenge 请求链 分层
  • 这些题常常同时存在“纯算路线”和“环境拟合路线”

四、验证码统一检查点

每题至少保存:

  1. 初始化请求参数
  2. 图片或 challenge 资源返回值
  3. 识别结果
  4. 轨迹明文
  5. builder 输入对象
  6. builder 输出对象
  7. 浏览器发送值
  8. 本地生成值

五、何时先修图像,何时先修参数

先修图像线

适用:

  • 参数层较薄
  • verify 明显只校验距离/角度/坐标

先修参数线

适用:

  • collect/signature/w/fs 明显更重
  • token/challenge/load 返回对象没喂进去
  • 环境值明显不一致

六、验证码 Solver 落地结构

推荐拆成:

fetch_challenge
-> solve_image
-> build_track_or_answer
-> build_param_payload
-> verify

不要把图片识别、参数 builder、环境模拟写成一个大函数。