Python采集课堂视频教程, m3u8视频解密

前言

嗨喽,大家好呀~这里是爱看美女的茜茜呐

环境使用:

  • Python 3.8 解释器

  • Pycharm 编辑器

模块使用:

  • requests >>> pip install requests

  • pycryptodome --> pip install pycryptodome

  • re

第三方模块安装方法:

win + R 输入cmd 输入安装命令 pip install 模块名

(如果你觉得安装速度比较慢, 你可以切换国内镜像源)

Python采集课堂视频教程, m3u8视频解密_第1张图片


更多精彩机密、教程,尽在下方,赶紧点击了解吧~

素材、视频教程、完整代码、插件安装教程我都准备好了,直接在文末名片自取就可


I. 普通视频 / M3U8视频
    普通视频 --> 可以直接选择 media 可以获取视频链接地址
    M3U8视频 --> 把整体视频内容, 分割N个视频片段 
        所有视频片段, 都在 m3u8 的文件里面可以找到
    直接搜  M3U8 --> 给你返回相应数据内容

II. M3U8视频 加密 / 没有加密
    没有加密 --> ts链接, 可以直接下载视频片段
    加密 --> ts链接, 下载视频片段是没有办法进行播放的

加密规则:
    AES解密:
        key 密钥
        iv 偏移量

代码实现步骤

  1. 发送请求, 模拟浏览器对于url地址发送请求

    请求: m3u8地址

  2. 获取数据, 获取服务器返回响应数据

  3. 解析数据, 提取我们想要的内容

    • key 密钥

    • iv 偏移量

    • ts文件链接

  4. 保存数据, 把视频内容保存本地

    • 解密

    • 进行视频保存

代码展示

# 导入数据请求模块 --> 需要安装 pip install requests
import requests
# 导入正则表达式模块
import re
# pycryptodome --> pip install pycryptodome
from Cryptodome.Cipher import AES

# 请求链接
url = '*****/fb8e6c92vodtranscq1258712167/8303440a3701925925244987800/drm/voddrm.token.dWluPTM0NTIyNjQ2Njk7ZXh0PTI2NWQyZTRiNTdjOWRhMWE3YjhmMjA0NjM3NGNmYjExNWFiODk3Nzk1NTg2OWE5MDVkZjVhMmQxYmFhYTMyY2RjOWNjMDY0NzdhMjEzMjdlNDMyNzgxYzcwMjUzOTBjMWZmMGFkMTNiNTJhMWNjMmZmODNkNDdlZTNjOWNmZGYxM2Q5OTM2NTRjMzM1NmI0NDt1aWRfdHlwZT0wO3VpZF9vcmlnaW5fdWlkX3R5cGU9MDt1aWRfb3JpZ2luX2F1dGhfdHlwZT0xMDAzO2NpZD0zOTk5MTY0O3Rlcm1faWQ9MTA0MTQ5OTg4O3ZvZF90eXBlPTA7cGxhdGZvcm09Mw%3D%3D.v.f30742.m3u8?exper=0&sign=3cd8b1abe5b71d364288823f4e744ed3&t=64413061&us=1167437249564802181'
# 伪装 headers
headers = {
    # User-Agent 用户代理 表示浏览器基本身份信息
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
# 发送请求
response = requests.get(url=url, headers=headers)
# 密钥
key_url = re.findall('URI="(.*?)"', response.text)[0]
# 偏移量
iv = re.findall('IV=(.*)', response.text)[0].replace('0x', '')[:16].encode()
# 解密器 获取密钥的内容
源码、解答、教程、资料加V:qian97378 免费获取
key = requests.get(key_url).content
ci = AES.new(key, AES.MODE_CBC, iv)
# ts链接
m3u8_data = re.sub('#E.*', '', response.text).split()
# for循环遍历
for ts in m3u8_data:
    ts_url = '******/fb8e6c92vodtranscq1258712167/8303440a3701925925244987800/drm/' + ts
    ts_content = requests.get(ts_url).content
    # 内容解密
    # content = ci.decrypt(ts_content)
    # 保存数据
    with open('安装教程超清.mp4', mode='ab') as f:
        f.write(ts_content)
    print(ts)

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦

希望本篇文章有对你带来帮助 ,有学习到一点知识~

躲起来的星星也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~更多源码、资料、素材、解答、交流皆点击下方名片获取呀

你可能感兴趣的:(python爬虫,python,音视频,开发语言,pycharm)