0%

记一次短书视频下载

互联网已经进入了知识付费时代。随之出现像小鹅通,短书等这样的服务商,让企业或者个人更容易开展线上教育服务。而且这类服务一般都嵌套在微信公众号中,通过公众号内嵌的网页进行浏览和学习。

这篇文章主要记录如何保存短书平台的会员视频。因为我已经购买了会员,可以浏览会员课程,只是每次都要在微信中打开,很不不方便,所以把课程视频都下载到了本地,随时随地观看。这篇文章并不是破解会员视频下载。

抓包

因为是在微信公众号里的网页,首先想到的是抓包。我使用的是 Charles。 抓包首先需要安装证书,电脑的安装这里就不赘述了,因为抓包的手机还没有安装证书,这里记录一下华为手机如何安装证书文件。

  • 首先需要在移动设备上安装证书文件。

移动端选择

  • 根据提示设置好 WIFI 代理,然后打开 chls.pro/ssl 页面获取证书。

提示

  • 设置手机 WIFI 代理。

手机设置代理 都设置好之后,打开 chls.pro/ssl,下载证书文件(记住保存的位置)。打开设置,在搜索栏搜索加密与凭据加密与凭据 选择从存储设备安装,找到你刚才下载好的 pem 文件,根据提示输入锁屏密码安装即可。 安装好以后查看 Charles,如果请求 https 网页仍然显示 unknown,还需要配置 SSL Proxying。 SSL Proxying Settings 我们这里粗略把所有 SSL 请求都包含。 包含全部请求 这样配置好之后应该就能展示数据了。 抓包数据

分析

在众多接口中,找到了对应视频路径。抓包找到接口很简单,这里就不占用篇幅讲了。没有任何加密,只要在视频所在页面刷新请求,就能找到接口数据。 视频链接 我们发现这个链接是一个 m3u8 格式的链接。

m3u8

上文中我们获取到了视频链接,但是在浏览器中打开后,下载了一个后缀为 m3u8 的文件。

M3U 是一种播放多媒体列表的档案格式,它的设计初衷是为了播放音频文件,比如 MP3,但是越来越多的软件现在用来播放视频文件列表,M3U 也可以指定在线流媒体音频源。很多播放器和软件都支持 M3U 文件格式。M3U 文件是一种纯文本文件,可以指定一个或多个多媒体文件的位置,其文件扩展名是 M3U 或者 m3u 。M3U8 是 Unicode 版本的 M3U,用 UTF-8 编码。M3U 和 M3U8 文件都是苹果公司使用的 HTTP Live Streaming 格式的基础,这种格式可以在 iPhone 和 Macbook 等设备播放。(维基百科)

这样就好理解了,m3u8 文件其实是一个文本文件。 m3u8 文件 打开之后发现其实是很多 ts 视频链接。链接的参数标注了 ts 视频属于整个视频的某一位置。 这样就好解决了。解析 m3u8 文件,分别下载每个 ts 文件,然后再合并。为了方便,这里用到了 FFmpeg。 (其实这份 m3u8 文件非常睿智。我们只需要将其中一个 ts 链接对应的参数删除,下载下来的就是完整的 ts 视频文件了。)

FFmpeg

FFmpeg 是一个强大的视频处理开源软件,完整的跨平台解决方案,用于记录,转换和流传输音频和视频。功能非常强大,但我们这里只用它下载 m3u8 文件的视频,并且导出到 mp4 格式。

1
ffmpeg -i https://vod.duanshu.com/e4a629253562005/01f061450147451/v.f22311.m3u8\?t\=5edcc881\&us\=cidpmpps\&sign\=e9b9144a5 test.mp4

只需一行简单的命令,FFmpeg 就可以快速把视频下载到本地,非常方便。 这篇文章,其实抓包和爬虫的部分很少,主要是记录如何在华为手机上安装证书,和了解 m3u8 文件,以及 FFmpeg 这个强大的工具。