能直接提取保存的只有两种情况:video标签含可访问src或source直链,或network面板捕获未加密.mp4/.webm请求;其余如m3u8、加密token、iframe嵌套、js动态拼接等均需分步处理。

能直接提取保存的,基本只有两种情况:video 标签里有可访问的 src 或 source 直链;或者 Network 面板里能抓到未加密的 .mp4 / .webm 请求。其他情况——比如 m3u8、加密 token、iframe 套娃、JS 动态拼接 URL——都不可能“一键保存”,必须分步处理。
检查 video 和 source 标签里的 src 属性
这是最省事的路径,但只对静态 HTML 有效。很多网站(尤其是电商或 CMS 页面)确实会把 MP4 地址明文写在 <video></video> 里。
- 右键网页 → “检查”打开开发者工具,切到
Elements面板 - 按
Ctrl+F搜索<video>,定位到视频容器标签</video> - 展开后看有没有
src="https://.../xxx.mp4";没有就往下找<source src="..." type="video/mp4"></source> - 把整个 URL 复制出来,在新标签页打开;能直接播放且地址不变,说明是直链,
curl -O "URL"或浏览器“另存为”即可 - 如果打开后返回
403 Forbidden或跳转到错误页,大概率带了Referer校验或临时 token,得进 Network 面板重捕请求
用 Network 面板过滤并定位真实媒体请求
现代前端几乎都走这路:HTML 里只放个空 <video></video>,JS 拿到播放按钮点击事件后再 fetch 视频地址。不抓包根本看不到真实 URL。
- 打开开发者工具 →
Network面板 → 点左上角圆点确保录制开启 - 刷新页面,然后手动点一次播放按钮(不能靠自动加载,有些资源要交互才触发)
- 在筛选栏输入
media,或直接搜.mp4、.webm、.m3u8、video - 找到体积最大、响应类型为
video/mp4或application/vnd.apple.mpegurl的条目 - 点开它 → 右侧
Headers里找Request URL,复制整条链接 - 注意看
Request Headers里有没有Referer或Cookie字段——如果下载时提示 403,wget --header="Referer: https://example.com/" URL往往就能过
遇到 iframe 嵌套第三方视频(如 YouTube、腾讯视频)怎么办
iframe 本身只是个窗口,里面的内容和父页面跨域隔离。你看到的 src 是嵌入页地址,不是视频文件地址,不能直接下载。
- 先从源码或 Elements 面板里提取
<iframe src="https://v.qq.com/xxx"></iframe>中的链接 - 把这个链接新开标签页打开,进入实际播放页
- 再重复前面两步:查它的
video标签,或开 Network 面板抓媒体请求 - YouTube 类平台通常禁用直接下载,但可用
youtube-dl或yt-dlp命令行工具(注意合规性);国内平台如腾讯、爱奇艺大多有 DRM 或分片加密,普通抓包无效
提取到的是 .m3u8 怎么办
m3u8 不是视频文件,是播放列表文本,里面记录了一串 .ts 分片地址。想合成完整视频,必须下载所有分片再合并。
- 复制 m3u8 地址,在终端运行:
ffmpeg -i "URL" -c copy output.mp4(适用于无加密) - 如果报错
Invalid data found when processing input,说明 m3u8 被 AES-128 加密,需额外提供 key URL 和 IV,这时得用N_m3u8DL-CLI这类专用工具 - 不要试图用浏览器“另存为”m3u8 文件——它只是几行文本,保存下来也播不了
- 部分网站会把 key 和 ts 地址混淆在 JS 里,此时需要人工逆向或写 Puppeteer 脚本模拟请求流程
真正麻烦的从来不是“怎么找”,而是“找着了却下不了”。Token 过期、Referer 校验、AES 加密、动态密钥、JS 混淆……这些才是挡在“保存”前面的实际门槛。别迷信一键工具,先确认你拿到的是不是真·直链。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











