尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

bilibili-parse 上手:一个 URL 拿到 B 站视频直链,PHP 部署与参数避坑指南

bilibili-parse 上手:一个 URL 拿到 B 站视频直链,PHP 部署与参数避坑指南 bilibili-parse 上手一个 URL 拿到 B 站视频直链PHP 部署与参数避坑指南【免费下载链接】bilibili-parsebilibili Video API项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse朋友想把 B 站上一个系列教程嵌入自己的自建网站卡在了拿不到视频真实播放地址这一步。最后帮他装好的是bilibili-parse——一个把 B 站视频接口封装成一个 URL 即可调用的 PHP 解析工具不用登录、不用填表单浏览器地址栏就能拿到可播放的视频直链。下面按我实际的踩坑顺序带你从部署一路走到会用。5 分钟跑通最小可运行的部署这个项目依赖很轻PHP 5.4 以上装了 Curl 和 OpenSSL 扩展即可不需要数据库也不需要 Composer。git clone https://gitcode.com/gh_mirrors/bi/bilibili-parse把克隆下来的文件原样上传到 PHP 服务器本地调试也可以用php -S localhost:8000起个内置服务器项目结构一共就三层index.php入口负责接收参数和返回结果src/Bilibili.php核心解析逻辑封装了对 B 站接口的全部请求public/dplayer.html现成的播放器演示页部署完直接发一个请求试试curl http://你的域名/index.php?av23902252p1q64otypejson几秒钟后会返回类似下面的 JSONurl为方便展示已截断签名参数{ code: 0, quality: 64, url: http://cn-hbwh-cmcc-bcache-05.bilivideo.com/upgcxcode/...flv?e...deadline... }code为 0 表示解析成功url就是可以直接拿去播放或下载的视频直链。到这里一个能用的 B 站视频解析服务就跑起来了。一个 URL 看懂全部参数怎么选才不会糊把请求拆开看index.php认的参数并不复杂常用的就这几个参数含义默认可选值av / bv视频编号二选一即可-任意有效 av 号 / bv 号ep番剧或课程的剧集编号-任意有效 ep 号p分 P 视频的集数1≥1 的整数q请求清晰度3216 / 32 / 64 / 80 等type内容类型videovideo / bangumi / cheeseformat输出格式flvflv / dash / mp4otype返回形式jsonjson / url / dplayer参数之间是独立可组合的比如分 P 的番剧可以这样写/index.php?ep345646p2q80otypejson两点值得注意。第一q 只是期望值不是保证值。解析时会先看视频实际支持哪些清晰度如果你要 80 但视频最高只有 64会做向下修正或者直接返回清晰度受限的提示。第二av 和 bv 是同一视频的两种编号给一个就行cid作为补充参数也能直接指定属于进阶用法普通场景用不上。三种输出对应三种用法otype决定了结果长什么样实际对应三个场景json默认返回完整解析结果适合程序集成你在服务端拿到url字段再做后续处理。url不包 JSON直接吐一个纯文本直链适合在脚本里快速取值。curl http://你的域名/index.php?av23902252otypeurl # 直接输出一行 https://... 直链dplayer不走解析流程直接把public/dplayer.html这个页面返回给浏览器。页面加载 DPlayer 播放器后自己再去请求一次formatmp4的 json 结果并开始播放相当于附赠了一个开箱即用的播放器演示页。format的选择则和画质与平台挂钩flv单文件直链最省事、兼容性最好mp4走的是网页端 html5 通道清晰度限制更严格dash返回的是视频和音频两条独立地址适合追求自适应码率的场景但要自己处理音画合并新手不建议首选。为什么缓存能让重复请求提速每次解析都要向 B 站接口发请求同样的视频反复解析显然是浪费。src/Bilibili.php内置了缓存能力入口文件里默认是注释掉的按需打开即可// 开启文件缓存缓存 1 小时 $bp-cache(true)-cache_time(3600); // 服务器支持 APCu 扩展时可换成内存缓存 $bp-cache(true, apcu)-cache_time(3600);开启后同一视频的解析结果会按清晰度_格式存到cache/cid/目录下的 JSON 文件里比如仓库里的23902252_64_flv.json。缓存有效期内第二次请求不再触碰 B 站接口直接读本地文件返回响应时间几乎为零对高并发或反复访问同一视频的场景提升非常明显。注意cache_time最小值是 60 秒想设更短是不生效的。新手最容易踩的四个坑坑一清晰度受限报错。返回视频清晰度受限可能需要会员不代表工具坏了而是该视频的高画质需要大会员。把q降到 32 或 16 重试即可。坑二直链拿到了播放却失败。B 站的视频地址有防盗链校验直链需要带Referer: https://www.bilibili.com/请求头才能正常播放。自己写播放器时记得加上否则会看到无法加载之类的报错。这也是 DPlayer 页面里特意设置了meta referrer为never的原因。坑三文件缓存不生效。文件缓存要求cache/cid/目录存在且可写很多服务器上传时没带上空目录或者目录权限不足导致缓存静默失败。开启缓存前先确认目录状态。坑四项目依赖 B 站公开接口接口会变。这是所有此类解析工具绕不开的上游风险。B 站接口结构一旦调整返回的字段可能解析不到导致获取信息失败。遇到这种情况先确认不是自己参数写错再考虑升级或等待作者跟进。什么时候该用、什么时候别用它bilibili-parse 适合这些场景个人网站或博客嵌入 B 站视频、学习 PHP 如何封装第三方 API、内部工具里做视频地址转换——它单文件、无依赖、一个类搞定所有逻辑阅读和二次开发成本都很低。它不适合这些场景把付费内容大会员番剧、课程打包分发这既有版权风险接口层也过不去高频批量爬取下载容易被风控也违背工具作者的使用预期对解析稳定性有严格 SLA 的生产系统因为依赖方B 站接口你控制不了。作为一个小而美的开源项目它把解析 B 站视频这件事压缩到了极致——一条 URL、一个类、三分钟部署。如果你恰好有把 B 站内容搬到自己的地盘的需求它会是成本最低的起点而把它的边界清晰度限制、防盗链、上游接口变动提前看清楚用起来才不会措手不及。【免费下载链接】bilibili-parsebilibili Video API项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表