B站4K视频批量下载终极指南:用bilibili-downloader把会员内容永久存进硬盘
【免费下载链接】bilibili-downloaderB站视频下载,支持下载大会员清晰度4K,持续更新中项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader
上个月,朋友阿哲在地铁里跟我吐槽:他收藏的编程教程视频足有三十多集,通勤路上想看却总被网络信号卡成幻灯片;而真正让他难受的是另一件事——他是B站大会员,遇到特别喜欢的4K视频想存下来慢慢看,却发现这些高清内容只能在线播放,出了B站就一无所有。
我给他推荐了一个开源的Python工具:bilibili-downloader。它专门解决B站视频下载的难题,最吸引人的一点是支持下载大会员专属的4K画质,连充电才能看的独家内容也能一并保存。这周他自己折腾完,跑来跟我复盘了整个使用过程,我觉得很值得写下来分享给更多人。
为什么网上那些下载工具,偏偏搞不定4K和充电内容
在介绍工具之前,先说说你可能会踩的坑。市面上打着"B站下载器"旗号的东西不少,但大多只支持普通清晰度,遇到大会员专属的1080P+、4K画质就原形毕露。原因不复杂:B站的高清视频流和普通画质走的是完全不同的接口,需要携带你的登录凭证去换取播放地址,而很多工具压根不处理这一层。
bilibili-downloader 的解法很直接:它把"身份验证"这一步做进了工具里。你只需要在配置文件中填入自己账号的Cookie——相当于把你的B站"门票"递给程序——它就能以你的身份去请求视频数据,把会员权限内的最高画质全部拿到手。models/ 目录里那张清晰度对照表写得很清楚:从流畅360P一路排到超清4K,甚至包含了8K和杜比视界,能拿到什么级别,取决于你的账号权限和Cookie状态。
一个视频在下载时,到底发生了什么
理解了这个工具为什么能下载4K,你才会用得踏实。它的核心流程可以拆成三段,每一段都有对应的源码目录支撑。
第一步,程序根据你给的链接自动判断视频类型。普通视频走 strategy/default.py,番剧电影走 strategy/bangumi.py——它会在页面源码里找到window.__playinfo__这段数据,里面藏着这个视频所有可用的清晰度链接。
第二步,你会发现一个细节:B站的高清视频和音频是分开存储的,视频流和音频流是两条独立的链接。所以程序会同时发起两个下载任务,一边拉画面一边拉声音,速度几乎翻倍。文件先落在临时目录里。
第三步,等两边都下载完成,再用 ffmpeg 把画面和声音合并成一个完整的mp4文件,移动到输出目录。如果你的电脑没装ffmpeg,它也会自动改用 moviepy 完成合并,不会卡住你。
这是实际运行时你会看到的画面:每个视频先显示清晰度,然后音视频两条进度条并排推进,最后自动合成并清理临时文件
从拿到工具到第一次跑通,只需要做三件事
阿哲照着项目里的说明操作,整个配置过程大概花了十分钟。他的做法是这样的:
先克隆仓库并安装依赖:
git clone https://gitcode.com/gh_mirrors/bil/bilibili-downloader cd bilibili-downloader pip install -r requirements.txt然后打开 config.py 找到 COOKIE 那一行。获取自己Cookie的方式在浏览器里就能完成:登录B站,按F12打开开发者工具,切到"网络"标签页刷新一下,随便点开一个请求,在请求头里就能找到一长串以SESSDATA=开头的字段,整段复制过来替换掉默认值即可。
在浏览器开发者工具的网络面板里,找到请求头中的Cookie字段,把整段复制进配置文件
最后把想下载的视频链接填进 config.py 的 URL 列表,一行一个,然后运行:
python main.py接下来就交给它了。控制台会依次显示每个视频的标题、当前可用的清晰度,音视频两条进度条会告诉你实时速度和剩余时间。全部完成后还会打印一份下载摘要,成功几个、失败几个、保存在哪里,一目了然。
中途一定会踩的坑,我替你提前排掉
阿哲第一次跑的时候,差点在第一个视频上就翻车,这里有几个细节值得你提前知道。
Cookie不是永久的。它大约每30天失效一次,过期后工具会提示权限不足或者干脆拿不到高清链接。这不是bug,是B站的机制。我的做法是在手机日历里设了个每月提醒,到点就重新复制一次。你可以在 config.py 里看到项目作者专门写了注释提醒"需要定期(30天)替换"。
链接末尾的斜杠,直接决定画质。这是阿哲偶然发现的:有些视频链接是BVxxxxxx?p=2这种格式,没有斜杠,B站会把请求重定向,导致会员状态丢失,最终只能拿到480P。项目在 strategy/bilibili_executor.py 里专门有一段_normalize_url的处理,自动把链接规范成BVxxxxxx/?p=2的格式来避免重定向。所以就算你手滑复制了不带斜杠的链接,它也会帮你补救——但自己复制时养成带斜杠的习惯总归更稳妥。
下载失败的链接,它会帮你记住。如果某个视频因为网络波动没下完,程序会自动重试五次,实在失败会把链接写进一个 failed_urls.txt 文件,下次直接复制回 URL 列表就能重跑,不用自己记哪个没下完。
进阶玩法:把一整季课程批量搬回家
如果你只下载单个视频,其实用不上这个工具最值钱的能力。它真正的杀手锏是批量下载:URL 列表里可以同时放几十个链接,工具会限制并发数(默认最多同时下载2个视频),既保证了速度又不会把网络带宽和B站服务器逼得太紧。
分P视频的处理也相当聪明。像那种动辄三四十集的系列教程,你只需要把每集的链接按?p=1、?p=2、?p=3的格式依次填进列表,它会自动给每个分P的文件名加上_P1、_P2这样的后缀,保证互不覆盖。阿哲就是这么把一整季课程拖回硬盘的——晚上睡觉前把链接填进去,第二天早上醒来,三十多个文件整整齐齐躺在 output 目录里,文件名带清晰度标注,直接就能塞进手机或NAS慢慢看。
想自定义保存位置的话,改 config.py 顶部的两个路径就行:TEMP_PATH是下载过程中的临时目录,OUTPUT_PATH是成品的存放位置。把它指到外接硬盘或NAS上,等于给自己搭了个迷你版B站离线库。
最后,说点使用之前该想清楚的事
工具本身是免费开源的,项目还在持续更新,作者在说明里也标注了番剧、电影的支持仍在测试阶段,某些内容可能还需要大陆IP才能访问。但能力越大,责任也越大——我建议把它用在个人学习和离线备份上,比如下载自己买过会员的内容、收藏UP主的免费教程。下载下来的视频自己看没问题,但别拿去二次传播或商用,那是给创作者添堵,也会让这类工具更容易被平台针对。
把想看的4K视频存进自己的硬盘,摆脱网络和会员期的限制,这种感觉确实很爽。打开命令行,把第一个链接填进 config.py,你会很快体会到这种"随时想看就看"的自由。
【免费下载链接】bilibili-downloaderB站视频下载,支持下载大会员清晰度4K,持续更新中项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考