提示

返回博客列表

视频只缓存了一半、没下完?从浏览器缓存里把它救回来

视频只缓存了一半、没下完?从浏览器缓存里把它救回来

有时候视频在网页里能播,但网站就是不给下载按钮,或者下到 99% 断了。这时候很多人不知道:浏览器其实已经把一大半数据悄悄存进缓存了。只要你没关页面、没清缓存,就有机会从缓存里把视频拼回来。这篇讲讲实操,以及一些"救不回来"的情况。

缓存到底存了啥

Chrome/Edge 的缓存一般在:

  • Windows:%LOCALAPPDATA%\Google\Chrome\User Data\Default\Cache\Cache_Data
  • macOS:~/Library/Caches/Google/Chrome/Default/Cache/Cache_Data

现代 Chrome 用的是单文件 Cache_Data 目录里一堆小文件(旧版是一大个 index + data_*)。这些文件大部分是 protobuf 头 + 原始响应体 拼在一起,响应体可能就是分段的 mp4/m4s 或者 f4f

第一步:找到目标文件

chrome-cache-parser 这类工具把缓存导出成可读文件:

npx chrome-cache-parser "C:\Users\you\AppData\Local\Google\Chrome\User Data\Default\Cache\Cache_Data" -o ./out

导出来后按大小和时间排序,视频分片通常体积大、数量多。你会看到一堆 .mp4/.m4s 或者不带后缀但其实是二进制的文件。

第二步:拼起来

如果是普通的渐进式 mp4,按顺序 cat 就行:

cat seg1.mp4 seg2.mp4 seg3.mp4 > recovered.mp4

如果是 m4s(fMP4 分片),得先有 init.mp4(初始化分片,通常也是其中一个缓存文件),再合并:

cat init.mp4 seg1.m4s seg2.m4s seg3.m4s > recovered.mp4

合并完用 ffmpeg 修一下:

ffmpeg -i recovered.mp4 -c copy fixed.mp4

-c copy 能重新排一遍 moov 原子,修复"能播放但进度条不对"的问题。

救不回来的情况

情况 原因
缓存是 EME 加密的 受 DRM 保护的资源是密文,没有密钥拼了也播不了
已经关了页面并清了缓存 文件被覆盖或删除
分片不完整 只缓存到你看到的那一秒,后面根本没下载

常见问题

Q:会不会侵权? 自己付过费、缓存的是本就能看的内容,救回来看离线版一般没问题;拿去二传就要掂量了。

Q:Firefox 缓存好救吗? Firefox 的 cache2 目录结构不同,可以用 cache2 解析工具,思路类似。

Q:有没有一键工具? 有,像 VideoCacheView 这类能直接扫描浏览器缓存列出可恢复的视频,省得手动找。

想亲手试试?用 VidDown 一键解析下载

粘贴视频链接即可解析,多平台支持、网页端即用;下载桌面客户端解锁海外平台本地解析,开通会员更享不限次下载。

顶部