爬取M3U8文件支持的网页在线播放资源(AES-128加密)

本文介绍了如何使用Python和TypeScript爬取支持M3U8格式的在线视频资源,特别是处理AES-128加密的流程。内容包括理解M3U8文件结构、解析加密信息、实现解密算法,以及构建能够播放加密M3U8流的网页应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import os
import requests
import re
from multiprocessing import Pool
from Crypto.Cipher import AES

# 这个是你要保存的文件位置,可自定义,记得\\这个不要丢了,写这里是方便下面代码中不写。
path = r'E:\newfilm\\'
# 打开能播放你喜欢资源的网址,按F12,找到浏览器里XHR选项里m3u8文件,右键复制网址,记得选response 里面很多ts网址的。
m3u8 = 'https://youku-com.jjyl12349.com/20210517/BlYZo7Kz/1000kb/hls/index.m3u8'


def get_key(m3u8):
    response = requests.get(m3u8).text
    key_link = re.search('URI=\"(.*?)\"', response).group(1)
    key = requests.get(key_link).text.encode('utf-8')
    crypto = AES.new(key, AES.MODE_CBC, key)
    return crypto


def get_tslist(m3u8):
    response = requests.get(m3u8).text
    ts_list = re.findall('https:.*?\.ts', response)
    return ts_list


crypto = get_key(m3u8)


def down_ts(ts):
    res = requests.get(ts).content
    with open(path + ts.split('/')[-1], 'wb')as f:
        f.write(crypto.decrypt(res))


def rename_ts(ts_list):
    dict = {}
    k = 1
    for ts in ts_list:
        ts = ts.split('/')[-1]
        dict[ts] = '{:04d}'.format(k) + '.ts'
        k += 1
    for file in os.listdir(path):
        if file in dict.keys():
            os.rename(path + file, path + dict.get(file))


def hebing(name):
    COMD1 = f'copy /b {path}*.ts {path}{name}.mp4'
    COMD2 = f'del {path}*.ts'
    os.system(COMD1)
    os.system(COMD2)


if __name__ == '__main__':
    ts_list = get_tslist(m3u8)
    pool = Pool(10)#这里的数字10可以修改为你电脑核心的2倍左右,比如你电脑是8核心的,可以设置为16.
    pool.map(down_ts, ts_list)#执行批量下载
    rename_ts(ts_list)#批量命名按顺序排列,防止合成的时候影片不连续。
    hebing('地球脉动第二季第一集')#合成mp4文件,删除其他的ts文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值