分析短视频 App 的视频流时,最常遇到的需求就是找到视频播放地址。抖音和快手这类应用使用 HTTPS 传输,视频流通常通过 HLS 协议分片传输,m3u8 索引文件包含了视频片段的地址列表。找到 m3u8 地址是分析视频流的第一步。
代理抓包配置
用 SniffMaster 或 Charles 配好代理后,抖音和快手的视频请求会在列表中显示。两种 App 都做了 HTTPS 加密,需要先安装并信任抓包工具的 CA 证书。iOS 上证书安装后记得在"设置 → 通用 → 关于本机 → 证书信任设置"里手动开启信任开关。
打开 App 后刷视频,抓包工具里请求量会很大。抖音和快手的域名不少,建议用过滤功能缩小范围。抖音的 m3u8 地址通常出现在包含 vod 或 video 的域名下,快手的 m3u8 域名特征类似。在过滤条件里输入 m3u8 可以直接筛选出索引文件请求。
遇到 SSL Pinning 时的方案
抖音和快手都做了 SSL Pinning——即使用代理配了证书,App 也不会信任抓包工具的证书,HTTPS 请求会失败。这是短视频 App 保护的常见手段。
SniffMaster 的暴力抓包模式可以解决这个问题。iOS 设备用 USB 线连上电脑,选择 HTTPS 暴力抓包模式。这个模式不经过代理通道,不走 CA 证书信任链,SSL Pinning 对它不起作用。设备连上后开始抓包,在 App 里刷视频,暴力抓包模式下 HTTPS 请求全部以明文显示。
怎么从抓包结果里找 m3u8
找到视频播放请求后,m3u8 地址有几个特征可以快速定位。在抓包结果里搜索 .m3u8 关键字,匹配到的请求就是 HLS 索引文件。响应内容以 #EXTM3U 开头,里面包含了视频分片 .ts 文件的地址列表。如果 m3u8 地址里包含 ? 带参数,后面的 token 或签名有时效性,过期后地址会失效。
如果搜索结果为空,可能是因为视频用的是非 HLS 的传输方式。部分短视频场景下 App 使用 MP4 直链或自定义流媒体协议。这时候在抓包结果里找大文件传输的响应,排序后看最大的几个响应,通常是视频内容。
只抓指定 App 减少干扰
SniffMaster 的暴力抓包和数据流抓包都支持只抓指定 App 的流量。在开始抓包前点击"选择 App",勾选目标应用如抖音或快手。这样列表里只显示该应用的网络请求,不会被系统服务和后台推送的数据干扰。
使用数据流抓包模式
如果代理抓包和暴力抓包都没找到 m3u8,可以换数据流抓包模式。这个模式捕获所有 TCP/UDP 数据,能从传输层看到完整的视频流信息。数据流抓包模式下能看到每个连接的目的地址和端口,结合过滤条件定位视频 CDN 域名。抓到后可以导出 pcap 格式,用 Wireshark 做进一步分析。