B站视频解析快速上手:用 bilibili-parse 把任意B站视频变成直链

发布时间:2026/8/14 13:02:33
B站视频解析快速上手:用 bilibili-parse 把任意B站视频变成直链 B站视频解析快速上手用 bilibili-parse 把任意B站视频变成直链【免费下载链接】bilibili-parsebilibili Video API项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parseB站视频解析这件事看起来简单做起来全是坑。想把 B 站的教程视频搬到自己的平台上或下载到手机里离线看直接复制分享链接根本不行——你拿到手的只是门牌号不是钥匙。而一个叫bilibili-parse的开源 PHP 项目恰好补上了这块拼图让我这个小白只花了十分钟就跑通了第一个解析请求。周五晚上老周卡在最后一步老周是朋友介绍给我认识的一位网校老师。他要做一个课后回放栏目把 B 站上公开的优质课程视频整合进自己的学习平台。按理说技术难度不高找到视频、拿到播放地址、存进数据库、前端套个播放器完事。结果他卡住了整整两天。不是不会写代码是拿不到视频地址。他把 B 站页面翻了个底朝天开发者工具里的网络面板打开又关闭盯着那一堆看不懂的加密参数发愁——真正的视频地址藏在一个套娃结构里浏览器只肯给播放器看不给人看。那些看似可行的路为什么全走不通在遇到 bilibili-parse 之前老周把市面上的方案试了个遍槽点一个比一个多录屏一节课 40 分钟录完还要剪辑转码1 小时视频要耗掉半天画质还缩水。浏览器插件装了好几个B站视频下载插件要么已失效要么点开弹出一堆广告。在线解析网站好不容易找到一个能用的结果高清要付费充值完又说该视频不支持。手动翻网络请求能拿到地址但地址带时效过几个小时就失效得重新翻一遍。这些方案有一个共同问题每次都要人工干预无法批量更没法集成进自己的系统。对于要批量同步几十节课的老周来说等于每天都有活儿要干。主角登场一个帮你跑腿的开源 PHP 小项目bilibili-parse 干的事一句话就能说清你给它一个视频编号它返回给你一条能直接播放或下载的直链。如果打个比方它像一个尽职尽责的代购——B站把真实视频地址锁在柜台后面普通人不让进而 bilibili-parse 知道该走哪个正规窗口、带上什么证件请求头、编号参数把地址替你取出来再原封不动交到你手里。它整个项目就 4 个文件核心逻辑全部集中在一个类里src/Bilibili.php ← 核心解析类所有魔法都在这 index.php ← 访问入口接收参数并输出结果 public/dplayer.html ← 现成的播放器演示页 public/readme.html ← 内置的使用说明页支持的东西比我预想的多得多不仅支持普通的 av 号 / bv 号还能解析番剧bangumi和付费课程cheese输出格式有三种flv、dash、mp4返回形式也有三种json给程序用、url直接拿直链、dplayer直接渲染一个播放器页面。三步跑通你的第一次解析上手门槛低到几乎不需要解释跟着走一遍就行。第一步准备好环境。一台装了 PHP 5.4 的服务器即可需要curl和openssl扩展——绝大多数虚拟主机都自带不用额外折腾。第二步拿到代码。在自己的网站目录下执行git clone https://gitcode.com/gh_mirrors/bi/bilibili-parse第三步访问。用浏览器打开你的域名下的index.php拼上参数。比如index.php?av14661594p1q64otypejson几秒钟后你会看到一坨 JSON里面藏着url字段——恭喜第一条 B 站视频直链到手了。就这么简单没有注册、没有 Token、没有密钥。参数一共就这几个记性不好也没关系访问入口页不带任何参数会自动展示一份说明文档参数作用备注av / bv / ep视频编号三选一普通视频用 av/bv番剧用 epp分集页码多 P 视频选集数默认 1q清晰度常见 16/32/64/80默认 32type视频类型video / bangumi / cheeseformat视频格式flv / dash / mp4otype输出形式json / url / dplayer三个真实场景三组改造前后工具本身是死的会用才是活的。老周后来又把这套东西玩出了花下面三个场景最典型。场景一网校批量同步课程视频改造前每加一节课老周要手动找地址、人工填入后台一节课折腾十几分钟还经常因为链接过期返工。改造后PHP 代码里直接调用核心类循环处理整个课程列表use Injahow\Bilibili; $bp new Bilibili(video); // 普通视频 $bp-bvid(BV1xx4y1x7zz) // 传视频编号 -page(1) // 第 1 集 -quality(64) // 高清 -format(mp4) // MP4 格式 -cache(true)-cache_time(3600); // 缓存 1 小时 $result json_decode($bp-result(), true); echo $result[url];代码链路是现成的bvid()设编号 → 类内部自动解析出cid→ 请求 B 站播放接口 →result()吐出直链。缓存一开同一条链接当天重复请求直接从本地读服务器几乎零开销。几节课的同步从半天人工变成了一键跑批。场景二通勤路上的离线学习改造前地铁里想复习白天的课视频打开就转圈一顿一卡2G 流量还扛不住。改造后otypeurl一行参数把直链用短信或二维码发到自己手机上在 Wi-Fi 环境点开就能下载。推荐用q32——兼顾画质和文件体积一部 40 分钟的课也就一两百兆装进口袋随时复习。场景三给网站加个视频播放器改造前想在自己的页面上播 B 站视频要么用 iframe 嵌原站带弹幕带评论样式控不住要么研究半天视频组件。改造后项目里自带现成的public/dplayer.html播放器页直接访问index.php?av14661594otypedplayer它会返回一个基于 DPlayer 的完整播放页面套上自己的域名就能用样式、画质都归你说了算。老周踩过的坑提前帮你避开新手最容易在这几个地方翻车提前打预防针坑一清晰度向上取整的误解。代码里的quality()有个小机关——你传50它会自动向下匹配到 48 或 32 这一档可用的值而不是直接报错。所以想要 80 高清直接传 80 就好别传个不上不下的数然后疑惑怎么没生效。坑二会员视频会明确告诉你没门。视频清晰度受限时返回结果是视频清晰度受限可能需要会员这不是 bug。真要解析会员画质可以给类传入你自己的cookie()但请务必只用于你确实有权限观看的内容。坑三dash 格式是分家的。formatdash返回的是独立的视频流和音频流两个地址需要播放器自行合并DPlayer 这类播放器可以处理但你要是拿它去下载单个文件会傻眼。想要单一文件老老实实用mp4。坑四开启缓存前先建好目录。文件缓存的路径是项目下的cache/cid/目录如果目录不存在或没有写权限缓存功能会静默失败不影响解析但缓存不生效。顺手 mkdir 一下最省心。坑五网络环境。服务器如果访问不了 B 站接口比如某些海外主机会解析失败。此时可以用proxy()方法给 curl 指定代理源码里这个口子是留好的。效果见证从找地址 20 分钟到跑批 3 秒老周把整套流程跑顺之后我拉了一下他后台的数据全站 30 节课程批量同步人工耗时从 10 小时 压缩到分钟级开启缓存后热门课程直链的重复请求命中本地缓存响应基本在毫秒级播放页从加载原站 iframe换成自建 DPlayer 后首屏速度明显提升页面里也不再出现无关推荐流。对一个只有 4 个文件的小项目来说这个投入产出比相当可观——它解决的不是写代码的问题而是省人力的问题。你的下一步行动清单如果你也在做视频站、课程平台或者单纯想找个靠谱的 B 站视频下载手段bilibili-parse 值得一试先把项目 clone 下来用文中的第一个 URL 跑通一次解析感受一下返回的 JSON 长什么样翻一翻src/Bilibili.php源码——不到 600 行注释清楚是很好的 PHP 学习样本尝试解析一个番剧typebangumi或课程typecheese体验不同编号体系的差异把解析逻辑接进你自己的项目加上错误处理和缓存策略让它变成你平台的一部分。如果你也用它做过什么有意思的事或者在哪一步卡住了欢迎留言告诉我。技术这东西一个人琢磨容易钻牛角尖聊着聊着就通了——你的下一个五分钟跑通说不定就在这篇文章的评论区里。【免费下载链接】bilibili-parsebilibili Video API项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻