前言
参考文章
这篇文章想想讨论一个的问题是:
面对 CCTV 这种已经上了 wasm + vmp、并且明显依赖会话状态推进的播放链路,AI 能不能在几乎不手写代码的前提下,把浏览器里的真实播放流程一步步对齐到本地,最终实现本地播放?
我的结论是:
能,而且效果比预想中更强。
环境准备
- Chrome DevTools MCP
- Codex
- 可用的 GPT-5.4 账号
一、先说结论
这篇文章真正想讨论的,不是单纯“某个视频网站怎么解密”,而是想验证一件事:
AI 到底能不能自动补环境、自动试错、自动收敛,把一个复杂的播放加密链路从浏览器搬到本地,并做到可用?
这次最终达成的结果是:
- 成功拿到目标
m3u8
- 在本地完成解密、分段
mux 和整体 concat
- 输出可播放的
mp4
- 但还不是完全无损复刻:浏览器里仍有部分状态没有
100% 对齐,少量 NAL 依然可能异常,所以个别位置仍会出现局部花屏、异常帧或短暂画面瑕疵
所以这篇文章的重点,不是“有没有把所有边角都抠到完全一致”,而是:
面对这种复杂链路,AI 已经能把问题从“完全黑盒”推进到“本地可用”。
至少从这次实验来看,这一点已经被验证了。
二、为什么选 CCTV 这类目标
如果只是普通站点、普通播放器、普通 AES 流,这个实验的意义其实没有那么大。
因为很多站点的前端保护强度并不高,逻辑也比较直。
但 CCTV 这套链路不一样。实际接触下来,它至少有几个比较“硬”的特点:
- 不是简单的固定
key 解密。
- 浏览器真实播放过程中有
wasm 参与。
- 存在
vmpTag 这种明显依赖会话状态推进的机制。
- 同一个
NAL,在不同状态下结果并不稳定。
- 不是抓一个包下来,本地调用一下就能
1:1 复现。
也就是说,这不是那种“看一眼 JS 变量、抄一下 key、直接完事”的目标。
从逆向角度看,这已经算是比较难啃的一类前端播放链路。
所以我才觉得,这个场景特别适合拿来验证 AI 的能力。
如果 AI 连这种级别的链路都能逐步收敛到本地可播放,那么对于其它那些没有这么严、没有这么重状态机、没有这么复杂 wasm 参与的网站,难度只会更低。
三、这次最有价值的,不是“解出来了”,而是“AI 真的能补环境”
这次我一路让 AI 去补:
mediaTagID
Date.now()
new Date()
performance.now()
pageHref
workerHref
location.origin
blob worker 的 href / pathname / protocol
后面甚至把浏览器 main worker 的主线程 postMessage 序列抓下来,在本地按顺序重放。
虽然最终还没有做到浏览器和本地每一个 vmpTag 都完全一致,但这个过程已经足以证明一件事:
AI 在“运行环境复刻”这件事上的效率非常高。
这点非常重要。
很多时候真正难的,并不是某个函数本身,而是:
- 这个函数究竟在什么环境下运行
- 前面多少步状态已经推进
- 浏览器真实会话里到底传了什么参数
而这些,恰恰是传统人工逆向里最花时间、最烦、也最容易漏细节的部分。
这次 AI 在这里的表现,确实很强。
四、这次没有完全对齐浏览器,但并不影响对 AI 的判断
原因很简单。这次的目标并不是做一个教科书式的完美复刻,而是看:
面对一个复杂的 wasm / vmp 前端播放加密链路,AI 能不能把问题从“完全黑盒”推进到“本地可用”。
答案已经很明确了:它不仅能推进,而且推进得很快。
五、真正让我觉得震撼的地方
1. 它真的可以把高难度链路往本地搬
以前一提到这种链路,第一反应通常都是:
- 太复杂
- 要盯很多
JS
- 要看
wasm
- 还要补浏览器环境
- 状态机一乱就全乱
但这次实际体验是,只要你能不断给 AI 提供反馈,它就真的可以持续往前推。
2. 它不是只能做低门槛站点
很多人会觉得,AI 能处理的,最多只是一些没什么对抗强度的网站。
但这次面对的是:
这种链路本身就已经不算简单。
如果连这种级别都能本地复现到可播放,那么对于其它一些没有这么严、没有这么复杂、没有这么重状态控制的网站,结果其实是可以预期的。
最近Anthropic 最新发布的 Claude Mythos,因为Anthropic觉得太危险,不能给普通用户用,得先给大公司用,让他们做好防护。当时看到嗤之以鼻,以为是噱头,现在看来,也不全是了
六、尝试复原算法
- 先补环境,尽可能把浏览器中的播放逻辑扣到本地,并让下载到的
ts 可以正常播放。
- 再把
wasm 通过 wasm2js 转成 js,让 AI 去替换原本的 wasm 调用链。
- 最后让 AI 自动插桩、自动分析关键路径,逐步逼近具体算法。
七、分享 Skill
我把这次调试和对齐过程总结成了一个 skill,方便后面重复使用。
有兴趣的话,可以自己去试一下:
https://wwaxz.lanzoul.com/iuUON3n2fh9a