使用yt-dl下载youtube字幕时报错需要登录的解决方法
使用
yt-dlp --write-auto-sub --sub-lang en --convert-subs srt https://
命令下载youtube自动生成的CC字幕报错ERROR: [youtube] xxxxxxxx: Sign in to confirm you’re not a bot. This helps protect our community. Learn more
遇到 “Sign in to confirm you’re not a bot” 错误是因为 YouTube 需要您验证身份以防止机器人访问。为了解决这个问题,您可以尝试以下几种方法来绕过这个限制并成功下载视频及其字幕。
方法 1:使用 Cookies 文件
最可靠的方式是通过提供已登录的浏览器的 Cookies 文件,让 yt-dlp
模拟您已经登录的状态。以下是详细步骤:
-
从浏览器获取 Cookies:
- 打开您已登录 YouTube 的浏览器(如 Chrome 或 Firefox)。
- 安装 EditThisCookie(Chrome 插件)或 Cookie Quick Manager(Firefox 插件)等 Cookie 管理插件。
- 打开插件,找到 YouTube 的 Cookies。
- 导出 Cookies 文件到
.json
格式。
-
在
yt-dlp
中使用 Cookies 文件:- 下载并保存 Cookies 文件后,运行以下命令:
1
yt-dlp --cookies /path/to/your/cookies.json --write-auto-sub --sub-lang en --convert-subs srt https://www.youtube.com/watch?v=xxxxxxx
通过这种方式,
yt-dlp
会使用您的登录状态,避免了需要验证为机器人。
方法 2:通过登录验证
如果您不想使用 Cookies 文件,可以通过命令行让 yt-dlp
登录 YouTube 账户:
-
配置登录信息:
1
yt-dlp -u YOUR_USERNAME -p YOUR_PASSWORD --write-auto-sub --sub-lang en --convert-subs srt https://www.youtube.com/watch?v=xxxxxxx
这样,
yt-dlp
会直接使用提供的用户名和密码登录,绕过机器人验证。
方法 3:使用代理或 VPN
如果上述方法仍然无法绕过验证,您可以尝试通过代理或 VPN 来切换 IP 地址,避免 YouTube 认为您是机器人。可以使用以下命令在 yt-dlp
中设置代理:
1 | yt-dlp --proxy "http://127.0.0.1:10809" --write-auto-sub --sub-lang en --convert-subs srt https://www.youtube.com/watch?v=xxxxxxx |
记得将 127.0.0.1:10809
替换为您所使用的代理地址和端口。
方法 4:禁用 CAPTCHA 验证
yt-dlp
提供了一个选项来忽略 CAPTCHA 验证,虽然这种方法并不总是有效,但在某些情况下能绕过验证:
1 | yt-dlp --no-check-certificate --write-auto-sub --sub-lang en --convert-subs srt https://www.youtube.com/watch?v=xxxxxxx |
总结
- 最推荐使用 Cookies 文件,这是避免机器人验证最稳妥的方式。
- 如果您不愿意手动获取 Cookies,可以尝试使用
-u
和-p
参数来直接提供 YouTube 的登录凭据。 - 代理和 VPN 可以作为补充手段,在有 IP 限制时使用。
为什么下载的字幕几乎每句都有重复,是因为转成srt吗?另外,此命令同时还将视频文件也下载了下来,我只需要下载字幕即可
1. 字幕重复问题
出现字幕重复的问题,可能是因为 YouTube 的自动生成字幕在某些情况下会有多个时间段和相同内容。这种情况在 yt-dlp
下载时,有时会将重复的字幕内容一起下载。转成 .srt
格式后,可能会出现这种多余的重复条目。
解决方法:
可以通过对字幕进行处理,去除重复内容。您可以使用 Aegisub 或其他字幕编辑工具进行去重,或使用 Python 脚本对 .srt
文件进行去重操作。
例如,使用以下 Python 脚本进行简单的去重:
1 | import re |
2. 只下载字幕
如果您只需要下载字幕,而不想下载视频,可以使用 --skip-download
参数。这样,yt-dlp
只会下载字幕文件而不会下载视频内容。
示例命令:
1 | yt-dlp --proxy "http://127.0.0.1:10809" --write-auto-sub --sub-lang en --convert-subs srt --skip-download https://www.youtube.com/watch?v=xxxxxxx |
这将仅下载字幕并跳过视频下载。
总结:
- 字幕重复问题:可能是自动字幕的格式问题,您可以手动去重或使用脚本进行去重。
- 只下载字幕:使用
--skip-download
参数来跳过视频下载,确保只下载字幕文件。
使用Editthiscookie插件下载字幕报错
1. 确认 Cookies 文件的有效性
您可以尝试更新 Cookies 文件,并确保它是正确导出的。可以通过以下方式重新导出 Cookies:
- 使用 EditThisCookie 或 Cookies.txt 插件从浏览器导出最新的 Cookies(在options中设置为netscape格式并保存为txt)。
- 使用 浏览器登录 YouTube,然后重新导出 Cookies 确保有效。
2. 确保 yt-dlp
是最新版本
由于 YouTube 经常更新其 API 和反爬机制,yt-dlp
需要定期更新才能应对这些变化。请确保您使用的是最新版本:
1 | python -m pip install --upgrade yt-dlp |
3. 尝试使用 --geo-bypass
参数
有时 YouTube 会根据地区限制内容,您可以尝试添加 --geo-bypass
来绕过地理限制:
1 | yt-dlp --geo-bypass --cookies c:\cookies.txt --sub-langs en --write-auto-sub --skip-download h |
最后好用的命令:
yt-dlp --cookies c:\cookies.txt --write-auto-sub --sub-lang en --skip-download --no-post-overwrites https://www.youtube.com/watch?v=xxxxxx