文档: 补 AGENTS 的原版协议对齐条目(HAR 实测: api.php 取配置/业务码 403/试用配额)

This commit is contained in:
zijunchiang
2026-10-08 03:57:07 +08:00
parent 4576a89f9a
commit ff59840c8e
+21 -2
View File
@@ -195,8 +195,8 @@ $BT/apksigner verify 目标名.apk
### 版本号
- `app/build.gradle`:`versionName "1.5.8"` / `versionCode 40`
(`1.5.5`/`37` 已发布;`1.5.6` = 更新源加 Gitee、`1.5.7` = 删除「歌曲源临时受限」弹窗、`1.5.8` = 精简远程日志,均尚未发布。18~21 曾被本机临时诊断包占用)
- `app/build.gradle`:`versionName "1.5.9"` / `versionCode 41`
(`1.5.5`/`37` 已发布;`1.5.6` = 更新源加 Gitee、`1.5.7` = 删除「歌曲源临时受限」弹窗、`1.5.8` = 精简远程日志、`1.5.9` = 按 HAR 对齐原版协议,均尚未发布。18~21 曾被本机临时诊断包占用)
- App 内显示统一用纯版本号(不加 `(versionCode)` 括号)
- ⚠️ **发布构建已开启 NewApi 闸门**(`lint { checkReleaseBuilds true; fatal += ['NewApi'] }`):
任何「调用了高于 `minSdk 21` 且未做版本守卫的 API」都会让 `assembleRelease` 直接失败。
@@ -309,6 +309,25 @@ $BT/apksigner verify 目标名.apk
⚠️ 其 `do.php` 取址行为**尚未定性**(测试时本机出口 IP 配额已被消耗殆尽),
因此置于次位、由运行时自动升降序。
- 该条改动把 `KTV_BRIDGE_API` 由 10 提升到 **11**(同样四处)。
- **⚠️ 原版协议对齐(2026-10-08,依据 HAR 抓包实测)**:抓包(Reqable,`e.ac19.cn`)显示原版客户端是**三步**:
1. **`POST /api.php`**:`Content-Type: application/x-www-form-urlencoded`,
body `action=get_config&device_id=<mac>`,UA
`Dalvik/2.1.0 (Linux; U; Android <版本>; <型号> Build/<ID>)` →
返回 `{"status":"success","config":{…}}`,字段含
`network_verification`、`dialog_title`(**"请输入商家提供的正确卡密"**)、
`trial_enabled`、**`trial_times`**、**`trial_duration`**、`heartbeat_interval`、`server_time`;
2. `GET /i.php`(参数与我们**完全一致**);
3. `GET /music/do.php`(参数与我们**完全一致**)。
- 我们原先**完全没调 `api.php`** ✗ —— 现由 `SongUrlResolver.ensureConfig()` 补上
(走 `KtvJsBridge.rawCleanPost()`,缓存 30 分钟;桥不可用则跳过)。
- **`trial_times` 用于限制一次取址尝试的源数量**:实测额度 **2 次 / 5 分钟**,
原来 9 个源全扫会把额度瞬间打光,紧接着就一直被风控拒绝。
- ⚠️ **风控拒绝的真实形态是「HTTP 200 + 业务码 403」**:
`{"code":403,"msg":"请求被拒绝:检测到异常行为"}` —— **不是 HTTP 403**。
以前只按 HTTP 状态判断,这类响应被当成"没有地址",日志里看不出真因;
现在 `code == 403` 也置 `sawForbidden`(i.php 与 do.php 两处)。
- 日志分工照旧:远程一条 `SOURCE-CONFIG trial_enabled=… trial_times=… …`;
原始 JSON 与"要求卡密"提示只写本地。
- **⚠️ 取址有两条实现,改协议必须同时改**:JS 主路径(`ktv_api.js`)+ 原生兜底
(`SongUrlResolver.kt`,供 **WebView 不可用**的老盒子使用 —— 实测极米 H1S/GMUI2.0 上
WebView 导不出 `window.KtvApi`,桥永远 not ready,只靠 JS 时表现为