fix(cmcc): parse_curl 头键大小写不敏感(Reqable 等导出 Cookie 大写 C)
号2素材实测踩到:mitm/Reqable 导出的请求头是 'Cookie'(大写),
parse_curl 的 headers.get('cookie') 大小写敏感 → 自检误报缺 cookie 头。
改用小写化视图做自检判定,原始头键仍原样保留(服务端/request 都大小写不敏感)。
This commit is contained in:
@@ -16,6 +16,10 @@ QQ音乐会员成长值任务 + 会员福利站 自动签到,青龙面板 Node
|
||||
| `QM_PLAY_REPORT` | 可选 | `on` 才启用任务20播放上报(本版未实现模板,挂了开关占位) |
|
||||
| `QM_SHARE_CARD` | 可选 | `on` 才让**定时任务**自动建卡。默认 off = 只读报数。手动取卡走 `-- card`,不受此开关限制 |
|
||||
| `QM_CARD` | 可选 | `1`/`on` 等价于 `-- card`(不方便传参时用) |
|
||||
| `QM_COIN_SIGN` | 可选 | 金币中心签到开关,**默认 on**。`off` 整体跳过(纯签到+领奖,不花金币、不伪造行为) |
|
||||
| `QM_COIN_ACT_ID` | 可选 | 金币签到 ActID,默认 `Z25hHGi`。**活动换季会变**,失效时抓包改这里 |
|
||||
| `QM_COIN_SCENE_ID` | 可选 | 金币签到 ScenesID,默认 `2` |
|
||||
| `QM_COIN_LOTTERY_ACT_ID` | 可选 | 金币抽奖签到 ActID,默认 `Z156KEu`,同样会换季 |
|
||||
| `WEBHOOK_URL` | 可选 | 自定义 webhook(如平台 `/api/hooks/ql`)。与 `PUSH_PLUS_TOKEN` 至少配一个 |
|
||||
| `WEBHOOK_METHOD` | 可选 | 默认 `POST` |
|
||||
| `WEBHOOK_CONTENT_TYPE` | 可选 | 默认 `application/json` |
|
||||
@@ -314,6 +318,7 @@ x-sh-hook-token: <平台 QL_HOOK_TOKEN>
|
||||
|---|---|---|
|
||||
| 任务中心 | 签到(15) / 挂件(5) / 装扮(5) / 听书(5) / 节目StartTask | 低(等价 App 点击) |
|
||||
| 会员福利站 | 每日签到(15) / 礼券(+10心愿值) / 旅程激励 / 月里程碑 / 月度好礼 / 臻享抽奖 | 低(先探后做,无硬编码 ID) |
|
||||
| **金币中心** | 金币签到 + 领当日奖励 + 金币抽奖签到(`QM_COIN_SIGN`,默认 on) | 低(纯签到领奖,不花金币、不伪造行为) |
|
||||
| VIP 体验券 | 分享卡配额查询 / 建卡(`QM_SHARE_CARD=on`) | 低(只读默认,不消耗配额) |
|
||||
| 播放上报 | 任务20 完整 +10 需 App 正常收听(伪造统计默认关) | 中(默认关闭) |
|
||||
| 支付流水任务 | 4/5/6/12/14/18/21 | 不可伪造,不碰 |
|
||||
@@ -321,6 +326,62 @@ x-sh-hook-token: <平台 QL_HOOK_TOKEN>
|
||||
状态三态机:`Y`=已完成零请求(防风控)/ `W`=进行中直接领 / `N`=执行动作。
|
||||
错误码处置:`20020` 冷却3s重领 · `30005` 只读探测后补领 · `10006` 写锁即停次日恢复 · `2000` 登录态失效推送提示。
|
||||
|
||||
## 金币中心(第三套体系)
|
||||
|
||||
**与任务中心、福利站完全独立**:金币体系走 `musicu.fcg` + 小程序 comm,另外两套走 `u6.y.qq.com` + zzc 签名。
|
||||
给的是**金币**,不是成长值,所以不计入通知里的「成长值 +N」。
|
||||
|
||||
| 项目 | 值 |
|
||||
|---|---|
|
||||
| 网关 | `https://u.y.qq.com/cgi-bin/musicu.fcg`(**不签名**,裸 JSON) |
|
||||
| 模块 | `music.actCenter.ActCenterSignNewSvr` |
|
||||
| comm | `{ uin, authst, mina:1, appid:'wxada7aab80ba27074', ct:29, cv:0, format:'json' }` |
|
||||
| 方法 | `GetSignInSummary` / `GetSignInTaskList` / `SignIn` / `AwardPrize` |
|
||||
|
||||
`authst` 就是 `qm_keyst`,放在 body 里(不走 Cookie)。**没有 `g_tk`,也不签名。**
|
||||
|
||||
### 流程
|
||||
|
||||
```
|
||||
① GetSignInSummary + GetSignInTaskList → info.IsSignIn / ContinueTaskList
|
||||
② 未签 → SignIn { ActID, ScenesID }
|
||||
③ 找 State===2 的 TaskList 项 → AwardPrize { ActID, TaskID }
|
||||
```
|
||||
|
||||
`retCode` 口径:`0` 成功 · `100004` 已领过(幂等,也算成功)· `1000` 未登录 · 其他失败。
|
||||
|
||||
### 不做的部分
|
||||
|
||||
| 功能 | 为什么不做 |
|
||||
|---|---|
|
||||
| **金币抽奖**(`drawCoinLottery`) | 消耗抽奖券,属于「花金币」不是「赚金币」 |
|
||||
| **红包雨** | 要卡 6 个时段各一次,青龙 cron 得加 6 条 |
|
||||
| **每日任务列表**(浏览页 +3 豆那类) | 完成上报发生在跳转页内部埋点,要逆向各 H5 协议 |
|
||||
| **定时金币** | 服务端按各自间隔下发,要维护下次查询时间,收益低 |
|
||||
|
||||
### ActID 换季
|
||||
|
||||
`ActID` 是活动实例 ID,**活动换季就变**。当前硬编码值:
|
||||
|
||||
```
|
||||
COIN_ACT_ID = Z25hHGi (金币中心签到)
|
||||
COIN_SCENE_ID = 2
|
||||
LOTTERY_ACT_ID = Z156KEu (金币抽奖签到)
|
||||
```
|
||||
|
||||
失效时脚本会打:
|
||||
|
||||
```
|
||||
[金币] 状态查询失败 code=... ret=...
|
||||
[金币] 若持续失败,多半是活动换季导致 ActID 失效 —— 抓包看 ActID,改 QM_COIN_ACT_ID
|
||||
```
|
||||
|
||||
并记 `warn`(不是 `fail` —— 不是登录态问题,也不是脚本 bug)。
|
||||
|
||||
**修法**:App 抓包看 `ActCenterSignNewSvr` 请求里的 `ActID` 参数,改环境变量 `QM_COIN_ACT_ID`,
|
||||
不用改代码。
|
||||
|
||||
|
||||
## 本地测试
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user