# 验证码模式 ## 适用目的 在目标涉及滑块、点选、旋转、行为校验、PoW 或 challenge/verify 协议时,用这份文档拆解线路。 ## 一、先拆成 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` 判断它们是否真的重要,不看“像不像密文”,而看: 1. 删除后是否失败 2. 改动后是否失败 3. 是否与识别结果、时间戳、环境值强绑定 ## 三、5 类高频题型 ### 1. 纯图像 + 轻参数 特征: - 参数层较薄 - 识别结果最关键 推荐顺序: 1. 保存原图和小图 2. 先打通识别 3. 再看 verify 如何装入识别结果 ### 2. 图像 + 中等参数混合 特征: - 既要识别,也要还原 builder - 常见角度、距离、坐标和参数共同参与校验 推荐顺序: 1. 先拆图像线 2. 再跟最终 verify 3. 对齐 builder 输入和中间 payload ### 3. 纯算 / 半纯算题 特征: - 图像难度不高 - 轨迹、PoW、collect、signature 更重 推荐顺序: 1. 先拆请求顺序 2. 明确 token / challenge 来源 3. 再分析签名或 PoW 4. 最后微调轨迹或识别结果 ### 4. JSVMP / 补环境题 特征: - 大数组、解释器、环境读取多 - 入口在浏览器能跑,在本地容易报错 推荐顺序: 1. 先从 verify 参数赋值点倒推 2. 判断是值不对,还是入口直接报错 3. 前者先插桩,后者先补环境 ### 5. WebSocket / 分段协议题 特征: - 不再是单条 XHR - 请求和响应分多段 - 首包和验证包职责不同 推荐顺序: 1. 先数包 2. 标记首包、图片包、验证包 3. 再拆 key 派生和加解密 ## 四、验证码的统一检查点 每题至少保留这些检查点: 1. 初始化请求参数 2. 图片接口或题面返回值 3. 识别结果 4. 轨迹明文 5. builder 输入对象 6. builder 输出对象 7. 浏览器发送值 8. 本地生成值 ## 五、轨迹和识别的通用提醒 ### 轨迹 重点检查: - 总时长是否合理 - 时间戳是否单调递增 - y 轴是否完全不动 - 末尾是否机械地精确对齐 ### 识别 重点动作: 1. 先把识别结果单独保存成中间值 2. 不要把识别和网络请求死耦合 3. 让识别输出作为 builder 的独立输入 ## 六、什么时候不要急着做图像 如果 verify 失败的主因是: - token/challenge 不对 - collect/signature 不对 - 环境值不对 先修参数链和环境链,再修图像线;否则容易在错误链路上重复调参。