Python爬取央视视频实战:从抓包到完整下载的完整流程

发布时间:2026/9/28 18:12:41

Python爬取央视视频实战:从抓包到完整下载的完整流程
一、环境准备import requestsimport jsonimport reimport subprocess # 调用FFmpeg合并分片需要安装requestsHTTP请求、FFmpeg处理视频流。二、抓包定位接口用F12或Charles抓包聚焦央视App播放视频时的请求。关键发现央视的接口会返回一个 videoList 字段里面包含多个清晰度档位的视频地址列表。核心请求大致是这个结构url “https://api.cntv.cn/video/getVideoInfo”params {“pid”: “视频ID”, # 从页面html或列表接口获取“tsp”: “时间戳”,“vid”: “视频标识”,}headers {“User-Agent”: “CCTV-App/…”, # 模拟App“Referer”: “https://tv.cctv.com/”,}三、解析视频地址请求返回的JSON里videoList 结构通常长这样{“videoList”: [{“name”: “1080P”, “url”: “https://…/index.m3u8”},{“name”: “高清”, “url”: “https://…/index.m3u8”}]}拿到m3u8后读取分片列表再用FFmpeg拉流合并ffmpeg -i “https://…/index.m3u8” -c copy output.mp4四、实测遇到的坑坑1签名参数 vc有些接口会带 vcverify code签名参数用于防爬。实测发现部分档位可以去掉该参数但有些必须带。解决思路是分析签名生成算法通常是 md5(pid 固定盐值 时间戳) 一类。坑2m3u8加密如果m3u8里带有 #EXT-X-KEY 标签说明分片是AES-128加密的需要额外请求key并解密。不过实测央视的多数内容分片未加密可以直接合并。坑3分片数量45分钟视频约几百个分片用FFmpeg -i 拉所有分片合并速度取决于网络。建议本地先缓存再合并避免断流。五、完整代码示例import requests, json, subprocessdef get_video_url(pid):api “https://api.cntv.cn/video/getVideoInfo”params {“pid”: pid, “tsp”: str(time.time())}resp requests.get(api, paramsparams, headersheaders)data resp.json()# 取最高清晰度videos data[“videoList”]videos.sort(keylambda x: x[“url”].count(“_”), reverseTrue)return videos[0][“url”]def download(url, out):cmd [“ffmpeg”, “-i”, url, “-c”, “copy”, out]subprocess.run(cmd, checkTrue)使用示例pid “你的视频PID”m3u8_url get_video_url(pid)download(m3u8_url, “cctv_video.mp4”)六、不想写代码怎么办上面这套流程有一定门槛需要懂Python和FFmpeg。如果不想折腾代码可以直接用封装好的现成工具——CCTV视频下载器v18它内部就是实现了这套解析逻辑图形化界面粘贴链接点解析就能下本质是一样的原理。相关接口分析和工具资料我在盘资源基地cc.ewp.cc有更详细的整理需要深入研究的可以去看看。

相关新闻

非线性控制基石:Lipschitz条件在系统分析与设计中的核心作用

非线性控制基石:Lipschitz条件在系统分析与设计中的核心作用

2026/8/28 8:54:55

1. 项目概述:从“线性”到“非线性”的认知跃迁在控制理论的学习和工程实践中,我们绝大多数人都是从线性系统开始的。PID控制器、状态空间方程、传递函数、根轨迹……这些工具构成了我们认知控制世界的基石。它们清晰、优雅,有着完备的理论体…

FPGA串口通信:从Verilog手写到稳定实现与调试避坑

FPGA串口通信:从Verilog手写到稳定实现与调试避坑

2026/9/9 0:00:23

1. 项目概述:从零到一,在FPGA上打通串口通信搞硬件的朋友,尤其是玩FPGA的,串口通信绝对是一个绕不开的“老朋友”。它简单、经典,是验证硬件逻辑、与上位机交互最直接的方式之一。但就是这个看似简单的“接收发送”&am…

救命!分不清数组指针和指针数组,函数指针和指针函数?这篇一次性讲透

救命!分不清数组指针和指针数组,函数指针和指针函数?这篇一次性讲透

2026/9/9 20:53:00

一、指针数组:主体是数组,数组元素为指针1. 概念定义语法格式:基类型 * 数组名[长度];[] 优先级高于 *,变量先与 [] 结合形成数组;数组内每一个元素都是对应类型的指针;64 位系统单个指针占 8 字节&#xf…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/28 4:08:17

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/28 16:01:49

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/28 2:15:29

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/28 3:14:54

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/28 3:58:00

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/28 3:47:14

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/28 16:01:48

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/28 5:05:21

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/28 16:01:48

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…