多账号设备画像: 设备/指纹/风控数据归类 + 每账号独立画像全链接入
- 实测校验矩阵: hdid+app_version 硬锚(APP_SIGN_NOT_MATCH), fingerprint 换→safe_auth滑块(自动过), device_id/机型/safedeviceid 直接过 - 定位注册接口: df/token+collect(sdid每次新值), wsapi dfpReport链(未破解) - tools/huya_device_profile.py: 每账号画像生成/持久化(幂等) - app_login_flow.login_cred / full_web_cookie 接入画像, 端到端出全套cookie
This commit is contained in:
@@ -458,3 +458,65 @@ WS帧包装 = 00 03 1d 00 01 [2B len][4B len] + 信封(去4B前缀), len = inner
|
||||
- evidence/ws_current_session_frames.json: 浏览器当前会话帧(新账号, 证明格式)
|
||||
- evidence/activity_verify_result.txt: 最终验证输出
|
||||
- /tmp/cdp_now*.py: CDP 抓当前浏览器帧的脚本(浏览器 200 对照)
|
||||
|
||||
---
|
||||
|
||||
## 附录B: 多账号设备画像 —— 设备/指纹/风控数据归属与校验矩阵 (2026-08-26 新增)
|
||||
|
||||
### 需求
|
||||
号很多, 不能所有账号共用同一台"设备身份", 需要: ①分清哪些字段是设备、
|
||||
哪些是指纹、哪些是风控; ②找到设备/指纹"注册"类接口, 让每账号有独立设备态。
|
||||
|
||||
### 整个 App 登录链路的数据归属 (appId=5008 / hypasswordLogin)
|
||||
|
||||
| 环节 | 数据 | 归属 | 说明 |
|
||||
|---|---|---|---|
|
||||
| WUP 登录 t1.t0 | **hdid** 32hex | **设备(注册锚)** | libhydeviceid.so 生成, dfp 链注册; **换→APP_SIGN_NOT_MATCH 硬错** |
|
||||
| WUP 登录 t1.t1 | app_version | **设备(签名相关)** | 与 hdid 绑定校验; **换→同样硬错** |
|
||||
| WUP 登录 t2.t2 | **fingerprint 40hex** | **指纹** | SHA1 设备指纹; 换→safe_auth 滑块(**可自动过**) |
|
||||
| WUP 登录 t2.t8 | device_id 40hex | 指纹(session hash) | dfpReport t5 下发值; 换→**直接通过** |
|
||||
| WUP 登录 t1/t2 其余 | vendor/model/os/screen/宽高 | **声明型设备信息** | 自述, 换→直接通过 (需与 screen/UA 自洽) |
|
||||
| WUP 登录 t0.t5 | safedeviceid(b64) | 指纹令牌 | RSA action, 服务端不校验内容; 换→通过 |
|
||||
| WUP 登录 t0.t2 | metadata JSON (session/traceId/uid) | 会话 | 账号绑定 |
|
||||
| WUP 登录 t0.t8 | user_action JSON | **风控(行为)** | 轨迹采集; 金样本固定值, 可批量复用 |
|
||||
| 证书 P1 | fingerprint + nonce + cred | 指纹+账号 | fingerprint 设备绑定; 换 cred/nonce 即多账号 |
|
||||
| 绑定流 | sdid (df/collect) | 指纹 | **每次调用返回新 sdid**, 天然每账号不同 |
|
||||
| 前置链 | getDfpConfig/selectOperator/dfpReport/dckey | 设备指纹注册 | 见下"注册类接口" |
|
||||
|
||||
### 服务端校验矩阵 (全部对 wup.huya.com 实测, 2026-08-26)
|
||||
```
|
||||
字段变更 | 结果
|
||||
hdid 32hex | 652B APP_SIGN_NOT_MATCH (硬错, 无滑块)
|
||||
app_version | 652B APP_SIGN_NOT_MATCH (硬错, 无滑块)
|
||||
fingerprint 40hex | 2107B 含 pt_auth 滑块URL → solver自动过 → 放行 ✅
|
||||
device_id 40hex | 1571B cred ✅ (直接通过)
|
||||
vendor/model/screen | 1571B cred ✅ (直接通过)
|
||||
safedeviceid 内容 | 1571B cred ✅ (直接通过)
|
||||
multi 全换(除hdid/版本)| 滑块(可过) ✅
|
||||
```
|
||||
|
||||
### 设备/指纹"注册类"接口 (已定位)
|
||||
1. **df.huya.com/web/df/token + df/collect** —— 指纹采集注册;每次调用从服务端
|
||||
取新 sdid (工具: core/huya/device_fingerprint.get_huya_sdid; **已实测每次返回
|
||||
新值**, 天然满足"每账号一个")。
|
||||
2. **wsapi.huya.com huyaudbwebui: getDfpConfig → selectOperator → dfpReport
|
||||
→ udbdf.huya.com/dckey/check** —— App 渠道完整设备注册链: 上报设备采集数据,
|
||||
服务端下发稳定设备指纹(32hex)/session hash(40hex)/action(RSA加密)。
|
||||
dfpReport 加密体未破解(待破解#2), 纯Python走注册链暂不可行。
|
||||
3. **数美 libtscsdk.so (cfgc.zztfly.com)** —— 第三方设备指纹 SDK, 登录前初始化。
|
||||
|
||||
### 多账号工程方案 (已实现并端到端验证)
|
||||
- 每账号一套画像: fingerprint/device_id/机型/vendor/screen 随机生成并持久化
|
||||
(evidence/device_profiles.json); **hdid+app_version 复用金样本**(硬锚, 不泄
|
||||
露单账号身份, 只是 App 签名设备锚点)。
|
||||
- 首次用新画像登录 → 触发 safe_auth 滑块 → solver (YOLO+opencv, 282px级) 自动
|
||||
过验 → 重发 → cred; 证书 P1 指纹也用该账号画像指纹, 全链设备一致。
|
||||
- sdid 每次 df/collect 自动新取, 绑定流天然隔离。
|
||||
- 实测 (hy_300026595, realme RMX3366 画像): cred 114B → bind rc 0 → biztoken
|
||||
344B → cookie verify 200 → 全套 cookie ✅
|
||||
|
||||
### 资产
|
||||
- tools/huya_device_profile.py: 每账号设备画像生成/持久化 (get_profile 幂等)
|
||||
- tools/app_login_flow.py: login_cred 支持 device_info 参数 (滑块自动过)
|
||||
- tools/full_web_cookie.py: 全链接入画像 (--new-device 强制换新画像)
|
||||
- evidence/device_profiles.json: 账号→画像映射
|
||||
|
||||
@@ -72,3 +72,25 @@
|
||||
- 设备指纹: core/huya/device_fingerprint.py (get_huya_sdid)
|
||||
- 证据: evidence/* (金样本wup_passwordlogin_taf.bin, nonce_k1.json等)
|
||||
- 协议细节全记录: docs/虎牙hyCred签发-侦察笔记.md (按Round追加)
|
||||
|
||||
---
|
||||
|
||||
## 六、多账号设备隔离(2026-08-26 追加)
|
||||
|
||||
**问题**: 号多, 全部账号共用一台设备身份 → 需按账号区分设备/指纹。
|
||||
|
||||
**数据归类(对 wup.huya.com 实测矩阵)**:
|
||||
- 设备硬锚(不可换): hdid(32hex) + app_version → 换即 APP_SIGN_NOT_MATCH
|
||||
- 指纹(换→滑块自动过): fingerprint(40hex)
|
||||
- 声明型(换→直接过): vendor/model/os/screen/宽高/device_id/safedeviceid
|
||||
- 行为风控: user_action JSON / IP / safe_auth 滑块
|
||||
|
||||
**注册类接口**:
|
||||
- df.huya.com/web/df/token+collect → sdid(每次新值, 天然每账号不同)
|
||||
- wsapi huyaudbwebui getDfpConfig→selectOperator→dfpReport + udbdf dckey/check
|
||||
(App 设备注册链, 加密体未破解, 当前不可纯Python走)
|
||||
|
||||
**方案(已端到端验证)**: tools/huya_device_profile.py 每账号生成并持久化
|
||||
一套画像(fingerprint/device_id/机型随机, hdid+app_version 复用金样本);
|
||||
首次换画像触发滑块由 solver 自动过; 证书 P1 指纹与该账号画像一致;
|
||||
sdid 每次新取。→ full_web_cookie.py 已接入, 跑通全套 cookie。
|
||||
|
||||
Reference in New Issue
Block a user