Discord.py音乐机器人使用youtube_dl无法播放年龄限制视频的问题咨询
解决Discord.py音乐机器人播放年龄限制YouTube视频的问题
我之前开发Discord音乐机器人时也碰到过一模一样的问题——youtube_dl对年龄限制视频的验证机制确实很棘手。不过有几个经过验证的可行方案,分享给你:
方案1:替换为yt-dlp(推荐)
youtube_dl已经很久没更新了,而yt-dlp是它的活跃分支,修复了大量兼容性问题,包括对年龄限制视频的更好支持。
步骤:
- 先替换依赖:
pip uninstall youtube-dl && pip install yt-dlp - 代码里只需要把导入语句改一下,大部分逻辑不用动:
# 原来的 import youtube_dl 改成 import yt_dlp as youtube_dl - 最关键的是添加cookies支持,绕过年龄验证:
- 用浏览器登录已验证年龄的YouTube账号,用浏览器扩展(比如Chrome的「Get Cookies.txt LOCALLY」)导出YouTube站点的cookies,保存为
cookies.txt文件,放到机器人的运行目录里。 - 在下载配置中加入cookiefile参数:
ydl_opts = { 'format': 'bestaudio/best', 'postprocessors': [{ 'key': 'FFmpegExtractAudio', 'preferredcodec': 'mp3', 'preferredquality': '192', }], 'cookiefile': './cookies.txt', # 对应你的cookies文件路径 'quiet': True, }
- 用浏览器登录已验证年龄的YouTube账号,用浏览器扩展(比如Chrome的「Get Cookies.txt LOCALLY」)导出YouTube站点的cookies,保存为
这样配置后,机器人就能借助你账号的验证信息,获取年龄限制视频的音频流了。注意不要泄露你的cookies文件,否则别人可能登录你的YouTube账号。
方案2:模拟浏览器请求(无需登录,但成功率有限)
如果不想用cookies,可以试试让yt-dlp模拟浏览器的请求头,部分宽松的年龄限制视频可能可以绕过:
ydl_opts = { 'format': 'bestaudio/best', 'postprocessors': [{ 'key': 'FFmpegExtractAudio', 'preferredcodec': 'mp3', 'preferredquality': '192', }], 'user_agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36', 'no_check_certificate': True, 'quiet': True, }
这个方法的成功率不高,但胜在不用登录账号,适合测试一些非严格限制的视频。
另外,记得定期更新yt-dlp,因为YouTube的反爬机制一直在变:
pip install --upgrade yt-dlp
内容的提问来源于stack exchange,提问作者Vasiliy Peshko
相关产品推荐
相关产品推荐

