使用Fiddler抓包下载微信小程序内的视频

此处应用为下载广场舞:)

Posted by Reed on March 17, 2020

前言

最近探望家中长辈时,接到一个看似简单又不那么简单的任务:下载微信内的广场舞视频!

平时会在微信群(老年广场舞)里获取到一些还不错的广场舞视频,也有一些锻炼身体的教学视频,无奈于手机屏幕太小了,因此播放设备是一台专用的视频播放器,如何将微信内获取的视频下载到U盘然后存储到播放器内就成了他们的一个大问题。

分而治之

根据我的观察,视频一般有这几种情况:

  • 直接转发的视频。这种比较简单,直接保存到设备然后复制即可。
  • 转发内容为一个简单的网页,打开就会自动播放视频。这种也不复杂,电脑微信走起,浏览器打开网页,检查元素,下载视频即可。
  • 转发内容为小程序分享,打开小程序后跳转到程序内的播放界面。这里的解决方案就稍显复杂了,也就是本文的重点。

    准备阶段

    上述最后一种情况,就需要通过抓包获取到视频的播放地址,然后进行下载操作。

使用到的工具如下:

PC端:
手机端(安卓):

因为7.x版本微信对SSL做了安全校验,我们需要通过一些手段来解决这个问题。 1、安装旧版微信。(不推荐,这样会影响到日常使用微信。) 2、使用VirtualXposed,在其中安装旧版微信,或安装新版微信+JustTrustMe模块。(推荐)

方案1则跳过如下内容,请直接看开始抓包

工具已经准备好了,接下来就开始进行设置,抓包是采用了中间人攻击原理,因此需要先在PC端开提供一个代理端口并启用HTTPS监听。

打开Fiddler软件,Tools->Options,设置为如下:

经过一番操作,Fiddler已开启HTTPS解析,并监听了本机的8080端口。 接下来将安卓手机与PC处于同一网络,在手机的Wifi设置里开启代理,主机为PC的局域网IP地址,端口则是8080,如下图:

然后安装VirtualXposed,接下来安装JustTrustMe微信,记得安装时选择安装到Xposed环境,安装完毕后进入Xposed启用模块,然后重启Xposed。

目前为止皆已就绪,现在开始抓包!

开始抓包

Fiddler主界面可查看到代理的所有请求信息(包括HTTPS请求),现在手机打开微信,打开转发的小程序视频,开始播放后可在Fiddler界面查看到相关的请求,视频请求一般是有视频图标或者是下载图标,如下: 这时我们右击该次请求,复制url即可进行下载操作。

有的时候会发现视频请求类型为m3u8,每一次请求获取的是视频块,仔细分析视频块之前的请求,就会发现有一个.m3u8结尾的请求,这个就是其视频信息,里面包含了视频分块的详情。

我就遇到了这样的情况,我采用了M3U8-Downloader这款软件,在其界面输入xx.m3u8链接,即可自动下载获取完整的视频!如下图:

害,这下年纪大的长辈终于知道了:学电脑专业的除了会修电脑,还会下视频。:)