跳到正文

yt-dlp 配合代理:语法、哪些代理对 YouTube 真正有效,以及代价是什么

作者 Tunelio 团队发布于

yt-dlp --proxy socks5://user:pass@host:port URL 让每个请求都经过代理。语法是容易的部分。难的是 YouTube 给代理 IP 打分的方式和给你服务器 IP 打分完全一样:廉价的数据中心代理继承同样的机器人验证和 403,住宅或移动出口有效但整段视频都要从它们经过,而且 PO token 依然必需。本文内容来自我们自己运营提取集群的经验。

语法

yt-dlp --proxy "http://user:pass@proxy.example.com:8080" "URL"
yt-dlp --proxy "socks5://user:pass@proxy.example.com:1080" "URL"     # SOCKS5,本地解析 DNS
yt-dlp --proxy "socks5h://user:pass@proxy.example.com:1080" "URL"    # SOCKS5,由代理解析 DNS
yt-dlp --proxy "" "URL"                                             # 绕过任何 HTTP_PROXY 环境变量

yt-dlp 也遵循 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY 环境变量。SOCKS 支持需要 pysocks/urllib3 socks 额外依赖,官方二进制和 pip install "yt-dlp[default]" 都已包含。把参数写进配置文件即可永久生效。

代理能做什么、不能做什么

  • 一切都经过它:watch/player 请求和媒体下载。200 MB 的视频意味着 200 MB 的代理流量 —— 按 GB 计费的住宅代理,这就是主要成本。
  • 它改变 YouTube 看到的 IP,因此改变信誉评分。它不改变客户端指纹、缺失的 PO token 或过时的 yt-dlp —— 这些照样导致 403 和机器人验证。
  • --geo-bypass 和 --geo-verification-proxy 是另一回事:它们只影响地区限制内容的初始元数据请求,不影响媒体下载。

哪些代理对 YouTube 有效

数据中心代理:通常无效

YouTube 按所有者对 IP 段分类。托管在云服务商或批量 IP 转售商处的代理与你的 VPS 同属 “疑似自动化” 一类,所以轮换一百个这样的代理基本就是轮换一百个被标记的地址。它们仍可用于元数据的地区解锁,很少能用于持续下载。

住宅与移动代理:有效,但有代价

消费级 ISP 或移动运营商网段上的出口,评分与家庭用户相同,因此能通过数据中心 IP 过不去的机器人验证。代价是带宽:大多数提供商按 GB 计费,而视频的每个字节都经过出口。粘性会话(同一出口保持几分钟)比逐请求轮换效果更好 —— 后者看起来像僵尸网络。

IPv6 与 /64 陷阱

许多代理和 VPN 产品提供 IPv6 出口,因为便宜。YouTube 把整个 IPv6 /64 当作一个地址打分,一个滥用的邻居就会让整个网段被标记,而同一 /64 内的 “一百万 IP” 只是一个信誉单位。2026 年 8 月在我们自己的集群上,大约十次提取中有三次返回的媒体主机拒绝 IPv6,却通过 IPv4 提供同一 URL。除非确定 IPv6 出口干净,否则用 -4 强制 IPv4。

带宽算术

元数据便宜,媒体不便宜。在我们的测量中,一次完整的 yt-dlp 提取(播放器页面、播放器 JS、API 调用)经代理传输约 1 MB;视频本身是 20–500 MB。如果按 GB 付费,代理账单完全由你下载的视频决定,而不是查询了多少次。两种控制办法:请求更小的格式(-S "res:720"),并限制吞吐(--limit-rate),以免失控的任务在一小时内烧光一个月的额度。

配方

住宅出口、仅 IPv4、温和节奏

yt-dlp -4 --proxy "socks5h://user:pass@residential.example:1080" \
  --sleep-requests 1 --sleep-interval 3 --max-sleep-interval 8 \
  -S "res:720,ext:mp4" "URL"

代理加 cookies

yt-dlp --proxy "socks5h://…" --cookies cookies.txt -4 "URL"

保持 cookie 文件与出口国家一致:在一个国家登录的会话通过另一个国家的出口使用,本身就是机器人信号。安全的导出流程见 cookies 指南。

测试问题是否出在代理

yt-dlp -v --proxy "socks5h://…" -4 -F "URL" 2>&1 | grep -iE "sign in|403|player_client|WARNING"

常见错误

  • “Unable to connect to proxy” / “Connection refused” → 主机/端口错误,或把 HTTP 代理配置成了 SOCKS(或相反)。
  • “Missing dependencies for SOCKS support” → 安装 yt-dlp[default] 或 pip install pysocks。
  • 经代理仍遇到机器人验证或 403 → 出口被标记;换成住宅/移动出口并强制 IPv4。同时确认 yt-dlp 是最新版且已安装 JS 运行时。
  • 下载非常慢 → 住宅出口比你服务器的链路慢;加 --concurrent-fragments 4 并接受上限,或下载更小的格式。
  • 第一次能用,下一个视频就失败 → 逐请求轮换;向提供商申请粘性会话。

什么时候根本不该用代理

如果你用代理是因为机器人、应用或流水线不断撞上 YouTube 的墙,那你即将开始运营代理预算、粘性会话逻辑、PO token 生成和 cookie 轮换 —— 也就是我们运营的那套集群。托管 API 把这一切留在服务端,每次请求返回一个下载 URL;媒体从我们的边缘节点流出,而不是经过你这边按量计费的代理。Tunelio 是我们自己的服务,请自行权衡;对少量个人下载,-4 加一个像样的出口就够了。新账号可获得 100 个免费额度。

来源

  • yt-dlp README —— 网络选项(--proxy、--source-address、-4/-6)、地区限制选项。
  • yt-dlp wiki —— 关于机器人验证与 IP 信誉的 FAQ。
  • 我们自己的测量(Tunelio 提取集群,2026 年 8 月):IPv6 媒体主机拒绝率、经代理每次提取的字节数。

常见问题

yt-dlp 该用哪种代理类型?

带远程 DNS 的 SOCKS5(socks5h://)最透明;HTTP 代理也可以。类型远不如出口信誉重要 —— 住宅或移动优于数据中心。

视频下载也经过代理吗?

是的,每个请求都经过。按 GB 计费时视频字节就是全部账单;用更小的格式或 --limit-rate 控制。

用了代理为什么还有机器人验证?

出口 IP 被标记(数据中心网段很典型)、yt-dlp 过时,或缺少 JS 运行时/PO token。换住宅出口、强制 IPv4、更新,并检查 yt-dlp -v。

免费代理列表能用吗?

对 YouTube 几乎从不:那些 IP 被共享、滥用且早已标记,还会泄露你的流量。使用可靠的付费住宅提供商,或干脆不用代理。

相关指南