1、定位m3u8接口
1.1 原理
目前主流的网站,为了提高加载速度和降低带宽消耗,许多视频网站采用了将视频内容切割成多个小片段(也称为视频分片或分段),这些小视频片段的地址并不会直接暴露给用户或播放器,而是被组织并存储在一个特殊的文本文件(通常是m3u8格式)中。m3u8文件,它定义了流媒体视频的分片结构、编码格式、播放列表等关键信息。
为了获得m3u8文件,通常需要通过网络请求与视频网站的服务器进行交互。可以使用浏览器的开发者工具(如Chrome的Network面板)监控网络请求,定位到视频网站返回m3u8文件的具体接口(URL)。
1.2 具体操作
下边以爱奇艺视频为例
1. 打开Chrome浏览器,在浏览器的地址栏中输入你想要下载的视频的完整网址,并按下回车键加载页面。
2. 按12调出开发者工具,在开发者工具中,会了现多个标签页,如Elements、Console、Sources等。点击“Network”标签页以切换到网络请求监控界面。
3. 在Network面板的搜索框中输入"m3u8"关键字(最好使用F5键或点击浏览器刷新按钮重新捕获网络请求),然后按回车键进行搜索。这将帮助你快速筛选出所有包含"m3u8"的请求,这些请求很可能就是视频流的播放列表文件。
通常接口在叫dash里的
2、视频下载代码
- 引相关的模块,如果没有安装的话,用pip install XXXX 进行安装
import requests
import re
from tqdm import tqdm
- 通过http接口获得m3u8的文件
url=""
name="move.mp4"
respone=requests.get(url).json()
m3u8List=respone['data']['program']['video']
m3u8Text=[]
for item in m3u8List:
if 'm3u8' in (item):
m3u8Text.append(item['m3u8'])
- 把m3u8数据里的每个ts视频文件地址获取,并将视频数据写进一个文件里
for m3u8 in m3u8Text:
tsList=re.sub('#E.*','',m3u8).split()
for tsUrl in tqdm(tsList):
tsData=requests.get(tsUrl).content
with open(name,mode="ab") as f:
f.write(tsData)
3、说明
由于版权保护和技术限制,直接访问或下载视频网站的m3u8文件及其视频片段可能违反网站的服务条款或法律法规。因此,在进行此类操作时,请确保你有权访问这些视频内容,并遵守相关的法律法规。本文仅作为技术交流
文章评论