2.9 KiB
2.9 KiB
验证码与 challenge 家族
一、验证码统一拆法
先拆 5 条线:
- 初始化 / challenge 线
- 图像或题面识别线
- 参数 builder 线
- 环境 / 指纹 / collect 线
- 最终 verify 线
每条线都单独保存证据,不要混写。
二、高频字段
collectpow_answerpow_calc_timewfsac_cSignatureSignatureNoncecaptcha_collectbehaviortokenchallengelot_numberpayload
不要只看它像不像密文,要看:
- 删除后是否失败
- 伪造后是否失败
- 是否与识别结果、时间戳、环境值绑定
三、站点家族
腾讯滑块 / TCaptcha
两条路线要分开:
prehandle -> 图像 -> gap -> PoW -> collect -> verify的纯 HTTP 工程链tdc.js / VM / collect的补环境 + VMP 链
重点:
pow_answer与pow_calc_timecollect- 轨迹与 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 请求链分层 - 这些题常常同时存在“纯算路线”和“环境拟合路线”
四、验证码统一检查点
每题至少保存:
- 初始化请求参数
- 图片或 challenge 资源返回值
- 识别结果
- 轨迹明文
- builder 输入对象
- builder 输出对象
- 浏览器发送值
- 本地生成值
五、何时先修图像,何时先修参数
先修图像线
适用:
- 参数层较薄
- verify 明显只校验距离/角度/坐标
先修参数线
适用:
collect/signature/w/fs明显更重- token/challenge/load 返回对象没喂进去
- 环境值明显不一致
六、验证码 Solver 落地结构
推荐拆成:
fetch_challenge
-> solve_image
-> build_track_or_answer
-> build_param_payload
-> verify
不要把图片识别、参数 builder、环境模拟写成一个大函数。