历史潮流浩浩荡荡,顺之者昌,逆之则亡。——孙中山

下载慕课网视频技术分析

无主题 徐 承恩 75℃

老姐在微信某课堂付费观看视频学习,观后遂萌生将此视频打包下载的念头,随后将此任务交给了我这个程序员弟弟。原本想找个下载软件应付了事奈何几乎没有这样的软件我也只好硬着头皮上,然后便有了下文。

这篇文章没什么技术含量但要具备一定的前端调试技术和耐心,所以呢我们要熟练的运用Chrome浏览器的开发者工具。

目前主流的在线视频播放都是基于HLS(m3u8文件)协议,简单的说我们观看视频的过程中会不间断的去服务器获取ts文件后缀的视频文件从而保持视频的正常播放。

m3u8文件

以上代码是m3u8文件的一个例子。在这个代码中包含了许多ts文件后缀的链接,我们只需将这些链接逐个下载然后合并成一个视频文件就能实现我们的目的。

以上思考看起来视乎非常容易但实现起来往往比较复杂,因为每一家视频平台都有自己的加密和解密逻辑来保护视频版权,所以目前并没有一个万能可下载所有视频平台的软件。

这里我以慕课网为例来演示整个过程。

第一步:获取m3u8文件

打开谷歌浏览器的开发者工具找到network选项卡,选中XHR子选项卡然后随意找到一个视频进行播放并暗中观察如下图所示就是我们要找的m3u8文件。

请求https://www.imooc.com/course/playlist/7403?t=m3u8&_id=58538e6bb3fee3a05d8b5640&cdn=aliyun1得的响应代码

json文件中的info对应的value就是我们所需要的m3u8文件。

第二步:寻找解密函数

已知m3u8文件请求地址我们只需拦截断点调试就可以追踪出请求从哪里发起进而找到解密函数

开发者工具找到Sources选项卡,添加一个XHR请求断点下如图

刷新页面后直接进入断点调试模式跟踪代码执行情况如图

这里我已经找到了解密函数destm_1.default()

解密函数代码

试验

控制台输出

 

转载请注明:思码老徐 » 下载慕课网视频技术分析

喜欢 (5)