From 345079b00abce9c698b668044c1a7c36c47859c0 Mon Sep 17 00:00:00 2001 From: MemRelay Date: Fri, 25 Sep 2026 23:15:12 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E5=85=8D=E8=B4=B9=E9=9B=86=E6=92=AD?= =?UTF-8?q?=E6=94=BE=E5=90=8E=E5=86=85=E5=AD=98=E9=87=8C=E6=9C=89=E5=AE=8C?= =?UTF-8?q?=E6=95=B4=20BunnyCDN=20m3u8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MemRelay-Operation: memory-save:rapt-cdn-heap-revise-20260925 MemRelay-Resource: 19447a9a-2d0a-42d9-a258-ad9046bd1505 --- .../免费集播放后内存里有完整 BunnyCDN m3u8.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/projects/280dd2a0-d23d-4a71-91e1-dce4353163be/免费集播放后内存里有完整 BunnyCDN m3u8.md b/projects/280dd2a0-d23d-4a71-91e1-dce4353163be/免费集播放后内存里有完整 BunnyCDN m3u8.md index ae045aa..31c82f9 100644 --- a/projects/280dd2a0-d23d-4a71-91e1-dce4353163be/免费集播放后内存里有完整 BunnyCDN m3u8.md +++ b/projects/280dd2a0-d23d-4a71-91e1-dce4353163be/免费集播放后内存里有完整 BunnyCDN m3u8.md @@ -8,25 +8,25 @@ 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 +revision: 2 +request_id: rapt-cdn-heap-revise-20260925 created_at: '2026-09-24T22:41:27.398226+00:00' -updated_at: '2026-09-24T22:41:27.398226+00:00' +updated_at: '2026-09-25T15:15:08.390927+00:00' tags: - cdn - playlistv2 - bunnycdn --- -现象:即使 Google 登录后,外部 curl 调 /app/video/playlistv2 仍返回 299;但 App 内播放免费集时播放器确实拿到了 CDN 地址。 +后续更正:66 秒就是完整短视频,不是预览。playlistv2 改用 apasstk 和 JSON 之后,脚本已经能批量拿到免费集地址,不要再按本文末尾去扫堆或拦截 Dio。下面保留当时的抓包现象。 + +现象:即使 Google 登录后,外部用 Authorization Bearer 和 form 调 /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。 +这是 Bunny token authentication 路径前缀。token_path 覆盖该视频目录,同一前缀可访问子播放列表和 ts。 -已验证:主播放列表 HTTP 200,#EXT-X-STREAM-INF 指向 1080p/video.m3u8(1082x1920);子列表为 VOD,video0.ts 起,带 #EXT-X-ENDLIST。本次播放拿到的一条约 66 秒、17 个 ts。 +已验证:主播放列表 HTTP 200,指向 1080p/video.m3u8(1082x1920);子列表为 VOD,带 #EXT-X-ENDLIST。 -不要把签名本体写进普通记忆。不要再走 mitmproxy transparent、reFlutter、iptables DNAT。 - -自动化全量 CDN 仍未通:rapt_scraper.py 的 playlistv2 仍会 299,cdn_url 仍为空。下一步应该是在进程内拿 Dio 响应或播放后扫堆,而不是继续用外部 token 调 playlistv2。 \ No newline at end of file +不要把签名本体写进普通记忆。不要再走 mitmproxy transparent、reFlutter、iptables DNAT。 \ No newline at end of file