前言

最近(2021.4.14)下载钉钉群的网课,发现以往使用的m3u8下载方式没法正常下载了,经过观察发现是钉钉对m3u8文件进行了改写,导致正常的下载器直接下载出错。

下载m3u8文件后进行编辑可使其符合下载格式。

需要的软件:Fiddler或Charles等抓包软件、m3u8下载器、支持正则表达式替换的文本编辑器

记录两个变量(用于python)

原文

一、m3u8文件的修改方式

经过查找,阿里文档中有提到如何改写文件,链接如下

M3U8标准加密改写

M3U8   介绍: 点击打开

二 、 Fiddler 抓包(其他抓包程序大同小异)

首先,打开Fiddler

保持捕获数据 即可,

也可以点击“任意进程”拖动想要抓包的程序上边,仅对此程序抓包

然后进行 Fiddler 过滤钉钉包,输入 .m3u8进行过滤

设置完成后,点击钉钉直播回放列表中的播放,开始播放视频 进行抓包

在Fiddler的窗口中,寻找

主机是***.**alicdn**.***.com(不是一个确定的值)、 url为 /live_hp/ 开头、 内容类型为 application/ 开头的数据。右键点击复制其URL(为后续的第一个变量)。

三、下载步骤

1.下载m3u8文件(就是第一个变量的那个url)
用抓包软件找到m3u8文件,双击进入,然后选择raw原始数据,复制其内容粘贴到本地的文档id-keys.txt中。

2.修改数据(大部分python自动修改,懒人代码的第17行需要手动修改,后续提及)
m3u8文件内容如下:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-TARGETDURATION:31
#EXTINF:30.000,
1660f37e-27f9-47c2-b127-8bb1ab9f46d1/1.ts?auth_key=1619264900-0-0-acd81051b446c8f67c4145f63b084236
#EXTINF:30.000,
1660f37e-27f9-47c2-b127-8bb1ab9f46d1/2.ts?auth_key=1619264900-0-0-1f3054c64d055e66d185783186f73e33
#EXTINF:4.100,
1660f37e-27f9-47c2-b127-8bb1ab9f46d1/3.ts?auth_key=1619264900-0-0-f6d748622a6f9b14117a0e04e6125175
#EXT-X-ENDLIST#有多少粘贴多少

而url链接为:

https://dtliving-sh.dingtalk.com/live_hp/1660f37e-27f9-47c2-b127-8bb1ab9f46d1_merge.m3u8?app_type=win&auth_key=1619264900-0-0-efc5f367241f273fa2be15a81f4a1815&cid=e8a46f2e2d280cc1edac93216d07fc80&token=de8b4bacfe754db86bd6560654c78434H4SrDtFFr6YNofy0GFbmrBCY-DVpp_k6UVFai0fFLqzNDxoASGiNgXspWGx4FitBB4I0x1PyKHUKKDeRJqhHSg6ues8RLZdGiDPHzb0I4Ds=&token2=b65e3bff05cc0fe88fe44d2f63b56030A3Bd1XMxB_C9hqAAhc7E3bkdedwT2Ri6U76rRVxnfjiotbRTL91iotoVF9IH-CGQYU7olJnAitKcWnbFDa6Zx9a6hMi9lhbIAjFfk9eUDyA&version=6.0.8-Release.3260387 

这里需要修改两个地方,一个是ts文件的相对地址改为绝对地址,一个是去掉?及后面的多余内容。其中ts文件的完整url是:

https://dtliving-sh.dingtalk.com/live_hp/1660f37e-27f9-47c2-b127-8bb1ab9f46d1/1.ts?auth_key=1619264900-0-0-acd81051b446c8f67c4145f63b084236

所以只要使用替换修改(手动修改 懒人代码的第17行 的 1660f37e )(每个人的都不一样)

1660f37e

https://dtliving-sh.dingtalk.com/live_hp/1660f37e

其中的开头url来自之前保存的url链接。

再用正则表达式匹配后面的auth_key内容并删除即可。

python自动完成修改的m3u8文件如下:

https://aliliving-pre.alicdn.com/live_hp/1660f37e-27f9-47c2-b127-8bb1ab9f46d1/1.ts?auth_key=1619264900-0-0-acd81051b446c8f67c4145f63b084236https://aliliving-pre.alicdn.com/live_hp/1660f37e-27f9-47c2-b127-8bb1ab9f46d1/2.ts?auth_key=1619264900-0-0-1f3054c64d055e66d185783186f73e33https://aliliving-pre.alicdn.com/live_hp/1660f37e-27f9-47c2-b127-8bb1ab9f46d1/3.ts?auth_key=1619264900-0-0-f6d748622a6f9b14117a0e04e6125175

更新python懒人一键代码:


import requests
import os
import re
import time
from natsort import natsorted
id_keys = []
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 dingtalk-win/1.0.0 nw(0.14.7) DingTalk(6.0.12-Release.4140363) Mojo/1.0.0 Native AppType(release) Channel/201200' # 自行添加
}
path = "dingding-movie"  # 文件夹名称
os.makedirs(path, exist_ok=True)  # 自动创建文件夹
url_input = input("m3u8地址为:")#第一个变量
output_name = input("最后合并文件名为:")
url = 'https://'+url_input.split('/')[2]+'/'+url_input.split('/')[3]+'/'
print("下载前缀为:" + url)
fileopen = open('id-keys.txt', encoding='utf-8')
all_id_keys = fileopen.readlines()
for all_id_key in all_id_keys:# print(all_id_key)all_id_key = re.match(r'1660f37e.*', all_id_key, re.M | re.I)#1660f37e需要手动根据当前获取的第二变量修改if all_id_key:#print(url + all_id_key.group())id_keys.append(url + all_id_key.group())
for id_key in id_keys:#print(id_key)id = id_key.split('/')[-1].strip()[:-57]print("正在下载:" + id)res = requests.get(id_key, headers=headers)with open(path + "/" + id, "wb")as f:f.write(res.content)
filepath = r"dingding-movie"
files = os.listdir(filepath)
files = natsorted(files)
current_path = os.path.abspath(filepath)
#print(files)
for file in files:line = "file '"+ str(file) +"'"with open('dingding-movie\\name.txt','a') as f:f.write(line+ '\n')
print("下载已完成")
time.sleep(3)
print("开始视频合并")
command = 'r"cd /d ' + current_path + '&&ffmpeg -f concat -safe 0 -i name.txt -c copy ' + output_name + '.mp4'
# popen返回文件对象,跟open操作一样
f = os.popen(command, "r")
d = f.read()  # 读文件
print(d)
print("视频合并完成!视频所在目录:" + current_path)
f.close()
print("如果合并失败,请自行执行CMD: " + command.strip()[2:])

#最后两行的cmd命令 已测试成功 代码不美观 将将就 我也是个小白!

钉钉更新后,钉钉回放视频python下载相关推荐

  1. 2022-TCGA数据库重大更新后RNASeq的STAR-Counts数据的下载与整理

    TCGA | GEO | 文献阅读 | 数据库 | 理论知识 R语言 | Bioconductor | 服务器与Linux 最近有粉丝留言,TCGA数据库发生更新,下载的数据和之前的不一样.比如转录组 ...

  2. python下载后如何使用-如何使用python下载文件?

    解决方案:from os.path import basename from urlparse import urlsplit def url2name(url): return basename(u ...

  3. Windows7下载钉钉DingTalk直播回放视频到本地

    目标:下载钉钉直播回放视频,保存为本地的视频文件. 平台:Windows7 x86_64,钉钉. 工具:Fiddler(HTTPS抓包工具).FiddlerCertMaker(Fiddler证书生成工 ...

  4. 下载钉钉直播回放视频

    原文链接 所需工具 抓包工具Fiddler m3u8下载器 Fiddler前期准备 安装 设置 Fiddler 捕捉 HTTPS 流量 情况1(能够抓到m3u8) 在钉钉内播放群直播回放,然后返回 F ...

  5. 无法下载钉钉群内回放视频?

    无法下载钉钉群内回放视频? 工具:Fiddler 安装Fiddler :下载链接 解压安装即可 第一次打开Fiddler做以下设置 一路YES往下即可 设置过滤器 设置完成之后利用Fiddler抓取u ...

  6. Gitlab通过Webhook自动触发Jenkins构建任务并在更新完毕后发送钉钉消息通知

    Gitlab通过Webhook自动触发Jenkins构建任务并在更新完毕后发送钉钉消息通知 文章目录 Gitlab通过Webhook自动触发Jenkins构建任务并在更新完毕后发送钉钉消息通知 1.实 ...

  7. 钉钉回放视频下载最新方法,不用复杂代码

    放个链接,感兴趣的朋友们自行下载吧. 2022年钉钉回放视频下载最新方法,不用复杂代码.本人代码小白,方法亲测简单有效.-直播技术文档类资源-CSDN下载钉钉回放视频下载最新方法,不用复杂代码只需钉钉 ...

  8. Python Fiddler 钉钉PC端群回放视频爬取

    Python Fiddler 钉钉PC端群回放视频爬取 钉钉群里的回放视频被群管理员设置为不能下载,可是有时候又需要这些视频可以方便传阅和打开调倍速等等,而且还可以不用再打开PC端就可以直接看到视频多 ...

  9. 2021年新版本下载钉钉群直播回放视频方法介绍

    教大家如何下载钉钉视频,首先,下载地瓜网络钉钉视频下载软件,下载完成之后登录软件! 然后找到需要下载的视频,按照正常操作是无法下载管理员禁止下载的视频的 接下来用我们的软件开始下载,点击开始监测数据, ...

最新文章

  1. PowerDesigner对列增加注释
  2. openJDK之sun.misc.Unsafe类CAS底层实现
  3. k8s minikube启动时指定镜像源的启动方式
  4. dedecms 备份和恢复的完整流程
  5. java支付宝rsa2签名_sign_tools_RSA256_win
  6. 数据库基础 MySQL
  7. DataGridView的行的字体颜色变化
  8. ORB_SLAM2探秘 第三章 LoopClosing线程
  9. 根据身份证号码获取年龄
  10. 计算机毕业设计springboot基于springboot框架的企业合同管理系统设计与实现
  11. 海康大华摄像头GB/T28181接入国标视频平台如何选择主码流还是子码流
  12. 测试基础-测试的定义及原则?
  13. 后盾人tp5教程_5个出色的应用程序以开放数据为后盾
  14. 竞价推广常见难题及优化调整思路
  15. 两步免费开通企业微信,不用提交资料
  16. homeassistant core安装方式无HACS插件成功解决(记录)
  17. FireFox必备插件(一)
  18. 儒猿秒杀季!互联网大厂的IM即时通信系统项目实战
  19. 闲来无事,过了三天“神雕侠侣”的生活
  20. [附源码]计算机毕业设计springboot交通事故档案管理系统

热门文章

  1. android通知栏样式自定义,如何给状态栏上的时钟自定义样式或位置?(位置篇)
  2. Pytorch学习(二)—— nn模块
  3. oracle裁员原因_立足中国30年,甲骨文(Oracle)为何在中国进行大裁员?
  4. 分辨率720p,VGA,QVGA,WVGA
  5. 如平静的水面,波澜不惊
  6. bus hound 使用介绍
  7. c语言编程思想的题目,c语言方面毕业设计选题范文.docx
  8. hadoop实战(一)
  9. matlab 画图白边,matlab保存画框图像去白边
  10. 安卓设备门禁识别开发_基于Android和RFID的门禁管理系统