bilibili 使用 yt-dlp cookie下载 视频

直接读取edge cookie,出错

导出cookie到txt,yt-dlp读取txt下载视频, 成功

以下是关于如何在 Microsoft Edge 浏览器中为 yt-dlp 下载 Bilibili 视频提供 cookies 的详细指南,结合你之前提到的 yt-dlp 官方 FAQ 和 Bilibili 高画质下载的需求。内容以中文呈现,重点说明使用 Edge 浏览器的 cookies 的两种方法:自动提取(--cookies-from-browser)和手动导出(--cookies),并提供具体步骤和注意事项。


为什么需要 Cookies?

  • Bilibili 限制未登录用户只能下载低画质(≤480p)。
  • 高画质(720p、1080p、4K)或会员内容需要登录验证。
  • Edge 浏览器的 cookies 存储了你的 Bilibili 登录信息,yt-dlp 可通过这些 cookies 模拟登录状态以访问高画质视频。

方法 1:使用 --cookies-from-browser 从 Edge 自动提取 Cookies

这是最简单的方式,yt-dlp 可以直接从 Edge 浏览器提取 cookies,无需手动操作。

步骤:

  1. 确保在 Edge 浏览器中已登录 Bilibili

    • 打开 Microsoft Edge,访问 www.bilibili.com 并登录你的 Bilibili 账号。
    • 确认登录状态有效(建议在过去 30 分钟内访问过 Bilibili 并刷新页面,确保 cookies 未过期)。
  2. 关闭所有 Edge 浏览器窗口

    • Edge 浏览器运行时可能会锁定 cookies 文件,导致 yt-dlp 报错(如 PermissionError: [Errno 13] Permission denied)。
    • 确保关闭所有 Edge 窗口(包括最小化的窗口),但无需退出 Edge 的后台进程。
  3. 运行 yt-dlp 命令
    使用以下命令下载 Bilibili 视频,yt-dlp 将自动从 Edge 提取 cookies:

    yt-dlp -f "bestvideo+bestaudio" --cookies-from-browser edge https://www.bilibili.com/video/BVxxxxxxxx
    
    • 参数说明
      • -f "bestvideo+bestaudio":选择最佳视频和音频流并合并(需要 ffmpeg 已安装)。
      • --cookies-from-browser edge:从 Microsoft Edge 提取 cookies。
      • https://www.bilibili.com/video/BVxxxxxxxx:替换为实际视频的 BV 号(如 BV1xxxxxxxx)。
    • 输出:将下载 1080p 或更高画质的视频(取决于你的账号权限,如是否为 Bilibili 大会员)。
  4. 验证下载

    • 检查输出文件是否为高画质(可在播放器中查看分辨率)。
    • 如果仅下载到 480p,可能是 cookies 未正确提取或账号无高画质权限。

注意事项:

  • 支持的浏览器yt-dlp 支持从 Edge、Chrome、Firefox、Safari 等浏览器提取 cookies,Edge 的标识符为 edge

  • Cookies 位置:Edge 存储 cookies 在 C:\Users\<Your_User_Name>\AppData\Local\Microsoft\Edge\User Data\Default\Network\Cookies(Windows),但你无需手动访问此文件,yt-dlp 会自动处理。

  • 常见错误

    • 错误:PermissionError: [Errno 13] Permission denied

      • 原因:Edge 正在运行,锁定了 cookies 文件。
      • 解决:关闭所有 Edge 窗口,或尝试重启电脑后运行命令。
    • 错误:Requested content is not available

      • 原因:Cookies 无效或未登录。
      • 解决:在 Edge 中重新登录 Bilibili,刷新页面后重试。
  • Windows 特有问题:Edge 的 cookies 数据库可能因同步或加密导致提取失败,建议确保 Edge 是最新版本(可通过 edge://settings/help 更新)。


方法 2:手动导出 Edge 的 Cookies 并使用 --cookies

如果 --cookies-from-browser 失败(如遇到权限问题或跨设备使用),可以手动导出 Edge 的 cookies 文件并提供给 yt-dlp

步骤:

  1. 在 Edge 中登录 Bilibili

    • 打开 Edge,访问 www.bilibili.com 并登录。
    • 确保登录状态有效(刷新页面以更新 cookies)。
  2. 安装 Cookies 导出扩展

    • 在 Edge 浏览器中安装一个支持导出 Netscape 格式 cookies 的扩展,推荐以下工具:
    • 安装后,打开扩展,访问 Bilibili 页面,点击扩展图标,选择导出 cookies。
  3. 导出 Cookies 文件

    • 使用扩展导出 cookies,保存为 cookies.txt(确保是 Netscape 格式)。
    • 保存路径:将 cookies.txt 保存在运行 yt-dlp 的目录,或记住其完整路径(如 C:\Users\YourName\Desktop\cookies.txt)。
    • 验证格式:打开 cookies.txt,确保文件包含类似以下内容(Bilibili 的 cookies 通常包含 bili_jctDedeUserID 等字段):
      # Netscape HTTP Cookie File
      .bilibili.com  TRUE    /   FALSE   1720000000  bili_jct    xxxxxxxx
      .bilibili.com  TRUE    /   FALSE   1720000000  DedeUserID  xxxxxxxx
      
  4. 运行 yt-dlp 命令
    使用以下命令下载视频,指定 cookies 文件:

    yt-dlp -f "bestvideo+bestaudio" --cookies C:\Users\YourName\Desktop\cookies.txt https://www.bilibili.com/video/BVxxxxxxxx
    
    • 参数说明
      • --cookies C:\Users\YourName\Desktop\cookies.txt:指定 cookies 文件路径(Windows 示例)。Linux/Mac 示例:--cookies ~/cookies.txt
      • 如果 cookies.txt 在当前目录,可用 --cookies cookies.txt
    • 示例(Linux):
      yt-dlp -f "bestvideo+bestaudio" --cookies ~/cookies.txt https://www.bilibili.com/video/BV1xxxxxxxx
      
  5. 验证下载

    • 检查是否下载到高画质(如 1080p)。
    • 如果失败,检查 cookies 文件是否包含 Bilibili 的登录信息(bili_jct 等)。

注意事项:

  • Netscape 格式yt-dlp 要求 cookies 文件为 Netscape 格式(以 # Netscape HTTP Cookie File 开头),否则会报错(如 'cookies.txt' does not look like a Netscape format cookies file)。

  • Cookies 有效期:Bilibili 的 cookies 通常有效数小时到数天,过期后需重新导出(建议每次下载前在 Edge 中刷新 Bilibili 页面)。

  • 路径问题(Windows)**:

    • 使用正确路径分隔符(\/)。
    • 如果路径包含空格,用双引号括起来(如 --cookies "C:\My Folder\cookies.txt")。
  • 安全性cookies.txt 包含敏感登录信息,避免分享或存储在不安全位置。


推荐命令示例

使用 Edge 自动提取 Cookies 下载 1080p 视频带字幕:

yt-dlp -f "bestvideo+bestaudio" -S "res:1080" --embed-subs --sub-langs "zh-CN" --cookies-from-browser edge --merge-output-format mp4 https://www.bilibili.com/video/BV1xxxxxxxx
  • 说明
    • -S "res:1080":优先选择 1080p 画质。
    • --embed-subs --sub-langs "zh-CN":嵌入中文字幕(需要 ffmpeg)。
    • --merge-output-format mp4:输出 MP4 格式。

使用手动导出的 Cookies 下载播放列表:

yt-dlp --playlist-items 1-5 -f "bestvideo+bestaudio" --cookies C:\Users\YourName\Desktop\cookies.txt --merge-output-format mp4 https://www.bilibili.com/video/BV1xxxxxxxx
  • 说明
    • --playlist-items 1-5:下载播放列表中的前 5 个视频。
    • --cookies:使用手动导出的 cookies 文件。

高级选项和故障排除

1. 提高画质

  • 尝试会员画质
    如果你是 Bilibili 大会员,可添加 --extractor-args 提取更高码率或 4K:
    yt-dlp -f "bestvideo+bestaudio" --extractor-args "bilibili:try_look=1" --cookies-from-browser edge https://www.bilibili.com/video/BV1xxxxxxxx
    

2. 调试问题

  • 查看详细日志
    如果下载失败,添加 -v 查看日志:

    yt-dlp -v -f "bestvideo+bestaudio" --cookies-from-browser edge https://www.bilibili.com/video/BV1xxxxxxxx
    
  • 检查 Cookies

    • 手动导出的 cookies.txt 应包含 bili_jctDedeUserID 等字段。
    • 若使用 --cookies-from-browser,确保 Edge 已登录且 cookies 未被清除。

3. 常见错误及解决

  • 错误:PermissionError: [Errno 13] Permission denied

    • 原因:Edge 正在运行,锁定了 cookies 文件。
    • 解决:关闭所有 Edge 窗口,或重启电脑后重试。
  • 错误:does not look like a Netscape format cookies file

    • 原因:Cookies 文件格式错误。
    • 解决:确保使用 Netscape 格式导出,推荐使用 Get cookies.txt LOCALLY
  • 仅下载 480p

    • 原因:Cookies 无效或账号无高画质权限。
    • 解决:在 Edge 中重新登录 Bilibili,检查是否为会员账号。
  • Cookies 自动恢复

    • Edge 可能从云同步或缓存恢复 cookies(如 Azure 登录场景)。若不需要,清除 Edge 的所有 cookies(Settings > Privacy, search, and services > Clear browsing data)。

4. 确保 yt-dlp 和 Edge 最新

  • 更新 yt-dlp

    yt-dlp -U
    

    或通过 pip

    python -m pip install -U yt-dlp
    
    • 避免旧版的安全漏洞(如 CVE-2023-35934)。
  • 更新 Edge

    • 打开 edge://settings/help,检查更新以确保 cookies 提取兼容性。

参考来源

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容