超强B站接口手册:哔哩哔哩-API收集整理核心功能详解

超强B站接口手册:哔哩哔哩-API收集整理核心功能详解

你是否还在为找不到B站API文档而烦恼?是否在开发B站相关应用时遇到接口调用难题?本文将带你全面了解B站非官方API文档项目——哔哩哔哩-API收集整理的核心功能,让你轻松掌握各类接口的使用方法,解决开发中的痛点问题。读完本文,你将能够:了解项目整体架构、掌握签名认证机制、学会获取视频流和弹幕数据、熟悉用户相关接口调用,以及了解如何参与项目贡献。

项目logo

项目概述

哔哩哔哩-API收集整理项目旨在对B站WEB、APP、TV等客户端中散落在世界各地的野生API进行收集整理,研究使用方法并对其进行说明。项目运用了黑箱法、控制变量法、代码逆向分析、拆包及反编译法、网络抓包法等多种研究办法,为开发者提供了一份详尽的非官方API文档。

项目采用C/S结构,大多数接口为REST API和gRPC,少部分接口为WebSocket。REST API接口请求数据大多为url query表单或JSON,返回数据大多为JSON或Protobuf,强制使用https协议。需要注意的是,本项目探讨的对象是主站业务接口,官方开放平台和直播开放平台均不属于本项目范畴。

项目主页:README.md

核心功能模块

接口签名与验证

B站API接口调用需要进行签名验证,以确保请求的合法性和安全性。项目中详细介绍了多种签名方式,其中WBI签名是Web端常用的一种签名方式。

WBI签名自2023年3月起开始采用,表现在REST API请求时在Query param中添加了w_ridwts字段。WBI签名鉴权独立于APP鉴权与其他Cookie鉴权,是一种Web端风控手段。

WBI签名算法主要包括以下步骤:

  1. 获取实时口令img_keysub_key
  2. 打乱重排实时口令获得mixin_key
  3. 计算签名(即w_rid
  4. 向原始请求参数中添加w_ridwts字段

具体实现可参考Wbi 签名文档,其中提供了Python、JavaScript、Golang等多种语言的示例代码。

视频流获取

视频流接口是B站API中最常用的接口之一,用于获取视频的播放地址。B站视频为DASH或MP4流媒体,需调用取流API传参视频id获取。

清晰度标识

视频清晰度通过qn参数指定,不同的qn值对应不同的清晰度和帧率,如下表所示:

含义备注
6240P 极速仅MP4格式支持
platform=html5时有效
16360P 流畅
32480P 清晰
64720P 高清WEB端默认值
无720P时则为720P60
74720P60 高帧率登录认证
801080P 高清TV端与APP端默认值
登录认证
100智能修复人工智能增强画质
大会员认证
1121080P+ 高码率大会员认证
1161080P60 高帧率大会员认证
1204K 超清需要fnval&128=128fourk=1
大会员认证
125HDR 真彩色仅支持DASH格式
需要fnval&64=64
大会员认证
126杜比视界仅支持DASH格式
需要fnval&512=512
大会员认证
1278K 超高清仅支持DASH格式
需要fnval&1024=1024
大会员认证
129HDR Vivid大会员认证
视频流格式标识

视频流格式通过fnval参数指定,该参数为二进制属性位,如需组合功能需要使用OR运算结合以下数值:

含义备注
1MP4 格式仅H.264编码
与FLV、DASH格式互斥
16DASH 格式与MP4、FLV格式互斥
64是否需求HDR视频需求DASH格式
仅H.265编码
需要qn=125
大会员认证
128是否需求4K分辨率该值与fourk字段协同作用
需要qn=120
大会员认证
256是否需求杜比音频需求DASH格式
大会员认证
512是否需求杜比视界需求DASH格式
大会员认证
1024是否需求8K分辨率需求DASH格式
需要qn=127
大会员认证
2048是否需求AV1编码需求DASH格式
Web端获取视频流地址

Web端获取视频流地址的接口为:https://api.bilibili.com/x/player/wbi/playurl,请求方式为GET,认证方式为Cookie(SESSDATA),鉴权方式为Wbi签名。

接口参数包括:avidbvid(视频id)、cid(视频分Pid)、qn(清晰度)、fnval(格式)等。具体参数说明和返回值解析可参考视频流URL文档。

弹幕接口

B站弹幕是其特色功能之一,项目中详细介绍了弹幕的获取和解析方法。B站弹幕接口返回的数据格式为Protobuf,需要进行相应的解析。

获取实时弹幕

实时弹幕接口有多个,Web端常用的接口为https://api.bilibili.com/x/v2/dm/web/seg.sohttps://api.bilibili.com/x/v2/dm/wbi/web/seg.so(新接口,需要WBI认证)。

接口参数包括:type(弹幕类型,1为视频弹幕)、oid(视频cid)、segment_index(分包,6分钟一包)等。该接口只能返回普通弹幕和代码弹幕,BAS弹幕和互动弹幕需从弹幕元数据中获取。

Protobuf定义见:bilibili.community.service.dm.v1.DmSegMobileReply,其中包含了弹幕的id、出现时间、类型、字号、颜色、发送者信息、内容等详细字段。

具体的接口调用和Protobuf解析示例可参考protobuf弹幕文档。

如何开始使用

要开始使用哔哩哔哩-API收集整理项目,你可以按照以下步骤进行:

  1. 克隆项目仓库:git clone https://gitcode.com/GitHub_Trending/bi/bilibili-API-collect.git
  2. 阅读项目README.md,了解项目整体结构和基本说明
  3. 根据需求查阅相应的接口文档,如视频流接口docs/video/videostream_url.md、弹幕接口docs/danmaku/danmaku_proto.md
  4. 参考文档中的示例代码,实现接口调用和数据解析

参与贡献

哔哩哔哩-API收集整理项目是一个开源项目,欢迎各位开发者参与贡献。你可以通过以下方式参与项目:

  1. 发现并报告接口问题或文档错误
  2. 补充新的接口信息或完善现有接口文档
  3. 提供不同编程语言的接口调用示例

在参与贡献前,请阅读项目的贡献指南,了解贡献规范和流程。

注意事项

  1. 本项目遵守CC-BY-NC 4.0协议,禁止一切商业使用,如需转载请注明作者ID
  2. 请勿滥用本项目提供的接口和文档,仅用于学习和测试
  3. 利用本项目提供的接口、文档等造成不良影响及后果与项目维护者无关
  4. 由于项目的特殊性,可能随时停止开发或删档
  5. 上传任何信息时请注意脱敏,删去账户密码、敏感cookies等可能泄漏个人信息的数据

通过本文的介绍,相信你已经对哔哩哔哩-API收集整理项目有了全面的了解。赶快开始探索B站API的奥秘,开发属于你的B站应用吧!如果你在使用过程中遇到任何问题,欢迎在项目的Issue区提问或参与社区交流。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值