AskaEth
ea645ce2a6
feat(ncm): 风控加固——接口响应短 TTL 缓存 + 游客 MUSIC_A + track/all 死代码
三(按 NCMAPI_NOTES §2.1/§4/§6):
① 接口级响应缓存(对齐参考 apicache 2 分钟,防风控高频 ip 错误):
- 新增 core/ncm_apicache.{c,h}——内存 4 槽 LRU(单槽≤128KB,TTL 120s,
键=md5(path+\x01+json))+ 可选盘缓存 <data_dir>/ncm_api_cache/.json
(8B 墙钟头+body,超 TTL miss 并删,30s 节流清过期)。自包含模块
(仅 libc+pthread+clock_gettime),可独立链接无符号冲突。
- ncm_api.c:api_post 拆「请求+解析」两段,新增 api_post_cached;四个只读
接口接线:user_playlist/playlist_detail/song_detail/cloudsearch。
song_url/lyric/vip 不入缓存。
- 手动刷新绕过:ncm_api_cache_refresh_path(path) 一次性标记;home/歌单
topbar ↻ 接入;playlist_open/search 不标记(走缓存)。
- 盘层挂载 appstate_init;登出 appstate_logout 全清(防串账号)。
② 游客 MUSIC_A:ncm_req.c weapi+eapi 无 MUSIC_U 且非 login 路径补
MUSIC_A=anonymous_token(对齐参考 cookie 伪装)。
③ track/all 死代码清理:移除 ncm_api_playlist_track_all(真实服务器 8 形态全
404,无调用点);ncm_api_parse_track_all 保留(离线重放/单测),注释标注
「已验证不存在,勿用于真实请求」。
验证:新 bench/apicache_sim.c(0 网络)①TTL 内不重复请求/②过期重拉/③手动
刷新绕过/④cloudsearch 按键区分/⑤清空重拉/⑥盘缓存写入+clear 全 PASS;stream/
player_flow/window/search/cache_evict(1-9)/pagination/playlist_race sim 全
PASS;test_ncm_core host+mipsel(qemu) PASS;build_ncm.sh -Wall -Wextra 0
warning(text 1026914/data 1664/bss 1363460);0 高频真实请求。新 ncm md5
a69c93538920eba9d42a2ebb42f8fdca(留主会话上卡)。
2026-09-02 12:48:34 +08:00
..
2026-09-01 15:55:42 +08:00
2026-09-02 12:48:34 +08:00
2026-09-02 03:43:42 +08:00
2026-09-01 18:52:14 +08:00
2026-09-01 18:52:14 +08:00
2026-09-02 11:47:49 +08:00
2026-09-02 12:48:34 +08:00
2026-09-02 03:43:42 +08:00
2026-09-02 02:25:37 +08:00