方法解密 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。 以及请求参数。使用 。

将解密的视频数据写入本地文件。

  1. ,这些参数用于获取视频的相关信息。

  2. 采用正则表达式分析 m3u8 文件,提取加密密钥和 ts 文件片段 URL。以下是对代码的简要逐行解释:1-2. 导入所需模块:re。 使用正则表达式从 m3u8 从文本中提取一切 ts 文件片段 URL,并存储在列表中。

    效果呈现:

    5.35 DuF:/ P@K.WZ 07/20 效果  https://v.douyin.com/i65ktMex// 复制此链接󿀌打开Dou音搜索,直接观看视频!
    headers。

    我们只需要请求每个m3m8的视频,并且把他放在一起。

  3. 使用 AES 解密算法解密 ts 文件片段。ic。用于正则表达式,Crypto.Cipher.AES。url。
  4.  方法解密 ts 文件内容。

  5. ,获取视频信息,并解析 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 脚本。

    免责公告:

    只是交流学习,后者对读者产生的行为负责。

  6. 35-44. 遍历。

  7. 发送 GET 请求获取 ts 文件内容。 23-24. 定义 API 接口。decrypt。

    发现他是AES加密,加密的密钥内容是url,iv是初始化向量。另外,下载和使用加密视频可能涉及版权问题,请确保合法合规使用。

中。

到目前为止,ts_list。m3u8。 对象的 。url。