有没有可以下载钉钉群文件视频的软件,群文件视频抓包下载不了,因为群文件是又加密的,抓不到m3u8
你可以参考一下这个文章:
https://blog.csdn.net/qq_45834577/article/details/118487670
有没有链接我想试一下
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
抓包下载可能是行不通的,因为钉钉的传输方式经过了加密,为保护数据安全,第三方软件无法解析。
但您仍可以通过一些其他手段下载群文件视频,下面介绍两种可能的方法:
在钉钉手机客户端中,您可以直接长按需要下载的文件并选择“下载”,也可以在群文件列表中勾选需要下载的文件并点击“下载”按钮。如果您使用的是钉钉PC端,则可直接在文件列表中勾选并点击“下载”按钮。
钉钉PC端下载速度可能比较慢,或者您需要下载大量文件时,可以使用 Python 脚本来实现自动下载。
下面是一个 Python 脚本示例,可以下载某个钉钉群中的所有视频文件:
import os
import re
import requests
# 钉钉登录信息,需要登录钉钉Web版获取
session = requests.Session()
session.headers.update({'User-Agent': 'Mozilla/5.0'})
cookie = '填入您的钉钉Cookie'
referer = '填入您钉钉视频所在的群组URL'
# 获取群文件列表
url = 'https://im.dingtalk.com/attachment/qf/{}/list'.format(groupId)
response = session.get(url, headers={'Cookie': cookie, 'Referer': referer})
data = response.json()
# 下载视频文件
for item in data['records']:
if item['fileType'] == 4 and item['mediaType'] == 3:
filename = item['fileName']
fileid = item['fileId']
url = f'https://im.dingtalk.com/attachment/qf/{groupId}/{fileid}/download'
response = session.get(url, headers={'Cookie': cookie, 'Referer': referer}, stream=True)
with open(filename, 'wb') as f:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
print('Done!')
您需要将cookie
和referer
变量的值填入您的钉钉 Cookie 和视频所在的群组 URL,groupId
变量填入您要下载的群组 ID。
请注意,此脚本仅用于学习和研究目的,使用时请确认您有下载的权限。
如果我的回答解决了您的问题,请采纳!
python
import requests
from urllib.parse import urljoin
session = requests.Session()
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0;Win64;x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
def get_real_url(url):
session.headers.update(headers)
response = session.get(url, allow_redirects=False, stream=True)
if response.status_code == 302 or response.status_code == 301:
return get_real_url(response.headers['Location'])
else:
return response.url
def download_video(video_url, save_path):
session.headers.update(headers)
response = session.get(video_url, stream=True)
with open(save_path, 'wb') as f:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
def download_dingtalk_video(url, save_path):
real_url = get_real_url(url)
if 'playvideo' not in real_url:
print('Error: Invalid url!')
return
elif 'm3u8' not in real_url:
print('Error: This is not a video url!')
return
m3u8_url = real_url.replace('/playlist.m3u8', '') + '/' + '480p' + '/' + 'playlist.m3u8'
response = session.get(m3u8_url)
ts_list = response.text.split('
')
ts_list = [i for i in ts_list if 'ts' in i]
video_url_list = [urljoin(m3u8_url, i) for i in ts_list]
video = b''
for video_url in video_url_list:
temp_video = session.get(video_url).content
video += temp_video
with open(save_path, 'wb') as f:
f.write(video)
if __name__ == '__main__':
url = input('请输入钉钉群文件视频链接:')
save_path = input('请输入保存路径:')
download_dingtalk_video(url, save_path)