# YouTube 下载器 — 页面内容

> 摘自 PR #32 (`feat/youtube-downloader`)、`en.json → productPages.youtubeDownloader`。
> `en` 为权威版本；es / pt-br / fr / ru / zh 包含初版人工翻译。

## SEO / 元数据

- **标题：** YouTube 下载器：通过 Massive Residential 实现可靠的 YouTube 下载 | Massive
- **描述：** 通过 Massive 住宅代理运行 YouTube 下载的开源异步服务：有限并发、严格的粘性会话、每次重试使用新路由，以及按尝试次数记录的遥测数据。
- **JSON-LD (`SoftwareSourceCode`) 名称：** Massive YouTube 下载器

## 导航 / 产品菜单

- **标签：** YouTube 下载器
- **简介：** 通过 Massive Residential 实现的开源异步 YouTube 下载。

---

## 主视觉

**标签：** 开源 · MIT

# 大规模可靠的 YouTube 下载

这是一个通过 Massive Residential 代理运行 yt-dlp 的开源异步服务。其重要性在于：当下载量较大时，YouTube 会对数据中心 IP 和简单脚本进行限速和封锁，最终导致下载完全无法进行。

- **[在 GitHub 上查看]** → https://github.com/joinmassive/Youtube-downloader

---

## 问题

### 为什么大规模直接下载脚本会失败

当下载量增加时，直接在 YouTube 上运行 yt-dlp 往往会以相同的方式出现故障。本服务的存在正是为了避免这些问题。

01. **无限制的并发** —— 简单的脚本会根据 URL 数量建立相应数量的连接。这会同时压垮代理池和 YouTube，导致失败情况呈级联式发生，而非自动退避。
02. **下载中途超时的会话** — sessionmode=flex 会在长时间下载过程中轮换底层路由，导致大型视频在下载中途超时，整个尝试都白费了。
03. **重试导致失败重复** —— 普通重试会复用刚刚失败的同一条路由，因此第二次尝试会以相同方式失败，在没有任何改变的情况下消耗了重试配额。
04. **不可见的代理错误** —— 当代理端错误被吞噬时，任务仅显示为“失败”，且没有可采取行动的退出 IP、国家或 ASN。您无法区分是路由问题还是视频本身的问题。

---

## 工作原理

### 运行模型

一个任务从 API 流向一个受限的 worker，通过严格的 Massive 会话进入 yt-dlp，最终输出到存储。失败的尝试会返回以获取新的路由。

> **示意图 (`YoutubeFlow`)：** `POST /video → Worker (bounded concurrency) → Massive (strict session) → yt-dlp (extract + download) → Storage (upload + webhook)`，其中包含从 yt-dlp 返回 Massive 的 **重试新路由** 循环。参见 `youtube-flow.svg`。

---

## 服务为您提供什么

### 专为可靠且可观察的下载而设计。

**异步任务 API** *(Async API)*
通过 POST /video 将任务加入队列，并通过 GET /video/{id} 轮询任务状态。下载操作在 worker 中进行，而非在 HTTP 请求中，因此响应会立即返回。
- 明确的状态：已排队、正在运行、正在上传、已完成、失败
- 通过 GET /video/{id}/attempts 检查每次尝试；通过 POST /video/{id}/retry 对最终失败的任务进行重试

**受限并发与租约** *(受限并发)*
针对每个工作进程的并发上限将连接数量控制在代理服务器和 YouTube 成功率可承受的范围内，而工作进程租约则用于跟踪正在处理的任务。
- 根据观察到的成功率设定上限；30 是有效的负载测试设置
- 崩溃的工作进程会留下租约；过期的租约在重启时会被回收并重新排队

**严格Massive会话** *(严格会话)*
每次尝试都会获得一个唯一的会话 ID，且 sessionmode=strict。路由错误会使会话失效，而非在多次失败后仍保持有效。
- 每次尝试生成新的会话 ID，意味着每次重试都会使用新的路由
- 工作进程负责重试和退避策略；yt-dlp 内部重试功能已被禁用

**yt-dlp Python API 集成** *(yt-dlp Python API)*
该服务通过其 Python API 驱动 yt-dlp，因此代理凭据绝不会通过子进程的命令行、源文件或 shell 历史记录传递。

**现代 YouTube 内容提取** *(现代提取)*
Deno JavaScript 运行时和可配置的 YouTube 播放器客户端负责处理现代播放器的内容提取。
- YTDLP_JS_RUNTIME=deno，并配有可配置的 YTDLP_YOUTUBE_PLAYER_CLIENTS 列表

**本地或 S3 存储** *(存储)*
开发时可将结果写入本地文件系统；若存在可选依赖项和凭据，则可写入 S3 及 S3 兼容存储桶。

**每次尝试的遥测数据** *(遥测)*
每次尝试都会记录其阶段、时间、字节数、选定的播放器客户端以及错误代码。 绝不包含凭据信息。
- 启用捕获功能时，记录中包含 Massive 退出元数据：退出 IP、国家/地区、时区和 ASN

**带签名的完成 webhook** *(Webhooks)*
在任务中设置 webhook URL 以接收终端通知。 若已设置签名密钥，传输数据将携带 HMAC-SHA256 签名头。

---

## 为何选择 Massive

### 真实的住宅路由，而非数据中心 IP

该服务将每次尝试都通过 Massive 住宅代理进行路由，因此 YouTube 看到的将是来自真实消费者设备的自然本地流量。

**数据速览：**

| 图标 | 数值 | 标签 |
|---|---|---|
| 延迟计 | &lt;600ms | 响应 |
| 成功折线图 | 99.8% | 成功率 |
| 正常运行时间柱状图 | 99.9% | 正常运行时间 |
| 世界地图弧线 | 195+ | 国家 |

**企业级数据卡片：**

- **通过 SOC 2 第一类审计** — 对安全控制措施和运营完整性进行独立审计。
- **符合 GDPR + CCPA 标准** —— 全面遵守全球数据隐私法规。
- **AppEsteem 认证** —— 对 SDK 实践和同意机制的独立审查。
- **99.9% 正常运行时间 SLA** —— 由 24/7 全天候监控和专用基础设施提供保障。
- **工程师直接解答工程师的问题** —— 专属客户经理。由开发团队提供技术支持。
- **完整审计追踪** —— 每台设备均经用户主动同意，每条请求均有记录。通过安全审查。

---

## 最终行动号召

## 克隆它。运行它。*上线它。*

无需注册，无门槛。只需输入您自己的 Massive Residential 凭据，几分钟内即可开始下载。当您的使用量超出测试范围时，请预约通话，我们将协助您选择合适的方案。

- **[在 GitHub 上查看]** → https://github.com/joinmassive/Youtube-downloader
- **[预约通话]** → https://meetings.hubspot.com/chen-assayag/round-robin
