NiceLeeのBlog 用爱发电 bilibili~

Java 爬虫练习-bilibili视频下载 索引

2019-03-02
nIceLee

阅读:


B站视频下载至此已经没啥好拓展的了,即使将来变更似乎也没啥好特别记录的(๑•̀ㅂ•́)و✧
下面来回顾一下,每篇当时是怎么想的,都具体干了些什么,鱼渔兼得。

bilibili视频下载 补充

时隔多年,下面有些做法不再有效,这里做一个思路补充。
放在前面是想让知道有这么回事,建议最后再看。

bilibili视频下载 (一)

有了下载B站视频这个想法,先从PC端网页开始入手,结果看见了一大串m4s视频流请求,试着下载后也打不开,瞬间就虚了。。。
于是换个思路,想从移动端Web入手,整出来了mp4链接,可用,实现后熟练度+1

  • 收获
    注意到了HTTP请求的UA头部的巨大作用(当时正在同步理解HTTP协议,有点相互促进的意思)
  • 成果
    可以下载移动端渣画质mp4视频

bilibili视频下载 (二)

还是要回到PC端来。
这里注意到B站有两种在线播放方式(毕竟存在不支持h5的老式浏览器?),一种h5播放器,一种flash播放器。 h5源暂时没有想法,切换到flash播放器,发现只有一个.flv请求,美滋滋哦,实现后熟练度+1

  • 收获
    学会从现实状况出发,思考问题
  • 成果
    可以下载PC端普通画质flv视频

bilibili视频下载 (三)

(二)中flv链接的提取方式是直接爬的html网页的,这里有个问题,就是只能提取出默认访问的清晰度,没法根据需要自己调整,或者又要整一下cookies。
这里采取了一个技巧,如何从加了加密混淆的繁琐缭乱的js中提取出api链接?
以获取720p分辨率视频来说,我先改为480p,刷新页面(防止浏览器已有720p数据),将调试面板的请求全部清空。
将视频清晰度调为720p,再看看最新的几个请求,或多或少会有收获。
当然,在当前这个问题上,收获巨大!!熟练度+10086

  • 收获
    从用户体验与基本逻辑出发,解决问题
  • 成果
    可以根据需要下载PC端任意画质flv视频(部分高清需要cookies)

bilibili视频下载 (四)

其实我想说经过(三)之后,我已经升仙了,有自信和任何人五五开( σ’ω’)σ
选取了一种较为容易实现的扫码方法,实现了登录获取cookies。熟练度+1

  • 收获
    进一步学会从用户体验与基本逻辑出发,思考问题
  • 成果
    实现扫码登录功能,可获取cookies用于下载超高清视频

bilibili视频下载 (五)

  • 收获
    熟练度+1
  • 成果
    实现断点续传下载功能,可在上一次的基础上继续下载

bilibili视频下载 (六)

最开始就是先从PC端网页h5播放源开始入手,虽然绕了一圈才解决了问题,但技能熟练度已经上升了这么多,有始有终,是时候证明自己了(o゚v゚)ノ

  • 收获
    对流媒体播放有所了解
  • 成果
    可以下载h5视频源,并使用ffmpeg合成mp4

源代码


内容
隐藏