Files
MemRelay/projects/280dd2a0-d23d-4a71-91e1-dce4353163be/免费集播放后内存里有完整 BunnyCDN m3u8.md
T
memrelay 7212d53a23 create: 免费集播放后内存里有完整 BunnyCDN m3u8
MemRelay-Operation: memory-save:rapt-cdn-heap-20260925
MemRelay-Resource: 19447a9a-2d0a-42d9-a258-ad9046bd1505
2026-09-25 06:41:33 +08:00

1.7 KiB
Raw Blame History

title, type, permalink, stable_id, scope, memory_type, project_id, usage_profile_id, status, revision, request_id, created_at, updated_at, tags
title type permalink stable_id scope memory_type project_id usage_profile_id status revision request_id created_at updated_at tags
免费集播放后内存里有完整 BunnyCDN m3u8 experience main/projects/280dd2a0-d23d-4a71-91e1-dce4353163be/免费集播放后内存里有完整-bunny-cdn-m3u8 19447a9a-2d0a-42d9-a258-ad9046bd1505 project experience 280dd2a0-d23d-4a71-91e1-dce4353163be 0c9feb46-d06e-43cd-9ef0-c5813c84a998 active 1 rapt-cdn-heap-20260925 2026-09-24T22:41:27.398226+00:00 2026-09-24T22:41:27.398226+00:00
cdn
playlistv2
bunnycdn

现象:即使 Google 登录后,外部 curl 调 /app/video/playlistv2 仍返回 299;但 App 内播放免费集时播放器确实拿到了 CDN 地址。

Flutter 日志 PlayerPage url预览会把签名截成 bcdn_token=HS256...,完整串不在 logcat。用 Frida 16.5.9 扫进程 rw- 堆里的 bcdn_token= 可拿到完整 URL。

URL 形状:https://vz-.b-cdn.net/bcdn_token=&token_path=%2F%2F&expires=//playlist.m3u8 这是 Bunny token authentication 路径前缀,不是 query string。token_path 覆盖该视频目录,同一前缀可访问子播放列表和 ts。

已验证:主播放列表 HTTP 200,#EXT-X-STREAM-INF 指向 1080p/video.m3u8(1082x1920);子列表为 VOD,video0.ts 起,带 #EXT-X-ENDLIST。本次播放拿到的一条约 66 秒、17 个 ts。

不要把签名本体写进普通记忆。不要再走 mitmproxy transparent、reFlutter、iptables DNAT。

自动化全量 CDN 仍未通:rapt_scraper.py 的 playlistv2 仍会 299,cdn_url 仍为空。下一步应该是在进程内拿 Dio 响应或播放后扫堆,而不是继续用外部 token 调 playlistv2。