yt-dlp: "Sign in to confirm you're not a bot"
这个 yt-dlp 错误表示 YouTube 判定你的请求是自动化的。下面说明真正的触发原因、有效的修复方法,以及如何彻底避免它。
这个错误的含义
YouTube 认为你的请求像机器人,现在要求一个已登录、已验证的会话才肯提供视频。yt-dlp 将其显示为 “Sign in to confirm you’re not a bot”。这是服务端的墙,而非 yt-dlp 的 bug。
为什么会发生
- 你的 IP 被标记——数据中心和 VPS 网段(以及 IPv6)最容易触发。
- 没有 PO token:YouTube 越来越需要 yt-dlp 未必能生成的 Proof-of-Origin token。
- 没有 cookies:匿名客户端看起来更像爬虫而非浏览器。
- 请求量:短时间内来自同一 IP 的请求过多。
有效的修复
先传入真实的浏览器 cookies,让请求看起来像已登录会话:
yt-dlp --cookies-from-browser chrome "https://youtu.be/dQw4w9WgXcQ"若仍失败:用 --force-ipv4 强制 IPv4,安装 JS 运行时(Deno)让 yt-dlp 能生成 PO token,改用住宅代理而非你的 VPS IP,并更新到最新的 nightly——提取器经常变化。
彻底的办法:别和墙硬碰
Cookies 会过期、IP 会被重新标记、PO token 会变化。托管 API 在服务端维护新鲜会话、住宅 IP 和 PO token,你的代码只需请求一个 URL 即可拿到:
curl "https://tunelio.dev/create?url=https://youtu.be/dQw4w9WgXcQ&quality=720p" \
-H "Authorization: Bearer tnl_your_api_key"后续步骤
新账户可获得 100 个免费额度,无需信用卡。如果生产环境中不断撞上机器人墙,这就是把提取从你自己的 IP 上移走的信号。
Frequently asked questions
加 cookies 一定能解决吗?
通常可以,但不持久。Cookies 会过期,被标记的 IP 仍可能被质询,所以 cookies 是补丁而非长久之计。
PO token 是什么?
YouTube 用来验证客户端的 Proof-of-Origin token。yt-dlp 需要 JS 运行时来生成它,而且该机制会随时间变化。
托管 API 会撞上同一堵墙吗?
它替你处理这堵墙——住宅 IP 轮换、新鲜会话和 PO token 都在服务端运行,你的应用永远看不到质询。