Morse's Site
754 字
4 分钟
如何突破被限制下载的钉钉视频回放
2021-03-30

我所在的钉钉群直播的回放功能被群主禁用了, 每次只能在线观看, 比较麻烦, 另外为了留存备份. 还是想自己下载下来. 那么有什么办法呢?

我的思路: 直播回放就是在线视频, 在线视频那必然有视频地址. 是否可以通过在线视频地址下载呢?

第一步: 抓包#

通过charles解析本地网络请求. 发现钉钉都是基于https. 所以需要配置charles证书, 其原理等同中间人攻击).

图片1

安装好证书后, 需要在系统配置中添加证书信任.

图片2

设置证书后, 配置charlesssl解析域名: proxy -> SSL Proxying Settings…

图片3

因为钉钉请求域名有好几个, 我这里是发现一个添加一个. 最终发现是视频是通过 alicdn.com下载的.

第二步: 下载视频流#

从第一步中发现视频流的地址, 类似https://dtliving-pre.alicdn.com/live_hp/xxx_merge.m3u8. m3u8是不是非常熟悉.

m3u8 文件实质是一个播放列表(playlist). 当 m3u8 文件作为媒体播放列表(Meida Playlist)时,其内部信息记录的是一系列媒体片段资源,顺序播放该片段资源,即可完整展示多媒体资源。内容如下:

图片4

那么就可以根据m3u8文件下载我想要的视频了. 这里使用了ffmpeg工具对流进行下载并处理成mp4格式.

FFmpeg 是视频处理最常用的开源软件。它功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),也是许多音频和视频格式的标准编码/解码实现。

macos下通过以下命令进行安装:

brew install ffmpeg

安装完毕后. 我从google上找到一段Poh Peng Ric Wang写的shell脚本. 可以非常方便的下载视频流并转换为mp4格式. 如下:

#!/bin/sh
# Author : Wang Poh Peng
# Description : Use FFMPEG to download videos into mkv or mp4 format
RED='\033[1;31m'
NC='\033[0m' # No Color
GREEN='\033[0;32m'
CYAN='\033[0;36m'
command -v ffmpeg >/dev/null 2>&1 || { echo >&2 "${RED}ffmpeg is required for the script to download video stream. Run \`brew install ffmpeg\` if you are on Homebrew"; exit 1; }
echo "${GREEN}Enter m3u8 file url endpoint:${NC}"
read ENDPOINT
echo "${GREEN}Enter video file name to be saved as including extension eg. video1.mp4${NC}"
read FILENAME
ffmpeg -user_agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/601.7.8 (KHTML, like Gecko) Version/9.1.3 Safari/537.86.7" -i $ENDPOINT -c copy $FILENAME
echo "${CYAN}The video file is saved at $PWD/$FILENAME"
echo "${NC} Resetting Terminal Font Color..."

脚本内容也很简单, 就是执行脚本后, 第一步: 让你输入m3u8文件地址, 第二步让你输入保存文件名称. 然后就是调用ffmpeg命令对视频流进行下载并做视频转换.

总结#

以上就是突破被限制下载的钉钉直播回放的全部内容. 第一步就是抓包, 通过抓包获取视频流文件下载地址. 第二步就是通过ffmpeg工具下载视频流并转换为mp4.

引用#

#01 Blogs/blog#

如何突破被限制下载的钉钉视频回放
https://fuwari.vercel.app/posts/blogs/down-dingtalk-live/
作者
Morse Hsiao
发布于
2021-03-30
许可协议
CC BY-NC-SA 4.0