方法解密 ts 文件内容
发布时间:2025-06-24 20:25:33 作者:北方职教升学中心 阅读量:347
发送 GET 请求到 m3u8 地址,获取 m3u8 文件内容。
- 该代码的目的是下载和加密 m3u8 视频,并将其解密为完整的视频文件。
发现视频为m3u8流视频(#xff09ts文件,即视频是由多个ts组合而成的,我们在左边搜索m3u8发现js文件很多,info中只有playUrl有视频(ts)的数据。
以字符串的形式。
ic。知识星球:https://articles.zsxq.com/id_81zktftbn6.html(新球,前20名进入者加作者微信退款)
视频链接:
AHR0chm6Ly9lzhuy3nkbi5uzxqvbgvhcm4vmzntmvntm5ntk4pnwbtzMDAxLjQxNDM=
一:
点开f12点击视频下拉,点击网络༈net)找到位置。
代码。
ts_list。解释。iv。
发送 GET 请求到。
用于发送网络请求。
从响应数据中提取 m3u8 播放地址。
key_url。以及请求参数。
使用 。
将解密的视频数据写入本地文件。
,这些参数用于获取视频的相关信息。
- 采用正则表达式分析 m3u8 文件,提取加密密钥和 ts 文件片段 URL。以下是对代码的简要逐行解释:
1-2. 导入所需模块:
re。使用正则表达式从 m3u8 从文本中提取一切 ts 文件片段 URL,并存储在列表中。
headers。效果呈现:
5.35 DuF:/ P@K.WZ 07/20 效果 https://v.douyin.com/i65ktMex// 复制此链接打开Dou音搜索,直接观看视频!我们只需要请求每个m3m8的视频,并且把他放在一起。
- 使用 AES 解密算法解密 ts 文件片段。ic。
用于正则表达式,
Crypto.Cipher.AES。url。 - 方法解密 ts 文件内容。
,获取视频信息,并解析 JSON 响应数据。
- ,对于每个 ts #xff1文件片段a;
- 构造 ts 文件的 URL。代码中的关键步骤包括:
- 发送网络请求获取视频信息 m3u8 文件。请求头,key_url。
,模拟浏览器行为,适应目标网站的反爬虫机制。
。
转换为字节序列。
请求url,AES解密用iv#xff0c;请求ts使用解密的东西c;并且可以通过拼接完成。
3-22. 定义请求头。
29-30. 使用正则表达式从 m3u8 在文本中提取加密钥 URL。
获取加密的密钥内容。iv。
我们只需要请求每个m3m8的视频,把他拼在一起就行了。
import refrom Crypto.Cipher import AESimport requestsheaders = { "accept": "application/json, text/plain, */*", "accept-language": "zh-CN,zh;q=0.9", "cache-control": "no-cache", "origin": "https://edu.csdn.net", "pragma": "no-cache", "priority": "u=1, i", "referer": "https://edu.csdn.net/learn/39353/638733?spm=1002.2001.3001.4157", "sec-ch-ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Google Chrome\";v=\"126\"", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": "\"Windows\"", "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-site", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36", "x-ca-key": "203866374", "x-ca-nonce": "1d181c04-0fec-47b9-a5e2-006371e0f85e", "x-ca-signature": "yyvn0QQSpclcjo6zkb4ptNmKbaol5zsh53invp;", "x-ca-signature-headers": "x-ca-key,x-ca-nonce"}url = "https://bizapi.csdn.net/edu-academy-web/v1/material/info"params = { "materialId": "638733", "courseId": "39353", "cId": "39353", "playerVersion": "2", "isFree": "2", "isMember": "2"}response = requests.get(url, headers=headers, params=params)data =response.json()title = data["data"]["title"]m3u8 = data["data"]["info"]['playUrl']m3u8_res = requests.get(m3u8, headers=headers)m3u8_text = m3u8_res.textkey_url = re.findall('URI="(.*?)"', m3u8_text)[0]key = requests.get(key_url).contentiv = re.findall('IV=(.*)', m3u8_text)[0][2:]IV = bytes.fromhex(iv)ic = AES.new(key, AES.MODE_CBC, IV)ts_list = re.findall(',\n(.*?)\n#', m3u8_text)for ts in ts_list: ts_url = 'https://course.csdnimg.cn/asset/ed92517ba25cd1c1d228e0ca37d0a/play_video/{}'.format(ts) ts_content = requests.get(ts_url, headers=headers).content content =ic.decrypt(ts_content) with open('video\\'+title+'.mp4', mode='ab') as f: f.write(content) print(ts_url)print(data)print(m3u8_text)。
二:
我们要求playurl#xff0c;结果如下。
45-46. 打印出 API 响应和 m3u8 文件内容用于调试。
和初始化向量。
视频标题从响应数据中提取。
用于 AES 解密,
requests。,使用获得的密钥和初始向量。params。
请注意,该代码可能需要根据目标网站的具体实现进行调整,例如,
。
将解密内容写入本地文件,构建完整的视频文件。API 接口及参数等。title。
创建一个 AES 解密上下文。第一步已经完成。
发送 GET 请求到。
解释这个代码是用来下载和解密的 m3u8 视频的 Python 脚本。
免责公告:
只是交流学习,后者对读者产生的行为负责。
。
35-44. 遍历。
- 发送 GET 请求获取 ts 文件内容。
23-24. 定义 API 接口。
decrypt。发现他是AES加密,加密的密钥内容是url,iv是初始化向量。另外,下载和使用加密视频可能涉及版权问题,请确保合法合规使用。
中。
到目前为止,ts_list。m3u8。 对象的 。
url。