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

32 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 免费集播放后内存里有完整 BunnyCDN m3u8
type: experience
permalink: main/projects/280dd2a0-d23d-4a71-91e1-dce4353163be/免费集播放后内存里有完整-bunny-cdn-m3u8
stable_id: 19447a9a-2d0a-42d9-a258-ad9046bd1505
scope: project
memory_type: experience
project_id: 280dd2a0-d23d-4a71-91e1-dce4353163be
usage_profile_id: 0c9feb46-d06e-43cd-9ef0-c5813c84a998
status: active
revision: 1
request_id: rapt-cdn-heap-20260925
created_at: '2026-09-24T22:41:27.398226+00:00'
updated_at: '2026-09-24T22:41:27.398226+00:00'
tags:
- 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-<pull>.b-cdn.net/bcdn_token=<sig>&token_path=%2F<video-uuid>%2F&expires=<unix>/<video-uuid>/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。