bilibili-parse 使用教程:免费获取B站高清视频源地址,一篇完整攻略
【免费下载链接】bilibili-parsebilibili Video API项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse
去年秋天,我在一趟没有网络的绿皮火车上,第一次被"看得到却存不下"的视频逼疯了。也是从那天起,我开始认真研究B站视频解析,最终认识了完全免费开源的 bilibili-parse——一个能把播放页背后的真实视频源地址直接递到你手里的 PHP 工具。
坦白说,最初我没抱太大期望。市面上号称"一键下载"的小工具太多了,点进去要么下载按钮是假的,要么偷偷改你浏览器主页,还有的干脆先收一笔"会员费"。可 bilibili-parse 给我的第一印象就很不一样:它自己不存文件、也不中转内容,只负责向B站官方接口问一句"这个视频的源地址在哪",然后把答案原样带回来。整个过程干净得像一个诚实守信的信使。
这篇文章就沿着我自己的使用轨迹写:先说说存不下视频到底卡在哪,再讲我怎么把它跑起来、拿到第一个高清直链,最后聊聊它那些藏得比较深的能力。如果你也一直被"离线观看"这件事困扰,希望这份 bilibili-parse 教程能帮你少走弯路。
先弄明白痛点:B站视频的真实地址,为什么普通用户拿不到
很多人以为,视频能在网页上播放,就等于"这个文件已经在我电脑里了"。其实不是。你看到的画面,是播放器实时从B站服务器拉取数据流的结果,它只是"借用"了这份数据。真正的源地址被藏在一堆参数后面:需要携带正确的视频编号、清晰度编码、签名信息,还要和每一集的编号一一对应——对非技术用户来说,这几乎是一座绕不出去的迷宫。
我试过的那些"捷径",要么是装来路不明的客户端,要么是爬到一半弹出"服务器繁忙"。折腾了整整一个晚上,我甚至开始怀疑,是不是根本没有一条正当的路可走。
其实路是有的,只是缺一个正经的工具来指路。bilibili-parse 的核心逻辑集中在src/Bilibili.php一个文件里,入口则是根目录下的index.php,所有参数都走 URL。你给它一个视频编号,它替你发起请求、带回真实地址,整个过程就像一层窗户纸,一捅就破——只是此前没人告诉我纸糊在哪。
上手教程:一行命令完成部署,第一次解析就拿到高清直链
bilibili-parse 的环境要求低得让人意外:PHP 5.4 以上,装好 Curl 和 OpenSSL 两个扩展就能运行——Curl 负责发请求,OpenSSL 负责处理加密数据,都是 PHP 生态里再常见不过的组件。换句话说,一台普通的虚拟主机就绰绰有余,项目还以 MIT 协议开源,想怎么用都行。
把项目拉到自己服务器上,只需要一行命令:
git clone https://gitcode.com/gh_mirrors/bi/bilibili-parse
然后整个目录放进网站目录,在浏览器里输入这样一段地址:
https://你的域名/index.php?bv=BV1R14y1g7aH&q=64&format=mp4&otype=json
回车之后,屏幕上会返回一小段 JSON,里面清清楚楚写着当前解析到的清晰度、可选清晰度列表,以及那个我盼了半天的真实播放地址。那一刻的感觉,很像在黑暗的房间里终于摸到了电灯开关。
拿到链接之后,玩法立刻多了起来。把otype改成url,返回的就不再是 JSON,而是可以直接丢进任意下载器的一行地址;改成dplayer,它会自动调用项目内置的网页播放器(public/dplayer.html),适合想在自家网站上嵌入播放的开发者。清晰度支持 16、32、64、80 四档,数字越大画质越高,格式则有 flv、mp4、dash 三种可选,按需挑选即可。
进阶使用:番剧课程都能解析,缓存与清晰度问题一次说清
如果你以为 bilibili-parse 只能解析普通UP主的视频,那就小看它了。它的type参数支持 video(普通视频)、bangumi(番剧)和 cheese(课程)三种类型;番剧用ep编号指定具体剧集,多P合集用p参数指定第几集。我后来试着用ep参数解析一部番剧的某一集,再把格式换成 dash,连分流出来的音轨和画面轨地址都能单独拿到,自由度相当高。
这里插一个我朋友的故事。老周是个常年在外的自由摄影师,信号时有时无,偏偏最爱在B站上看摄影教学视频。以前他只能等有网的时候硬看,后来我把这套工具介绍给他,他把每周要看的视频编号整理成一份清单,解析出 mp4 直链后批量下载到硬盘,按"构图、后期、器材"分好文件夹,走到哪看到哪。他说这工具最难得的一点是克制——它只递地址,不替你决定什么,下载成功与否、存到哪里,都是你自己的事。
用得越久,越能发现一些贴心的细节。项目预留了缓存机制,热门视频解析一次后结果会被存下来,一小时内再有相同请求就直接返回缓存,又快又省资源;如果服务器装了 APCu 扩展,还能把缓存从文件版换成内存版。再比如很多人会遇到的"清晰度受限"提示,多数情况是那个清晰度需要会员权限,这时在请求里带上你自己的 cookie 通常就能解决。这些能力都封装在src/Bilibili.php的公共方法里,想改逻辑、加功能,从这儿下手最顺手。
最后说一句我一直放在心上的话。bilibili-parse 解析出来的地址来自B站官方服务器,它本身不存储任何内容,也不该成为搬运他人作品的工具。把解析到的视频用于个人学习、离线收藏,是它被设计出来的初衷;尊重创作者、遵守平台规则,则是使用它最基本的底线。工具是中性的,它最终是帮手还是麻烦,取决于拿它的人。
回头再看那个在火车上对着进度条干瞪眼的傍晚,我庆幸自己最终找到了一条正经的路。如今每次出远门,我都会先花五分钟把想看的视频解析到本地,再安心上路。如果你也被"明明看得见,偏偏留不住"困扰过,不妨亲手部署一次——十分钟足够你验证:原来离线观看,真的可以这么简单。
【免费下载链接】bilibili-parsebilibili Video API项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考