一份完整的从零开始的 yt-dlp 安装 + 配置 + 故障排除指南
适用于 Windows 系统,让你轻松下载任何 YouTube 视频
前言
很多人在使用 yt-dlp 下载 YouTube 视频时,会遇到下面几种令人头疼的错误:
Sign in to confirm you’re not a bot(要求登录验证)n challenge solving failed(防盗链参数解码失败)Only images are available for download(只能下载图片,没有视频)
这些问题的根本原因在于:YouTube 近年来不断加强反爬机制,而 yt-dlp 需要登录凭证(cookies)和一个JavaScript 运行时环境来对抗这些保护措施。
本文会手把手教你从零开始配置 yt-dlp,解决上述所有报错,让你能够顺利下载任意 YouTube 视频。
第一部分:安装 yt-dlp(推荐方式)
方案一:使用 pip 安装(推荐,便于后续安装扩展)
- 安装 Python
访问 python.org 下载最新版 Python(≥3.8)。安装时务必勾选 “Add Python to PATH”。 - 安装 yt-dlp(完整版)
以管理员身份打开 PowerShell,执行:powershellpip install “yt-dlp[default]”注意:必须加上[default],这样才能自动安装所有依赖(包括后续需要的 JavaScript 脚本)。
方案二:直接下载 exe 文件(简单,但需手动处理依赖)
- 从 yt-dlp 官方 GitHub 下载
yt-dlp.exe,放到一个你喜欢的文件夹(如D:\yt-dlp)。 - 将该文件夹路径添加到系统 PATH 环境变量中,以便在任意位置调用。
如果你采用 exe 方式,后续安装 JavaScript 运行时(Deno/Node)后,还需要手动安装 EJS 组件(见后文),不如 pip 方式省心。因此本文推荐使用 pip 安装。
第二部分:解决“Sign in to confirm you’re not a bot” – 使用 Cookies
这个错误是因为 yt-dlp 没有登录信息,被 YouTube 当作机器人拦截了。我们需要手动导出浏览器的登录 Cookies。
步骤 2.1:安装浏览器扩展(导出 Cookies)
在 Chrome 或 Edge 中安装扩展:
Get cookies.txt LOCALLY
如果你使用 Firefox,可以安装 cookies.txt 扩展。
步骤 2.2:导出 Cookies
- 用浏览器手动登录 YouTube(保持登录状态)。
- 点击扩展图标 → “Export” → 文件会自动下载,名为
cookies.txt。 - 将
cookies.txt移动到与yt-dlp相同的目录(例如你运行命令的当前目录)。
步骤 2.3:使用 Cookies 下载视频
现在可以用 --cookies 参数来下载了:
powershell
yt-dlp --cookies cookies.txt "视频URL"
这样就能绕过登录验证。
备选方法:如果你不想手动导出 cookies,也可以尝试
--cookies-from-browser edge或--cookies-from-browser chrome。但在某些 Windows 系统上会因数据库锁而失败,因此手动导出更可靠。
第三部分:解决“n challenge solving failed” – 安装 JavaScript 运行时
当你在使用 cookies 后仍然看到类似下面的警告:
text
WARNING: n challenge solving failed: Some formats may be missing. WARNING: Only images are available for download. ERROR: Requested format is not available.
这表示 yt-dlp 需要一个 JavaScript 运行时 来执行 YouTube 的防盗链解码代码。目前官方支持 deno 和 nodejs。我们推荐安装 deno。
步骤 3.1:使用 winget 安装 Deno(Windows 最简单)
以管理员身份打开 PowerShell,执行:
powershell
winget install --id=DenoLand.Deno
安装完成后,重启 PowerShell 使环境变量生效。然后验证:
powershell
deno --version # 应该显示版本号,如 deno 2.7.14
步骤 3.2:让 yt-dlp 识别 Deno
如果你是用 pip 安装的 yt-dlp[default],它会自动寻找 deno 并调用,一般无需额外配置。
如果仍然不行,可以手动设置环境变量(临时在当前终端生效):
powershell
$env:JS_RUNTIMES = "deno:C:\Users\你的用户名\.deno\bin\deno.exe"
路径可以通过 (Get-Command deno).Source 查找。
步骤 3.3:安装 yt-dlp 的 EJS 组件(如果缺失)
某些精简安装可能缺少内置的 JavaScript 脚本,执行一次以下命令即可自动从 GitHub 下载:
powershell
yt-dlp --remote-components ejs:github
成功后你会看到 Installed ejs components 字样。
步骤 3.4:重新下载视频
现在再次执行下载命令,应该不会再有 n challenge 错误了:
powershell
yt-dlp --cookies cookies.txt "https://www.youtube.com/watch?v=视频ID"
视频将会正常下载,并且可能自动分离音视频再合并(需要 FFmpeg,见下文)。
第四部分:可选但推荐的组件 – FFmpeg
很多 YouTube 视频的清晰度(如 1080p 以上)是视频和音频分开的。yt-dlp 下载后需要 FFmpeg 来合并它们。
- 下载 FFmpeg:访问 gyan.dev 下载
ffmpeg-release-full.7z。 - 解压到
C:\ffmpeg。 - 将
C:\ffmpeg\bin添加到系统 PATH 环境变量。 - 验证:在 PowerShell 输入
ffmpeg -version。
有了 FFmpeg,yt-dlp 会自动合并为完整的视频文件。
完整示例:一条命令下载最高画质
假设你已经完成了上述所有配置,你只需要:
powershell
yt-dlp --cookies cookies.txt -f bestvideo+bestaudio --merge-output-format mp4 "视频URL"
-f bestvideo+bestaudio:选择最好的视频轨和音频轨。--merge-output-format mp4:合并成 MP4 格式。
如果想下载字幕、缩略图,可以添加 --write-subs --write-thumbnail 等参数。
常见问题排查
| 错误信息 | 可能原因 | 解决方法 |
|---|---|---|
Could not copy Chrome cookie database | 浏览器进程锁定数据库 | 完全关闭 Chrome/Edge,或改用手动导出 cookies.txt |
No supported JavaScript runtime could be found | 未安装 Deno/Node | 安装 Deno 并确保在 PATH 中 |
n challenge solving failed | JS 运行时未生效或 EJS 组件缺失 | 运行 yt-dlp --remote-components ejs:github,并检查 Deno 是否可用 |
Only images are available | 解码失败,无法获取视频流 | 确认 JS 运行时已正确配置,并更新 yt-dlp 到最新版 |
Requested format is not available | 通常与上一条相同 | 解决 n challenge 问题即可 |
保持 yt-dlp 更新
YouTube 的防护策略变化频繁,务必定期更新:
powershell
yt-dlp -U # 如果通过 pip 安装,使用 python -m yt-dlp -U
总结
通过本文的步骤,你应该能够:
- 使用 cookies 绕过 YouTube 登录验证。
- 安装 Deno 作为 JavaScript 运行时,解决 n challenge 错误。
- 配置 FFmpeg 自动合并音视频。
- 下载任意 YouTube 视频,无论公开还是需要登录的视频。
整个过程虽然看起来步骤较多,但一次配置后即可长期使用。如果你在配置过程中遇到任何问题,欢迎在评论区留言交流。
现在,去下载你喜欢的视频吧! 🎥

发表回复