Yt-dlp 实用小技巧:使用 cookies-from-browser 参数下载需要登录才能观看的视频

原始链接在: yt-dlp 实用小技巧:使用 cookies-from-browser 参数下载需要登录才能观看的视频 - 小众软件

yt-dlp 是一款非常著名的开源、在线视频下载工具,命令行方式,目前开发状态很活跃。它源自更加著名的 youtube-dl。今天介绍 2 个小技巧,可以更方便的自动获取浏览器 cookies,让那些需要登录才能观看的视频,在命令行下也非常容易下载。另外就是下载指定格式。@Appinn


感谢 @WM 的推荐。

yt-dlp

yt-dlp 项目在 GitHub,掠过安装,命令行工具比较烦的地方在于完全不知道自己输入的是什么,跟着来就好。两个技巧:

1. 下载指定格式

只需要加上 -F 参数:

yt-dlp -F https://www.youtube.com/watch?v=7SH4irC_xMs

然后你会看到所有检测到的格式:

找到你需要的格式序号,就是最前面那个数字,注意你的终端里不一定是绿色的,可能就是白色字体。

然后使用 -f 序号 下载:

yt-dlp -f 599 https://www.youtube.com/watch?v=7SH4irC_xMs

就能下载到指定格式了,这里是 m4a,仅音频。

2. 下载需要登录的视频

这个时候,往常会需要先导出 cookie,然后再下载,略麻烦不说,将 cookie 会让命令行更长,更头痛。

yt-dlp 有一个简单的参数:--cookies-from-browser,它的意思是从浏览器获取 cookies,就不需要导出了,让 yt-dlp 自己去获取,支持很多浏览器:brave, chrome, chromium, edge, firefox, opera, safari, vivaldi。

你只需要先在浏览器里登录,然后使用命令行下载即可。

以下为使用里 Firefox 的例子:

yt-dlp --cookies-from-browser firefox:/Users/appinn/Library/Application\ Support/Firefox/Profiles/12345.default-release-12345/ https://www.bilibili.com/video/BV1Rp4y187y5/

你需要找到浏览器的 Profile 文件夹位置,对于不同的系统和浏览器,都是不同的,举几个例子:

Windows & Edge:

yt-dlp.exe --cookies-from-browser edge:"C:\Users\appinn\AppData\Local\Microsoft\Edge\User Data\Profile 1" -F https://www.bilibili.com/video/xxxx

注意 Windows 下需要用引号把路径包起来。

Windows & Chrome

yt-dlp.exe --cookies-from-browser chrome:"C:\Users\scavi\AppData\Local\Google\Chrome\User Data\Default" -F https://www.bilibili.com/video/xxxx

macOS & Firefox

yt-dlp --cookies-from-browser firefox:/Users/appinn/Library/Application\ Support/Firefox/Profiles/xxxxx.default-release-123455/ https://www.bilibili.com/video/xxxx/

macOS & Edge

yt-dlp --cookies-from-browser edge:/Users/appinn/Library/Application\ Support/Microsoft\ Edge/Default/ -F https://www.bilibili.com/video/BV1Rp4y187y5/

注意 macOS 下,如果路径中有空格,需要转义,即使用 \ 来代替空格。

当你在命令行中看到下面的提示:

[Cookies] Extracting cookies from edge
[Cookies] Extracted 102 cookies from edge

就代表正确了,否则还需要确认路径。不过这已经比导出 cookie 这件事简单多了。

大概就是这样了。


后记:本文实际上很早就写了一半,后来荒废了。前两天在群里有人问如何下载 B 站视频,瞬间就获得了好几种下载方式。而提问的同学一直在疑惑:为什么我下载的视频文件播放起来颜色不对呢?于是换各种方式下载。

最后发现,是自己的播放器有问题了!

但能一下子收集到这么多下载方式,也是蛮不错的 😂

1 Like

在空格前插入一个斜杠?将空格替换成斜杠?

看了一下开发者工具中显示的是’\ ’

我选择自己用 edit this cookie 抓 cookie保存到文件夹,还是感谢楼主分享。

我写过一个 UC 脚本专门用于调用 yt-dlp.exe,一键下载很方便
Firefox 一键下载网页视频方案 VideoBtn

转义,+[Space]=[Space]吧 我看的是上面的代码示例

1 Like

推荐一个 yt-dlp-gui,非常好用

1 Like

功能确实挺全的,可惜测试ytb连接的时候,挂上代理分析半天闪退了…几次都一样

还是直接命令行吧,80m的外壳也是让我膈应的点

作者把整个 .net runtime 打包进去了。。。
我拿 vs 自己编译了个不带 .net 的,大概 27m

因为我的yt-dlp是放在远程服务器上的,我一直在找一个能把cookie自动同步过去并转为Netscape formatted的方法,如果大家有什么好方法请戳我~

最后用浏览器插件和自写的JS脚本完成了这个效果,有空了整理完分享出来

提一点,用chrome浏览器如果不知道自己浏览器的个人资料文件夹在哪里,可以在通过在地址栏里输入chrome://version/查看相关信息。

另外,chrome更新后对cookies文件有保护机制,你的chrome在打开状态下,别的程序是无法读取Cookies文件的,所以上面说的使用--cookies-from-browser参数需要在关闭浏览器的情况下使用,还是挺烦人的。

我个人还是用--cookies参数,先用EditThisCookie导出cookies,记住要先到扩展设置里面选择cookies的导出格式为“Netscape HTTP Cookie File”,然后导出cookie到本地的一个文本文件中,然后再用命令:yt-dlp --cookies "<your path>\cookies.txt" <url>