刚好需要下载一个视频,结果发现是m3u8的。

Untitled

Untitled

m3u8里很多ts片段,都是视频

Untitled

下载后发现不能播放,原来是加密了,m3u8可以设置加密的

#EXT-X-KEY:METHOD=AES-128,URI="full_hd_segmented_encryption_key_w2xwFpiQXQS0wTcVa_6vkw"

full_hd_segmented_encryption_key_w2xwFpiQXQS0wTcVa_6vkw 就是密钥了,直接下载后解密

pip install pycryptodomex

import requests
import base64
from Cryptodome.Cipher import AES

key = base64.b64decode("V0YktjfYb77BLMEG62hAJg==")
iv=b'0000000000000000'
cipher = AES.new(key, AES.MODE_CBC, iv)

headers = {
    'authority': 'cdn.vidyard.com',
    'accept': '*/*',
    'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
    'dnt': '1',
    'origin': '<https://play.vidyard.com>',
    'referer': '<https://play.vidyard.com/UamVZDr2P8py4NBGd2guCm?disable_analytics=0&preload=auto&v=3.1.1&vyetoken=&type=inline&>',
    'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="100", "Microsoft Edge";v="100"',
    '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/100.0.4896.60 Safari/537.36 Edg/100.0.1185.29',
}
proxies = {"https":"<http://127.0.0.1:1080>"}

for i in range(52):
    index = s = "%03d" % i
    print("downloading %s " % index)
    response = requests.get('<https://cdn.vidyard.com/hls-videos/QMAG77IOJLNV81-zuzuhSA/full_hd_segmented/full_hd_segmented_%s.ts>' % index, headers=headers,proxies=proxies)

    if response.status_code == 200:
        with open("full_hd_segmented_%s.ts" % index , "wb") as f: 
            ts_data = cipher.decrypt(response.content)
            f.write(ts_data)
            print("download finished.")
    else:
        print('Error code: %d' % response.status_code)

全部下载完,直接用copy /b合并成一个。

FE.mp3