整体思路是使用安卓手机端的软件抓包,然后将地址导入到电脑端进行下载,不过因为packet capture抓包的话,会导致APP本地断网,所以这里让手机连接着电脑的代理。

1.下载packetcapture,使用这个软件进行抓包。这个软件随便百度一下都可以下载的到。

2.打开这个软件后,选择第一个开始三角,新建抓包工程

android udp 抓包 安卓抓包packet capture_抓包

3.然后搜索自己要进行抓包的软件

android udp 抓包 安卓抓包packet capture_抓包_02

之后开始抓包。

点开抓包项目后,可以看到里面有很多个抓到的包,选择哪一个呢?很简单,直播源的包有两个特征:一是比较大,二是还在不断变大。

android udp 抓包 安卓抓包packet capture_抓包_03

点开这个包,可以看到下面的内容,第一部分为请求体,第二部分为回应头,第三部分为数据。

android udp 抓包 安卓抓包packet capture_抓包_04

我们需要的直播地址就藏在第一部分的请求头里面,这个地址已经是很明显的了:host的主机值,加上get的地址,就是我们要找到请求地址:

cn-hbwh2-cmcc-live-02.bilivideo.com/live-bvc/761854/live_456664753_32691722_1500.flv?cdn=cn-gotcha01&expires=1582267450&len=0&oi=3747142830&pt=android&qn=150&trid=37ae96aa32124972bf975a1ecc566dc9&sigparams=cdn,expires,len,oi,pt,qn,trid&sign=86b8c507ee6a4ac9bffc4e7e56fec69a&ptype=0

红色的部分是host的主机值,绿色的部分是get值,将这个地址导入到浏览器或者IDM里面就可以下载了。

可以看到,这个文件是flv格式的直播流文件。

android udp 抓包 安卓抓包packet capture_缓存文件_05

点击下载之后,可以看到IDM已经非常欢快地蹦跶起来了,但是文件大小那里却还是未知,很好理解,因为不知道视频到底什么时候停嘛。

android udp 抓包 安卓抓包packet capture_搜索_06

现在是为了验证,所以直接就不一直下载了,点击暂停(或者不暂停也是可以的)。

但是这个时候,我们去设置的对应的下载目录下面找我们下载的直播视频发现还是找不到的,那么怎么办呢?不要着急,可以肯定的一点是IDM确实是下载了一部分视频,只不过IDM认为还没有下载完毕,所以就只是将他们放到了缓存区。

这个就是我们下载的视频的缓存区。

android udp 抓包 安卓抓包packet capture_抓包_07

过去看看

android udp 抓包 安卓抓包packet capture_缓存文件_08

里面有很多个文件,好像是没有我们需要的文件,那么文件就一定是在上面的那几个文件夹里面。

具体怎么找,这里就不做具体介绍了,可以一个一个手工找,也可以使用everything搜索,反正一定是可以找到的。

这个是我找到的缓存文件

android udp 抓包 安卓抓包packet capture_缓存文件_09

注意这个缓存文件,这个时候是不能直接播放的,需要更改一下后缀名,因为源文件是flv格式的,所以这里也改成flv,

android udp 抓包 安卓抓包packet capture_android udp 抓包_10

可以看到已经可以正常播放了。

android udp 抓包 安卓抓包packet capture_搜索_11

但如果不想下载,不想搞这么复杂,就只是想在电脑上看直播,其实也是可以的,直接点开potplayer之类的播放器,选择打开链接

android udp 抓包 安卓抓包packet capture_抓包_12

将之前自己抓取、组合好的链接放进去。

android udp 抓包 安卓抓包packet capture_抓包_13

此时,potplayer就可以播放实时的直播视频了,可以看到potplayer的播放进度条已经是没有了,因为直播了嘛~

android udp 抓包 安卓抓包packet capture_搜索_14

若是pocket capture点击开始抓包之后,本地APP上不了网该如何处理?