欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

下载B站的视频

程序员文章站 2024-03-22 18:12:22
...

大部分up主上传的视频都是可以用you-get进行下载的,但是在下载B站官方的视频就出现问题了,比如我使用you-get下载《日常》的第一集,下载下来了三个文件:

  • 日常:第1话 日常 第一话[00].mp4
  • 日常:第1话 日常 第一话[01].mp4
  • 日常:第1话 日常 第一话.cmt.xml

分别对应视频、音频、弹幕文件,使用pr对音频和视频进行合成的时,视频文件不能正常导入(没有深入了解过,貌似是视频压缩的算法问题?)

所以从另外一种方式来试试,使用fiddler下载。

1、打开fiddler并打开需要下载的网站

https://www.bilibili.com/video/BV1e741187hr
下载B站的视频

2、在一大堆记录中找到音频和视频文件,文件形式类似于:

30280.m4s, Content-type为video/MP4

30112.m4s Content-type为video/MP4

B站把视频音频都分割成小的数据段,所以在记录中能看到相似的记录有很多条,我们每一种选择一个就行。

我们的具体思路就是把每一‘种’文件的请求头里面的范围改大一点,或者改成固定的大小。

3、打开上图中选中的记录,记录信息

  • 1、首先复制Host地址,如上图中选中的upos-hz-mirrorakam……
  • 2、记录下图中Response Headers中的Content-Range数据(13860691,这个数字就是音频或者视频文件的完整大小)
  • 3、打开Request Headers的Raw,复制所有信息。

下载B站的视频
下载B站的视频

4、打开Composer,构造请求

下载B站的视频

  • 1、粘贴从Raw复制的信息,删去第一行。
  • 2、修改Range为3.2中记录的数据。Range:bytes=0-13860691
  • 3、将3.1中host粘贴进去
  • 4、点击Execute
    下载B站的视频

5、保存响应体

完成第四步之后等一会就能看到一个body和Range:bytes一样包,选中它并保存:
下载B站的视频
下载B站的视频

6、重复3-5,把另一个文件也请求并保存到本地

7、使用pr进行拼接(不知道为什么这种情况下是可以合并的)

8、附加

如果视频文件过大,超过了Response Headers单次返回的最大值,我们可以把Range:bytes进行拆分如0-999999999、1000000000-1999999999……等等,然后重复3-5,注意保存的时候搞清楚先后顺序。

把下载好的多个视频段进行拼接,在Ubuntu中可以用(Windows也有相对应的操作,自行了解一下吧):

cat 第二部分>>第一部分
cat 第三部分>>第一部分
……

最后,第一部分就是完整的视频\音频