刚好需要下载一个视频,结果发现是m3u8的。
m3u8里很多ts片段,都是视频
下载后发现不能播放,原来是加密了,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合并成一个。