统一虎牙 App 登录设备画像
This commit is contained in:
+15
-12
@@ -21,20 +21,24 @@ Web UI 通过 `web/backend/routers/huya.py` 调用它。
|
||||
```
|
||||
┌──────────────────────────────────────────────────────────────────────┐
|
||||
│ 每次 WUP 登录前 │
|
||||
│ ① 新设备注册链 core/huya/dfp_register.register_device() │
|
||||
│ ① 读取/创建账号设备画像 core/huya/device_profile.get_profile() │
|
||||
│ 同一账号复用 vendor/model/screen/width/height/fingerprint/guid32 │
|
||||
│ │
|
||||
│ ② 新设备注册链 core/huya/dfp_register.register_device() │
|
||||
│ getDfpConfig → selectOperator → dfpReport(随机cw) │
|
||||
│ 返回 (t1, safedeviceid, device_id) ← 全新,非画像旧值 │
|
||||
│ 三步请求的设备字段均来自①,返回 (t1, safedeviceid, device_id) │
|
||||
│ 返回字段为本次登录专用的新令牌,非画像旧值 │
|
||||
│ 失败 → 抛 DfpRegistrationError → HuyaAppLoginError,终止,不回退 │
|
||||
│ │
|
||||
│ ② WUP 密码登录 wup_password_login_raw() │
|
||||
│ ③ WUP 密码登录 wup_password_login_raw() │
|
||||
│ POST wup.huya.com hypasswordLogin(safedeviceid/device_id 用①的)│
|
||||
│ ├─ 正常 → 解出 114B cred + 真实 uid │
|
||||
│ └─ pt_auth 滑块 → solve_safe_auth() 自动过验 → 重发登录(≤3轮) │
|
||||
│ │
|
||||
│ ③ 本地铸证:nonce_forge(uid+k1) → cert_forge 铸证书 → envelope_forge │
|
||||
│ ④ 本地铸证:nonce_forge(uid+k1) → cert_forge 铸证书 → envelope_forge │
|
||||
│ 补丁 WUP 信封(证书 + UID) │
|
||||
│ ④ 模拟扫码绑定四步流 QrRole(getQrId→scan→bind→tryQrLogin)→ biztoken│
|
||||
│ ⑤ POST /web/cookie/verify 兑换 → 全套网页 Cookie │
|
||||
│ ⑤ 模拟扫码绑定四步流 QrRole(getQrId→scan→bind→tryQrLogin)→ biztoken│
|
||||
│ ⑥ POST /web/cookie/verify 兑换 → 全套网页 Cookie │
|
||||
└──────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
@@ -91,8 +95,8 @@ Web UI 通过 `web/backend/routers/huya.py` 调用它。
|
||||
| fingerprint | **随机**(每账号) | `generate_profile` sha1 | 低 |
|
||||
| 机型 / 屏幕 / 宽高 | **随机**(每账号从 `REAL_MODELS` 选) | `generate_profile` | 低 |
|
||||
| app_version / sdk_version | **固定** | 常量 `13.4.22` / `1.0.80138` | 低(需与 hdid 配套) |
|
||||
| 滑块 UA | **固定** 小米 M2102J2SC | `app_login.APP_UA_MOBILE` | ⚠ 与随机机型画像不一致 |
|
||||
| session / traceId / 登录行为 JSON | **固定金样本** | `_golden_session_assets()` | ⚠ 多账号相同,异常画像 |
|
||||
| 滑块/扫码 WebView UA | **按画像派生** | `device_profile.mobile_user_agent()` | 与机型/厂商/系统版本一致 |
|
||||
| session / traceId / 登录行为 JSON | **每次请求动态** | `wup_encoder.make_*` + `_golden_session_assets()` | 仅协议字段固定结构 |
|
||||
| QrRole context / reqid / page_id | **随机** | `QrRole`(uuid/random) | 低 |
|
||||
|
||||
---
|
||||
@@ -100,10 +104,9 @@ Web UI 通过 `web/backend/routers/huya.py` 调用它。
|
||||
## 五、风险与未解决项(诚实清单)
|
||||
|
||||
1. **hdid 固定共享** → 服务端可在设备维度把多个账号关联起来(见 §2 #1)。纯代码无法铸造新 hdid;换掉即 `APP_SIGN_NOT_MATCH`。
|
||||
2. **滑块 UA / session / traceId 固定** → 与随机机型画像不自洽,长期易形成异常画像。
|
||||
3. **qr_auth / dx_auth 无自动闭环** → 碰上直接失败(`QR_AUTH_REQUIRED`)。
|
||||
4. **无稳定性数据** → 没有 20/50/100 次连续成功率、多账号/IP/时段矩阵。
|
||||
5. **Frida attach 主进程必被 msaoaidsec 杀**(真机/模拟器均实测)→ 见 §六。
|
||||
2. **qr_auth / dx_auth 无自动闭环** → 碰上直接失败(`QR_AUTH_REQUIRED`)。
|
||||
3. **无稳定性数据** → 没有 20/50/100 次连续成功率、多账号/IP/时段矩阵。
|
||||
4. **Frida attach 主进程必被 msaoaidsec 杀**(真机/模拟器均实测)→ 见 §六。
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user