上周四晚上十一点四十,我在整理一块 2019 年买的 2TB 移动硬盘。
目的很简单。找一张旧照片。
结果照片没找到,翻出一个从来没注意过的文件夹,叫 temp_m3u8。里面有 412 个 .m3u8 文件,创建时间集中在 2020 年 3 月到 2021 年 8 月之间。都是纯文本。每行一条 #EXTINF,后面跟一个 .ts 分片地址。
这不是视频。这是别人当时看视频的痕迹。
我本来打算全部删掉。
后来没删。我先用 wc -l 数了一遍行数,412 个文件加起来是 186,377 行。平均每个文件 452 行。最短的一个只有 3 行,最长的一个 1189 行。我把那个 3 行的打开看了。
文件名是 8f2c1a.m3u8。三行内容,第一个分片的时间戳是 2021 年 4 月 17 日 02:14:58,第二个是 02:14:59,第三个是 02:15:00。然后没了。
三秒钟的播放记录。
我不知道这个人为什么只看了三秒就关掉了。可能是点错了,可能是加载失败,可能是突然有人进来了。
然后是对比。
我写了二十行 Python,把 412 个文件的第一个时间戳全部提出来,按文件修改时间排序。结果发现,其中 9 个文件的时间戳和文件修改时间对不上。差得不多,通常几分钟,但差得整齐。
后来我想明白了。这些文件是被程序抓下来的,抓取脚本在下载分片之后,会重新写一遍文件头。所以第一个时间戳对应的是原始播放时间,文件修改时间对应的是抓取时间。中间那几分钟,是脚本在跑。
但 9 个文件的差距不是几分钟,是整整 37 天。
2020 年 6 月 11 日下载的,里面第一个分片的时间戳是 2020 年 7 月 18 日。
只有一种解释。文件头被人手工改过。
下午我打电话给老陈。他做网络运维,2018 年就在弄这些东西。
我问他:m3u8 文件的时间戳能被改吗。
他说能。他说他 2019 年在一台 Synology 上见过类似的东西,有人把整个播放列表的时间轴往前挪,为了让缓存服务器认为是新内容,重新走一遍 CDN,拿到没被限速的线路。
他说了一句话我记下来了。
「不是所有的文件都是为了被播放而存在的。有些是为了骗过某台机器。」
我没打算写一篇技术帖。
我想说的是另一件事。
这些文件里的每一条 #EXTINF,对应的都是一个人真实看了的十秒钟。412 个文件,十八万多行,就是一千八百多个小时的播放时间。有人在一个晚上看了四集,有人在某个凌晨两点点开又关掉。有人缓存了整部剧但从来不删,有人只看三秒。
现在的播放器都不这么干了。2023 年以后,大部分站点的播放列表在内存里生成,播放完就没了。硬盘里不留痕迹。你昨天看了什么,明天就不存在了。
所以这块硬盘是个意外。
它保存了一份完整的、无意中留下的、2020 到 2021 年的观看档案。只是一个临时文件夹,一个忘了清空的地方。
我有个观点,可能不太讨喜。
这些被随手丢掉的缓存文件,比大部分人认真写的日记更诚实。
日记会修饰。播放记录不会。它在 02:14:58 打开,在 02:15:00 关掉。三秒就是一秒不差的三秒。
我现在把这个文件夹留着了。改名叫 archive_2020,放在原来的位置。412 个文件,一个都没动。
以后可能会写它们的分布。比如 2020 年 3 月有 71 个文件,2021 年 8 月只有 6 个,中间发生了什么,值得单独说一次。
也可能不写。
先放着。