下载钉钉禁止下载的直播回放

钉钉有些群的直播回放会设置为不可下载,如果我们要下载的话,就需要使用秘密武器-抓包

img

(其实我本来是想要下载个直播回放的,可是一不小心整了个脚本出来…)

Github地址(开源)(Python):https://github.com/lilac-milena/Dingtalk-playback-download


0.更新日志

2023/7/20 版本更新

  • 移除了对 wget 的依赖

  • 增加了对手机客户端抓包的支持

2022/7/2 版本更新

  • 适配linux系统

  • 自动检测下载错误的ts片段并重新下载

  • 优化错误日至的写出

  • 优化逻辑


1.软件及依赖环境

1.1 抓包软件

这里我提供一个Fiddler的安装包,如果想要最新版可以自行去官网下载

安装包:https://raw.githubusercontent.com/lilac-milena/Dingtalk-playback-download/main/exes/FiddlerSetup.exe

安装完Fiddler之后可以在”开始”菜单中找到,我们需要打开Fiddler

点击Fiddler顶栏中的Tools,再点击Options

img

点击HTTPS,并将Decrypt HTTPS traffic打勾

img

之后会提示安装证书,点同意就好

1.2 配置ffmpeg

该脚本使用ffmpeg合并ts,所以需要安装这个玩意

这里就贴个教程,不浪费篇幅了

Windows10安装 ffmpeg 教程 https://zhuanlan.zhihu.com/p/118362010

Linux 安装 ffmpeg 教程 https://cloud.tencent.com/developer/article/1711770


2 抓取及准备

这一步分为两个分支,可以根据个人的要求选择使用什么平台的客户端进行抓包

手机客户端抓包不需要切换钉钉版本,可以直接抓取,比较方便;而 Windows 客户端抓取较稳定,受钉钉 API 改版的影响小。

2C.A 更换钉钉版本

最新版本的钉钉做了非常多的修改,导致无法获取完整的m3u8文件,也就造成了回放无法下载

2C.A.1 下载老版本

这个还是比较简单的,我使用的是 5.1.39.10 版本

官方下载链接:https://dtapp-pub.dingtalk.com/dingtalk-desktop/win_installer/Release/DingTalk_v5.1.39.10.exe

2C.A.2 使用老版本

钉钉对老版本的使用做出了限制,但是可以通过修改本地文件的方法跳过,具体教程见:

特别注意:安装老版本后第一时间不要启动钉钉,请打开老版本钉钉所在位置并删除安装目录的 update.exe 文件以防止自动更新

2C.B 设置代理

修改完成后登录的时候要注意一下设置代理连接,这一步是让钉钉与Fiddler建立连接

2C.B.1 点击右上角的小箭头

img

2C.B.2 照如下填写好后点击左下角的”测试”

img

如果成功,则点击保存,如果失败,请检查是否打开了Fiddler

如果操作后聊天乱码,请仔细看一下上面的教程,最后的步骤如果不做就会导致乱码


3.抓包

3.1 抓取

这么多记录,我们需要精确定位到我们需要的,其实很容易,首先,我们先要使用ctrl+a全选,再按delete删除全部记录,这样做是为了防止其他记录干扰我们,接下来,我们随意找一个直播回放,并打开,等待加载完毕后(不是等视频播放完,而是只要出现了视频画面并开始播放就可以关掉了)再关掉,这时看向Fiddler,就会发现Fiddler中出现了很多钉钉的记录

img

然后,我们使用ctrl+f进行搜索,搜索”m3u8”这个关键字

img

就会发现有很多记录被标黄了,我们现在需要从中找到钉钉的记录,大概长这样

img

这条记录前面是一个纸的图标,然后url里面会有”dingtalk.com”这个字串,一般同时符合这两点就是我们要找的数据

3.2 获取下载域名

然后右键这条数据,选择Copy→Just Url

img

现在,我们复制了一条URL,它的格式是这样的:

1
2
3
4
5
格式:
下载域名/直播号_merge.m3u8?app_type=客户端类型&cid=CID&token=Tokey&token2=Tokey2&version=钉钉版本

例子:
https://dtliving-sz.dingtalk.com/live_hp/************_merge.m3u8?app_type=win&auth_key=********************&cid=*******************&token=****************&token2=******************&version=5.1.39-Release.10

请不要访问这个url,因为它的生命周期只有一次,已经被钉钉访问过了,所以我们再去访问会返回403错误

那为什么要复制这个url呢,因为我们需要下载域名,钉钉会每隔一段时间更换一次视频的下载域名(很奇怪,应该是为了防止视频下载),这可能导致你的直播回放的下载域名都是不一样的,所以我们需要这个域名才能下载

下载域名就是如下部分:

img

最后不要忘记加/

3.3 获取m3u8内容

前面说过,抓包获取的m3u8链接不能直接打开,所以我们需要从请求记录中找到m3u8文件的内容

还是找到m3u8的那条记录

按照下面这张图操作:

img

然后我们需要复制右下方那个文本框中的内容

这就是m3u8文件的内容,保存备用


4.下载

现在,就可以去Github下载我的Python脚本了~

脚本地址:https://github.com/lilac-milena/Dingtalk-playback-download/blob/main/ding.py

运行此脚本请自备Python环境

首先,把我们下载的ding.py文件放在一个文件夹中(最好是空文件夹)

然后在路径栏输入cmd,打开cmd

img

4.1 在cmd或终端中输入 python ding.py 运行脚本

如您使用linux运行脚本,请使用 python3 ding.py 运行

img

4.2.根据之前的下载域名选择下载通道

脚本内置了3个下载域名,请根据上面获取到的域名选择,如果都不是,请选择自定义

img

以下内容由2022/7/2更新

4.3.写入m3u8

打开脚本运行目录下的m3u8.txt文件

img

写入m3u8内容

img

写入完毕后,在脚本中输入y并按回车

4.4.选择m3u8来源

不同来源的m3u8文件需要使用不同的格式化方法,如m3u8通过windows端的钉钉抓包而来,就选择Windows端群直播

img

我的m3u8来源于ubuntu客户端,所以我就需要选择3(Linux端群直播)

4.5.下载&合并

下载:

下载ts分段

img

合并:

将ts分段合并为mp4

img


下载,合并完成后,python脚本运行目录会出现 output.mp4 这个文件,这就是下载完成的视频

img

img

文件/文件夹名 作用
tss(文件夹) 存放ts缓存文件(可在下载完成后删除)
tss.txt ts文件列表(可在下载完成后删除)
m3u8.txt m3u8文件,用户需将m3u8文件写入至此文件(可在下载完成后删除)
output.mp4 最终下载的视频文件
err.log 错误日至(如有错误则会生成)

下载钉钉禁止下载的直播回放

https://blog.muna.uk/archives/dingtalk-downloads.html

Author

芙樱竹

Posted on

2022-04-01

Updated on

2024-03-03

Licensed under

Comments

若您使用我站的"评论"功能发表观点,则代表您已阅读并同意遵守 ICUA协议隐私政策