准备工具
1、安装python,本机环境linux+python3.6
2、直接开撸,基本的包需要pip install
3、话不多说直接干
https://www.******.com/video/*/2-1.html某网站,F12 播放视频界面的所有请求,可以看到有个m3u8 的请求,里面是所有的ts流,下载了这个,意味着所有的TS流的地址你都有了。以下是部分m3u8请求返回数据
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="key.key"
#EXTINF:5.000000,
ebCy82OQ000.ts
#EXTINF:5.000000,
ebCy82OQ001.ts
#EXTINF:5.000000,
ebCy82OQ002.ts
#EXTINF:5.000000,
ebCy82OQ003.ts
#EXTINF:5.000000,
看上面可以看出,视频的TS流是AES-128加密的。需要key解密才能播放该TS视频
不着急,继续看浏览器的请求,发现后面还有一个key的请求,很重要,这个就是解密TS流的关键了。没有这个,你的视频是无法解析的
https://www.****.com/***/****/key.key
到这,上帝已经阻止不了你的狂野之心了
贴出部分代码,有需要的自取(记得替换链接)
import urllib.request
import ssl
from Crypto.Cipher import AES
key='key'//获取到的key值,解密TS视频的
cryptor = AES.new(key, AES.MODE_CBC, key)
url='https://www.***.com/***/***/'
for i in range(1026):
if i<1:
continue
k = str(i)
other_url = k.zfill(3)
name='****'+other_url
print(url+name+'.ts')
ssl._create_default_https_context = ssl._create_unverified_context
f = urllib.request.urlopen(url+name+'.ts')
buffer = f.read()
with open("/python/ts1/"+name+".ts", "wb") as code:
code.write(cryptor.decrypt(buffer))
至此结束,大家也可以把 m3u8返回的数据,做处理获取到所有ts流的地址,然后请求下载也是可以的。