NicoNico Timeshift 下载

前些日子 Nico 又升级了一下他们的防下载机制。总的来说 Nico 就是希望时光机=延时直播,下载什么的一定要防好。

这次的更新主要是对可以下载的块进行限制,在之前的解决方案中,通过 M3U8 文件中的信息直接计算出全部文件列表进行遍历下载就可以把全部视频分块下载过来。

这个方法已经失效了,不是我不想披露而是前段时间有点忙…现在来说明一下

图中这里框起来的地方可以获取到视频总长度,而视频块文件名就是时间,后三位毫秒不变(除了第一块永远叫 0.ts)。上个版本需要做 left pad 这个版本似乎已经不需要了。

而这个版本最大的限制在于,只能下载“你正处在的时间”的前后大概 -1+4 个块。我来解释下什么叫做“你正处在的时间”。

开始播放的时候(包括拖动进度条),会带上 token 请求一个 master.m3u8,Nico 会为你这个 token 设定开始时间为当前进度条时间,然后以一倍时间流速开始下发块,后面再用这个 token 去请求视频块列表的时候就是正好播放到的地方了。

于是我们的方案就是模拟一个十分聒噪的人不断拉扯进度条。“激活”我们想要下载的块。

经过尝试,我们只需要请求 master.m3u8 并带上 start 参数就可以激活后面大概 4 个块,这时候进行下载就可以了。不断循环此过程以自动化下载全视频,难度不高。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注