使用 yt-dlp 下载有年龄限制的 YouTube 视频

这个报错长什么样
yt-dlp 会输出类似下面的内容:
ERROR: [youtube] {VIDEO_ID}: Sign in to confirm your age. This video may be inappropriate for some users.
YouTube 已经把这条视频标记为 18+,必须用登录并通过年龄验证的账号才能拿到视频流。yt-dlp 默认是匿名下载,因此过不了这道门。
Cookie 方案
从一个已登录的浏览器会话里导出 cookie,然后交给 yt-dlp:
yt-dlp --cookies-from-browser firefox {URL}
# 或者
yt-dlp --cookies-from-browser chrome {URL}
# 又或者用 Netscape 格式的 cookies.txt 文件
yt-dlp --cookies cookies.txt {URL}
前提是导出 cookie 的那个账号在 YouTube 端已经通过了年龄验证。如果账号注册时填的生日不足 18 岁,或者根本没走过年龄验证流程,cookie 也帮不上忙。
注意:永远不要把 cookie 文件提交到 git 仓库。它包含可以访问你 YouTube 账号的会话令牌。
OAuth 方案
部分版本的 yt-dlp 也支持交互式 OAuth:
yt-dlp --username oauth2 --password '' {URL}
它会打印一个设备码,你打开 youtube.com/activate 输入这个码,之后 yt-dlp 就会拿到 token 使用。这样不用导出 cookie,会话也更持久。
两个方案都不行的情况
- 视频来自 YouTube 要求政府身份证件认证的地区(欧盟部分国家)。即便已经登录的账号,在上传身份证件之前仍可能被拦截。
- 上传者后来把视频改为「上传后设为私享」。
- 视频原本有年龄限制,而且后来被删除了;URL 还能解析,但视频流已经不存在。
在这些情况下,没有任何下载器能绕过限制。这部分内容对你的账号来说就是真的不可用。
改用 Any4K
Any4K 走的是公开的视频流 URL,并不会登录到你的 YouTube 账号,所以它本身没法绕开年龄门槛。对于那些本来就是公开可见(没有年龄限制),却莫名其妙报别的错的视频,Any4K 不需要 cookie,也不需要 OAuth 配置,直接在 any4k.com 处理。
对于真正被年龄限制的视频,路径是:
- 确认你的 YouTube 账号已经通过验证并标记为 18+。
- 用 yt-dlp 加
--cookies-from-browser,把这个验证状态带到下载流程里。 - 把 cookie 文件保管好。
对于没有年龄限制的视频,Any4K 的优势
- 不用管理 cookie:没什么要导出、保存或者轮换的。
- 不用登录:对公开视频以匿名方式工作。
- 更高的画质上限:源支持时最高可达 8K。
- 多平台:YouTube、TikTok、Twitter、Instagram、Facebook、Reddit、Shorts。
结论
有年龄限制的 YouTube 视频必须依赖已验证账号的会话,也就是 yt-dlp 搭配 --cookies-from-browser 或 OAuth。其他情况下,Any4K Video Downloader 都是更直接的选择。