You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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支持,绕过年龄验证:
    1. 用浏览器登录已验证年龄的YouTube账号,用浏览器扩展(比如Chrome的「Get Cookies.txt LOCALLY」)导出YouTube站点的cookies,保存为cookies.txt文件,放到机器人的运行目录里。
    2. 在下载配置中加入cookiefile参数:
      ydl_opts = {
          'format': 'bestaudio/best',
          'postprocessors': [{
              'key': 'FFmpegExtractAudio',
              'preferredcodec': 'mp3',
              'preferredquality': '192',
          }],
          'cookiefile': './cookies.txt',  # 对应你的cookies文件路径
          'quiet': True,
      }
      

这样配置后,机器人就能借助你账号的验证信息,获取年龄限制视频的音频流了。注意不要泄露你的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 23:42:47