d92K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2G2M7$3y4Z5K9h3&6S2i4K6u0W2L8X3g2@1i4K6u0r3K9r3!0E0k6g2)9J5c8X3I4G2k6$3W2F1i4K6y4r3k6$3!0@1L8#2)9#2k6Y4m8S2k6$3g2Q4x3@1c8Z5N6s2c8H3M7#2)9J5y4e0y4m8i4K6t1#2x3V1k6Q4x3U0f1J5c8Y4N6%4N6#2)9J5k6h3!0K6j5$3S2A6L8X3q4Q4x3X3g2F1k6i4c8Q4x3U0f1J5c8R3`.`.
OK 兄弟们 这一期 依旧 打开控制台 随便输入格式正确的手机号
点击发送验证码 触发3个接口

一共三个接口
先看第一个接口 load 接口

cid拆解
cid —— 会话 ID(本次验证的唯一标识)
代码块
ci-02-a64d6c4ea101-b8d2562c-403132332e3133392e36312e3833-625f747261636b5f6d61746368-2353
│ │ │ │ │ │
│ │ │ │ │ └ 4位随机
│ │ │ │ └ hex("b_track_match") = 类型编码
│ │ │ └ hex("@不能展示这个就代表的是你的本机ip") = 客户端 IP
│ │ └ 8位随机
│ └ a101(版本/区域码)
└ ci-02 前缀(固定细致研究参数
master / standby —— CDN 主备域名,用来拼图片完整 URL
assets.js / assets.css —— SDK 文件路径,拼上 master 就是完整地址
passak —— 与请求里的 ak 相同,是「通行密钥」的回显(用于第二步校验)
code: 0 —— 成功;非 0 就失败了
log_id —— 服务端日志 ID,排查问题用
ctype: 验证码的类型 这是行为轨迹验证码 意思是:采集并校验用户的鼠标/触摸轨迹数据,判断是否真人。
下来先看第二个接口 我是先粗略把,每一个接口看一遍 在进行细分 看看哪个数据 是加密的

经过我的调试分析 得出来 img 接口 这个三个字段的含义
{
"data": {
"bid": "bi-01-0e506c4ea101-55f86af2-403132332e3133392e36312e383340625f747261636b5f6d617463684030-3333645f333034-600e",
"enc_data": "4sOqoqnbXBd+gHtgd1cP3zmVt/QZp+fc1bW7ZYWzQJ6W5Rb+mnfxBMjKi1bkvJmwkqfECZGr8ufvHTcnzA4FJ489jW2a9myV9qWcGKPRstH17D4BwOPIPi1hqVb76RFD6ZvjapKau/ytbp0drPjyEMSv3GfE7L41rq93vuFfUfHFX1zEZMJS+gxE14iD7hzZqYtTAaKJ+yEY78LWc36mXBFLBxFWA2EcIkwxxhgIDUUmkW8T8x3MCju+QX7qHpMuYP8gUEpnoKiOsPT7xTtUt3mwFOtvdKxTWX9EIIF14A17nuq3o6TEot02Q+3jFQNLjBA1wqyjmo3Q8R5i3L8XHi90NlIq0CqjR0Fsc0aWY1N9rL2DQeCUaOR/6SGGm8b0do4heD+v3vIMoRZqcg5OsFmOTbH7m7/+6rBf88lquVY=",
"r": "2096939700960874444"
},
"code": 0,
"msg": "success",
"log_id": "ba3daa17aab1fa6fb1ff85a07d880f04"
}
字段 | 含义 |
bid
| 本次挑战编号,verify 要带上 |
enc_data
| 加密的题目(图片 + 曲线数据) |
r
| 10 位随机串,verify 原样回传 |
enc_data 长度会变:实测见过 320 / 400 / 536 / 640 字符 → 说明内容不是固定的图片,每次不同。


完整的思路理解:
服务端下发: 打乱的图 + pm(怎么还原)+ 曲线三参数
你要做的:
① 下载图 (master + imgUrl)
② 按 pm 重建完整图(还原出曲线)
③ 用 start/end/height 算贝塞尔曲线:
P0 = start
P1 = [10, height] ← 控制点
P2 = end
④ 生成「贴合这条曲线」的滑块轨迹
⑤ 加密提交
本质上 这三个接口 就只有 c 和enc_data 这两个加密字段

先打一个xhr 断点 触发验证码
这东西 就是c 你要往前去跟栈 看看哪里是加密的地方 
你的直觉:先加密,再解密
实际情况(这个业务):
① load → 拿任务
② img → 拿题目(enc_data 是加密的)
③ 解密 enc_data ← ★ 第一次出现
④ 画出拼图 + 曲线
⑤ 用户拖动
⑥ 生成轨迹
⑦ 加密轨迹 → c ← ★ 第二次出现
⑧ 提交
在img 接口 插桩

他这个插桩 你就是首页要主要, 位置 刷新的时候 不能有别的断点 刷新完之后 重新在走一遍验证码流程
就有了


16位 基本上 要么是key 要么是IV

详细插桩日志 在vscode里

往后 分析 明文发现变成哈希值 需要看一下 是什么加密 得定位到

通过明文那个方法 进去 判断出是哈希算法 往上搂是有window.crypto

在这一块是有 substring 操作 也就是 切割16位

往下继续跟栈 你需要解密操作了 
enc_data 成功解密


下期继续 轨迹还原
传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!