科普向:下载pc端爱奇艺视频的思路

这是2018.5.27的文章,爱奇艺的视频未来接口可能会变动,所以本文仅供参考,且不包含代码实现

工具

带开发者工具的浏览器一只,本人使用超级厉害的Chrome


前言

一般的视频网站,比如哔哩哔哩,优酷,网页视频播放器的流程是先进行一次XHR请求获取视频分段列表,然后依次加载这些内容,比如哔哩哔哩的是这样的:

图1

优酷的是这样的

图2

但是爱奇艺的有点不一样,你在XHR栏目无法抓取任何相关的数据,或者说,只能抓到请求一条分段的链接,如下…

图3


原理

就拿 DARLING in the FRANXX第一集举例

打开开发者工具,刷新页面,选择筛选JS文件的选项

图4

把所以的js文件点一遍,找到结果类似与图中的js文件,查看其详细信息,看到链接了没有?就在”fs”中

图5

这时候我们在看XHR中输出的信息

图6

会发现出现了两个和第一个分段有关的视频,第一个请求获取了第二个请求的链接,而第二个则是真正的分段视频链接,而第一个链接比js文件里的那个链接的请求参数多了一些,仔细观察比对,多出来的参数值要么是固定的,要么是从Cookie中来的,要么就从那个请求JS链接里的参数值,这些都是会改变的所以在这里就不做分析了


流程总结

  • 发起请求获取一个包含分段链接请求地址json数据的js文件

  • 对分段链接请求地址添加一些参数,发送出去以获得真正的分段视频链接

  • 通过分段视频链接获取分段视频


编写下载程序的思路

和之前我写的下载b站视频思路的文章里差不多,记得把http请求的header加全了按流程走一遍基本上就不会有什么问题

我写了一个程序放到github上了,把那个请求js文件的链接,网页链接,保存路径写全了就可以下了,但是本地要有bash环境和ffmpeg

图7

图8

注意,对于拼接请求下载地址的链接,存在失效时间,貌似是在两三分钟后会失效,如果不注意的话会导致分段丢失