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 被共享、滥用且早已标记,还会泄露你的流量。使用可靠的付费住宅提供商,或干脆不用代理。