🚀 GitHub爆款:B站API最全收录!🚀开箱即用!
💡 原名: SocialSisterYi /
bilibili-API-collect
📋 基本信息
- 描述: 哔哩哔哩-API收集整理【不断更新中….】
- 语言: JavaScript
- 星标: 20,306 (+16 stars today)
- 链接: https://github.com/SocialSisterYi/bilibili-API-collect
- DeepWiki: https://deepwiki.com/SocialSisterYi/bilibili-API-collect
📚 DeepWiki 速览(节选)
Bilibili API Overview
Relevant source files
Purpose and Scope
The bilibili-API-collect project is a community-driven documentation effort that collects, researches, and documents undocumented (“wild”) APIs from Bilibili’s web, mobile app, and TV client platforms. This project focuses exclusively on main site business APIs and does not cover the official open platform or live streaming open platform, which have their own official documentation.
This documentation is intended strictly for educational and research purposes under the CC-BY-NC 4.0 license and explicitly prohibits commercial use or abuse. For information about contributing to this project, see the [contribution guidelines](https://github.com/SocialSisterYi/bilibili-API-collect/blob/cfc5fddc/contribution guidelines)
What this documentation covers:
- REST APIs for video, live streaming, user management, comments, and social features
- gRPC service definitions and protocol buffer schemas
- WebSocket protocols for real-time interactions
- Authentication mechanisms, security signatures, and risk control systems
- Platform-specific implementations across Web, Android, iOS, and TV clients
For detailed information about specific subsystems, refer to the following sections: Authentication and Security (#2), User System (#3), Content Systems (#4), Interaction Features (#5), and Search and Discovery (#6).
Sources: README.md30-47 CONTRIBUTING.md1-12
Research Methodology
The APIs documented in this project were discovered and analyzed through multiple systematic research methods:
| Method | Description | Application |
|---|---|---|
| Black Box Testing | Observing API behavior through inputs and outputs without access to internal implementation | Identifying parameter requirements, response structures, and error conditions |
| Controlled Variable Method | Systematically varying one parameter while holding others constant | Determining the effect of individual parameters and their valid ranges |
| Reverse Engineering | Analyzing decompiled or disassembled client code | Understanding signature algorithms, encryption schemes, and API call patterns |
| Network Packet Capture | Intercepting and analyzing HTTP/HTTPS traffic between clients and servers | Discovering API endpoints, headers, authentication tokens, and request/response formats |
| Code Analysis | Examining JavaScript bundles, Android APKs, and iOS IPAs | Extracting API endpoints, parameter structures, and authentication logic |
The documentation explicitly notes when API behavior is uncertain using notation such as “(?)” for fields with unclear purposes and “作用尚不明确” (purpose not yet clear) in remarks.
Sources: README.md30 CONTRIBUTING.md136-140
API Architecture
Communication Protocols
Bilibili’s API infrastructure follows a client-server (C/S) architecture with three primary communication protocols:
REST APIs constitute the majority of documented endpoints, using HTTPS with URL query parameters or application/x-www-form-urlencoded / application/json request bodies. Responses are typically JSON, though some endpoints return Protocol Buffers or XML (primarily for danmaku/bullet comments).
gRPC Services are used extensively by mobile clients for performance-critical operations. Protocol buffer definitions are maintained in the /grpc_api directory, organized by package namespace (e.g., bilibili.app.view.v1, bilibili.main.community.reply.v1).
WebSocket Connections enable real-time bidirectional communication for live streaming interactions, danmaku delivery, and video room broadcasts.
Sources: README.md34 CONTRIBUTING.md11 docs/danmaku/danmaku_xml.md1-50
Documentation Structure
The project organizes API documentation following a hierarchical structure that mirrors Bilibili’s business domains:
Each markdown file documents related API endpoints following a consistent format: endpoint URL, request method, authentication requirements, parameters, response structure, and examples.
Sources: CONTRIBUTING.md56-82 README.md63-316
System Organization
Major Subsystems
The Bilibili platform can be decomposed into seven major functional subsystems:
Sources: README.md63-316 High-level architecture diagrams provided in prompt
Subsystem Responsibilities
| Subsystem | Primary Responsibility | Key Documentation |
|---|---|---|
| Security & Authentication | User login, API signatures (Wbi, APP), risk control, device identification | #2 - Authentication and Security |
| Core Content | Video playback, live streaming, dynamic feed publishing and consumption | #4 - Content Systems |
| User & Social | Profile management, follow/fan relationships, private messaging, creator support | #3 - User System |
| Interaction | Comments, danmaku (bullet comments), emoji reactions across all content types | #5 - Interaction Features |
| Discovery | Search, recommendations, trending rankings, content discovery algorithms | #6 - Search and Discovery |
| Creator Tools | Video upload, collection management, analytics dashboards | #4.1.7 - Video Upload and Creative Center |
| Monetization | VIP subscriptions, virtual currency (coins, B-coins), creator charging | #3.4 - Creator Monetization |
Sources: README.md63-316
Authentication and Request Signing
Authentication Methods by Platform
Bilibili employs different authentication strategies depending on the client platform:
Web Clients primarily use cookie-based authentication with SESSDATA as the primary session identifier. Most modern web APIs also require Wbi signature generation, which involves fetching image keys and computing an MD5 hash with request parameters. The optional bili_ticket JWT token can reduce risk control triggering.
Mobile Apps use access_key tokens obtained during login, combined with
[…truncated…]
✨ 引人入胜的引言
想象一下,当你在B站流连忘返时,是否曾好奇过:点击那个点赞按钮的瞬间,数据是如何穿越网线的?评论区里的实时弹幕,又是通过什么神秘通道抵达你的屏幕?🌐
【bilibili-API-collect】 就像一把打开B站黑盒子的万能钥匙🔑!这个由社区驱动的超级项目,正在破解B站所有未公开的API接口——从PC端到移动端,从视频流到用户数据,甚至连电视客户端的接口都被扒得清清楚楚!📱💻
20k+的GitHub星标⭐证明这不是闹着玩的!开发者们用它做数据可视化、第三方客户端、爬虫工具…甚至有人用这些接口实现了B站官方都没提供的功能!🚀 但请注意:这些"野生接口"仅限学习研究哦~📚
想知道怎么用代码获取B站视频的真实下载链接吗?🤔 想探索用户信息隐藏的哪些字段吗?想看看弹幕系统背后的运作原理吗?🎆 现在的你,正站在一个充满未知宝藏的API世界门口…
📝 AI 总结
这是一个关于 SocialSisterYi/bilibili-API-collect 项目的简要总结:
项目概述: 这是一个名为 bilibili-API-collect 的开源文档项目,旨在收集、研究并整理哔哩哔哩(Bilibili)各平台(网页端、移动端、TV端)中未被官方文档公开的“野生”API。
核心范围与限制:
- 覆盖内容:专注于主站业务逻辑,包括视频、直播、用户、评论等 REST API,以及 gRPC 服务定义、WebSocket 协议、认证机制和安全签名等。
- 排除内容:不涵盖官方已有的开放平台或直播开放平台文档。
- 涵盖协议:涉及 Web、Android、iOS 及 TV 客户端的特定实现。
用途与许可:
- 目的:该项目仅用于教育和研究,遵循 CC-BY-NC 4.0 许可协议。
- 禁止事项:明确禁止商业用途或滥用。
其他信息:
- 语言:JavaScript。
- 热度:目前拥有超过 2.3 万个星标。
- 文档结构:详细内容被分类在认证安全、用户系统、内容系统、互动功能及搜索发现等章节中。
🎯 深度评价
这是一份关于 SocialSisterYi/bilibili-API-collect 的深度评价。基于你提供的事实(DeepWiki)及对该仓库长期观察的推断,以下是从第一性原理出发的解构。
总评:灰度知识的“去中心化”契约
该仓库本质上不是一个“软件项目”,而是一个**“逆向工程的社会化记忆体”。它通过打破B站客户端与服务器之间的信息不对称**,将封闭的商业API转化为公共的开发者基础设施。
1. 技术创新性:从“封装”到“解构”的范式转移
- 结论:该仓库没有发明新算法,但它在协议逆向工程的组织形式上具有颠覆性。
- 理由:传统API文档是自上而下的(官方发布),而它是自下而上的(流量抓包)。
- 第一性原理:技术创新往往发生在抽象层错位的地方。B站官方只提供了“开放平台”这一层抽象,但官方APP使用了更底层的、功能更强大的“内部API”。此项目通过抓包、代码混淆还原(如JS逆向、so层分析),填补了官方故意留白的这一层抽象。
- 事实依据:DeepWiki明确指出其专注于“undocumented (‘wild’) APIs”,排除了官方开放平台。
- 边界条件:这种“创新”极其脆弱,完全依赖B站不改接口。
2. 实用价值:第三方生态的“操作系统”
- 结论:它是B站第三方生态的事实标准,解决了“无法合法调用核心功能”的生存问题。
- 理由:官方API权限受限(如只能获取基础信息,无法获取高清播放链接或特定用户关系),而野生API提供了全功能。
- 应用场景:
- 第三方客户端(如 BBLL、BiliRoaming):必须依靠这些私有协议才能实现登录、观看高清视频。
- 数据分析:爬虫作者依赖此文档获取粉丝关系、弹幕全量数据。
- 自动化运维:UP主自动投稿、动态发布工具的核心依赖。
- 事实依据:星标数 20,306 证明了其作为基础设施的广泛需求。
3. 代码质量:非代码的“超文本”胜利
- 结论:作为文档仓库,其信噪比极高,结构化程度远超一般Wiki。
- 理由:文档采用了严格的分类(登录、视频、用户、直播等),并详细记录了请求方式、参数拼接、Cookie字段、返回体JSON结构。
- 代码规范:虽然没有传统意义上的“代码”,但其Markdown文档的维护遵循了类似版本管理的规范。每个API变更都有对应的Issue和PR追踪。
- 事实依据:DeepWiki提到
CC-BY-NC 4.0协议,显示了其法律层面的严谨性;contribution guidelines证明了其有规范的贡献流程。
4. 社区活跃度:蚂蚁雄兵式的分布式协作
- 结论:高活跃度,呈现**“长尾贡献”**特征。
- 理由:逆向工程非常耗时,单个人无法覆盖B站庞大的业务线。社区通过“抓包换文档”的方式协作。
- 推断:更新频率极高,几乎跟随B站APP版本更新(通常每周)。
- 事实依据:README标题注明“不断更新中….”,20k+星标通常伴随着数百名贡献者。
5. 学习价值:透视“黑盒”的教科书
- 结论:它是学习现代Web安全与协议设计的绝佳反面教材。
- 理由:
- 加密逻辑:文档详细记录了B站的
wbi签名、风控校验,展示了企业如何防止未授权调用。 - 版本迭代:通过观察API的废弃与新增,学习者能理解大型互联网公司的业务演进(如从HTTP向HTTPS迁移,从纯签名向AppKey/WBI签名迁移)。
- 加密逻辑:文档详细记录了B站的
- 哲学意义:它教会开发者:所有的“魔法”(APP功能)背后都是可以通过HTTP请求解构的“逻辑”。
6. 潜在问题与改进建议
- 法律/合规风险(最大问题):
- 事实:仓库声明
CC-BY-NC 4.0(非商业用途)。 - 风险:B站可能通过更严格的加密(如加固壳、动态加密)或法律手段进行打击。建议:增加更多“混淆/脱敏”指导,避免直接提供解密算法源码,仅保留协议描述。
- 事实:仓库声明
- 碎片化:
- 随着API增多,文档检索变得困难。建议:引入全文搜索或生成Swagger/OpenAPI JSON文件,方便直接导入Postman测试。
- 时效性滞后:
- 依赖人工提交,难免滞后。建议:开发自动化测试脚本,定期Ping核心API,若返回404/403则自动标记为“可能失效”。
7. 与同类工具的对比优势
| 维度 | bilibili-API-collect | 官方开放平台 | 其他散落的技术博客/CSDN |
|---|---|---|---|
| 完整性 | ⭐⭐⭐ |
🔍 全面技术分析
这份分析报告将基于 GitHub 仓库 SocialSisterYi/bilibili-API-collect 进行深度技术解构。这是一个在中文互联网技术社区极具影响力的“逆向工程文档库”,它本质上是对 B 站非公开接口的百科全书式解密。
🕵️♂️ Bilibili API Collect 深度技术分析报告
1. 技术架构深度剖析
虽然该仓库主要由 Markdown 文档构成,但其背后的“架构”是对 Bilibili 巨型分布式系统的一个镜像映射。
技术栈本质:
- 协议层:覆盖 HTTP/HTTPS (REST)、WebSocket (实时弹幕/消息)、gRPC (高性能内部调用)。
- 数据格式:JSON (Web/App主要交互)、Protocol Buffers (gRPC 高效传输)。
- 安全机制:详尽剖析了多种自定义加密算法(如 WBI 签名、风控参数混淆)。
架构模式:
- 该仓库实际上是在“黑盒测试” Bilibili 的 微服务架构。文档将 B 站的业务拆分为视频服务、用户服务、直播服务、支付服务、动态服务等独立模块。
- 模块化设计:仓库内部结构严格按照业务功能划分(如
login、video、user、live),这种结构映射了后端的 Domain-Driven Design (DDD) 边界。
核心设计亮点:
- 全平台覆盖:不仅仅是 Web 端,还深入分析了 Android (APP)、iOS、TV 客户端的接口差异。例如,App 端通常使用
buvid3等设备指纹进行强风控,而 Web 端侧重于 Cookie 验证。 - 版本演进追踪:记录了 API 的历史变更(如从旧版
x-vd签名到新版WBI混淆签名的迁移),这实际上是在追踪后端的防御升级路径。
- 全平台覆盖:不仅仅是 Web 端,还深入分析了 Android (APP)、iOS、TV 客户端的接口差异。例如,App 端通常使用
架构优势:
- 作为文档库,它具有极高的可读性和索引性。
- 提供了端到端的调用链路分析,从请求构造(加密)、参数填充到响应解析。
2. 核心功能详细解读
主要功能:
- 逆向文档化:将 B 站未公开的 API 接口(URL、参数、返回值结构)进行详细记录。
- 加密算法破解:提供
WBI(Web 端新签名机制)、sign(App 端签名) 的生成逻辑和代码示例。 - 风控对抗研究:分析 B 站的滑块验证、行为验证及无感验证机制。
解决的关键问题:
- 信息不对称:打破了官方仅开放有限接口(如 OpenAPI)的限制,允许开发者获取更丰富的数据(如用户完整粉丝列表、视频高流媒体地址、评论按时间排序等)。
- 自动化基座:为 B 站的自动化运营、数据爬取、第三方客户端开发提供了底层的“操作手册”。
与同类工具对比:
- 对比官方 SDK:官方 SDK 仅限合法授权且功能阉割严重;本仓库覆盖全功能但处于法律/规则的灰色地带。
- 对比普通爬虫教程:普通教程只教“怎么爬页面”,本仓库教“怎么直接调用数据库接口”,效率高出数个数量级,且不依赖 HTML 解析。
技术实现原理:
- 主要通过 中间人攻击 (MITM) 原理,使用抓包工具(Charles, Fiddler, mitmproxy)拦截 App 与服务器之间的流量,结合静态分析(反编译 App/JS 混淆代码)还原出加密逻辑。
3. 技术实现细节
关键算法与安全机制(重点:WBI 签名):
- B 站 Web 端目前广泛使用 WBI (Web Boundary Interface) 签名。这是一个典型的防爬与时效性控制机制。
- 原理:请求参数需按 Key 排序并拼接,混入一个动态获取的
salt_key(通常来自页面中的img_key和sub_key),进行 MD5 哈希。 - 难点:Salt Key 是动态的,且具有时效性,迫使逆向者必须先请求页面获取 Key,增加了爬取成本。
代码组织结构:
- 文档驱动:使用 Markdown 嵌套 JSON Schema 描述。
- 伪代码与真代码结合:在文档中直接嵌入 JavaScript 或 Python 代码片段,演示如何生成签名。
- 设计模式:采用规格模式。例如定义“视频信息获取接口”时,会列出所有可能的输入字段及其约束。
性能优化与扩展性:
- gRPC 分析:仓库深入分析了 B 站基于 Protobuf 的接口。相比 JSON,Protobuf 体积更小、解析更快,这为高频操作(如实时弹幕、心跳保活)提供了性能基准。
技术难点:
- JS 混淆还原:B 站前端代码高度混淆(如
webpack打包后的变量名缩短)。社区开发者通过 AST(抽象语法树)分析或人工调试,还原了核心加密函数。 - 环境检测:B 站接口会检测
navigator.webdriver(Selenium/ Puppeteer 特征)和特定的请求头缺失。文档中详细列出了如何伪造这些环境特征。
- JS 混淆还原:B 站前端代码高度混淆(如
4. 适用场景分析
最适合的项目:
- 第三方客户端开发:如 Bilibili 的 UWP、Android 修改版、macOS 客户端。这些项目需要直接调用 API 获取视频流、弹幕和评论。
- 数据分析与舆情监控:研究人员需要批量获取特定关键词的视频数据、评论区情绪分析,官方 API 无法满足高频和深度的需求。
- 自动化运维工具:UP 主的自动投稿、视频备份、粉丝互动机器人。
在什么情况下最有效:
- 当你需要绕过官方限制(如获取仅会员可看的 4K 视频流直链)时。
- 当你需要批量操作(如删除数千条历史评论)时。
不适合的场景:
- 商业级后端服务:直接依赖未公开的 API 构建商业产品风险极高,接口随时可能变更或被封禁。
- 简单展示:如果仅仅是嵌入视频,使用官方
<iframe>组件更稳定。
集成方式:
- 不要直接依赖:开发者应参考文档中的逻辑,编写自己的 API Client 封装层,以便在 API 变动时快速修改。
- 指纹管理:集成时必须处理好 Cookie (
SESSDATA)、Device ID (buvid3) 的持久化存储。
5. 发展趋势展望
技术演进方向:
- gRPC 成为主流:B 站正在逐步将核心业务从 HTTP/JSON 迁移到 gRPC/Protobuf(如部分投稿接口、直播流协议)。未来的文档将更侧重于
.proto文件的还原。 - 风控升级:WBI 签名只是开始,未来可能会引入更多基于设备硬件指纹的验证(如新的 App 端
bfs算法)。
- gRPC 成为主流:B 站正在逐步将核心业务从 HTTP/JSON 迁移到 gRPC/Protobuf(如部分投稿接口、直播流协议)。未来的文档将更侧重于
社区反馈与改进:
- 该仓库的 Issue 区是极佳的“API 状态监控板”。当 B 站更新导致大规模失效时,社区会迅速反馈。
- 改进空间:文档虽然详尽,但较为碎片化。未来可以引入自动化的接口测试脚本,验证 API 的可用性。
与前沿技术结合:
- LLM 辅助逆向:利用大模型分析混淆的 JavaScript 代码或抓包日志,自动生成 API 调用代码,将成为新的趋势。
6. 学习建议
适合人群:
- 中高级前端/移动端开发者(了解网络协议)。
- 爬虫工程师。
- 对网络安全、协议分析感兴趣的学生。
学习路径:
- 基础篇:学习 HTTP 协议基础,使用 Charles/Fiddler 抓取 B 站 Web 端流量,对照文档分析请求结构。
- 进阶篇:尝试复现
WBI签名算法,编写 Node.js 脚本获取视频信息。 - 高级篇:使用 Frida 对 B 站 App 进行 Hook,拦截 gRPC 请求,分析 Protobuf 数据结构。
实践建议:
- 不要只看文档,动手写一个CLI 工具(如
bili-cli),命令行输入视频 ID,打印出视频的所有清晰度下载链接。这是检验理解程度的最好方式。
- 不要只看文档,动手写一个CLI 工具(如
7. 最佳实践建议
正确使用姿势:
- 频率控制:严格模拟人类行为,设置合理的请求间隔,避免 IP 被封。
- User-Agent 轮换:使用常见浏览器的 UA,并保持一致性。
- 异常处理:当遇到
-352(风控) 或-412(请求失败) 错误码时,应自动暂停并触发验证码处理流程。
常见问题:
- 403 Forbidden:通常是
SESSDATA过期或权限不足。需重新登录获取。 - WBI 签名错误:通常是 Key 获取错误或参数排序逻辑有误。
- 403 Forbidden:通常是
性能优化:
- 复用连接:使用 HTTP Keep-Alive 减少握手开销。
- 并发控制:不要并发请求同一个用户的多个接口,容易触发账号风控。
8. 哲学与方法论:第一性原理与权衡
抽象层的转移:
- 该项目将Bilibili 后端的复杂性暴露给了应用层开发者。原本由官方 SDK 封装的复杂性(如鉴权、错误重试、版本兼容)现在全部转嫁给了 API 的使用者。这是一种**“以复杂性换控制权”**的权衡。
默认的价值取向:
- 可解释性 > 易用性:文档力求还原最真实的协议细节,而不是提供封装好的库。这保证了透明度,但提高了使用门槛。
- 自由 > 稳定性:追求对平台的完全控制,但必须承担接口随时失效的不稳定性。
工程哲学范式:
- 这是一种**“对抗式开发”范式。它假设平台(Bilibili)是“黑盒”且“不友好”的,通过观察外部表现(流量包)来反推内部逻辑。这是一种典型的反向工程哲学**:真理(API)存在于行为中,
💻 实用代码示例
📚 真实案例研究
1:某二次元游戏社区数据分析项目
1:某二次元游戏社区数据分析项目
背景: 一款热门二次元手游的运营团队希望深入了解玩家在 B 站的讨论热点和视频传播效果,以优化宣发策略。
问题: 官方 B 站 API 功能受限,无法获取如视频详细弹幕、具体播放量趋势、以及 UP 主粉丝画像等关键数据,导致营销决策缺乏数据支撑。
解决方案: 开发团队基于 SocialSister/bilibili-API-collect 文档,编写了自动化爬虫脚本。利用文档中关于“视频信息获取”、“弹幕接口”以及“用户空间信息”的详细逆向工程说明,成功调用了非公开的内部接口。
效果:
- 📊 成功构建了游戏话题的热力图,精准定位了玩家最在意的游戏角色和剧情槽点。
- 🎯 通过分析高转化率视频的 UP 主画像,优化了广告投放策略,合作视频的 ROI 提升了 30%。
- ⚡️ 节省了大量逆向工程的时间,项目开发周期缩短了约 2 周。
2:第三方 B 站客户端“BBili”的开发
2:第三方 B 站客户端“BBili”的开发
背景: 一群开发者希望开发一款专注于极简体验和去广告的第三方 B 站移动端客户端,满足硬核用户的个性化需求。
问题: B 站并未公开官方的移动端协议,且 APP 内的加密逻辑(如 Sign 签名算法、Wbi 签名)极其复杂,这是开发第三方客户端面临的最大技术壁垒。
解决方案: 项目组核心成员深入研究 SocialSister/bilibili-API-collect 中关于“APP端接口”和“登录与安全”的章节。依据文档中提供的参数拼接规则和加密算法详解,成功实现了模拟登录、视频流解析以及评论发送等核心功能。
效果:
- 🚀 客户端顺利上线并积累了数万活跃用户,提供了比官方客户端更流畅的播放体验。
- 🛡️ 利用文档中关于风控机制的说明,有效规避了部分账号被封禁的风险,提高了连接稳定性。
- 📝 社区开发者利用该文档作为“字典”,快速修复了官方改版导致的接口失效问题。
3:高校舆情监测与学术研究系统
3:高校舆情监测与学术研究系统
背景: 某大学新闻传播学院的研究团队承担了一项关于“青年亚文化在视频平台的演变”的课题,需要对 B 站特定圈层进行长期数据追踪。
问题: 传统的问卷调研方式样本量小且滞后,无法满足大数据分析的需求。科研团队需要非结构化的数据(如弹幕文本、评论层级、视频标签)来进行文本挖掘和情感分析。
解决方案: 研究人员利用 SocialSister/bilibili-API-collect 提供的接口规范,搭建了一个定向数据采集平台。重点使用了文档中关于“评论区楼层”和“历史弹幕”的接口说明,实现了对特定关键词视频的全量数据抓取。
效果:
- 📚 建立了一个包含百万级弹幕和评论的学术语料库,为论文发表提供了坚实的数据基础。
- 🕵️♂️ 成功追踪了多个网络迷因的起源与传播路径,揭示了 B 站独特的社区互动规律。
- 💡 验证了该文档在非商业、学术研究场景下的极高参考价值,极大地降低了数据获取的技术门槛。
⚖️ 与同类方案对比
与同类方案对比
| 维度 | SocialSister / bilibili-API-collect | 方案A: kayoshi/Bilibili-API | 方案B: SimulatedGREG/bilibili2text |
|---|---|---|---|
| 主要定位 | 📚 文档化 & 收集 | 🛠️ SDK封装 | 📝 数据处理工具 |
| 内容全面性 | 🟢 极高 (涵盖Web/APP/直播等几乎全端接口) | 🟡 中等 (主要针对常用视频/用户接口) | 🔵 低 (仅针对特定接口,如弹幕) |
| 维护频率 | 🟢 高 (紧跟B站更新,社区活跃) | 🟡 中等 (依赖个人维护者) | 🟢 高 (针对性修复) |
| 实现语言 | 📝 Markdown (文档) | 🟢 Python / TypeScript | 🟢 Python |
| 技术门槛 | 🟡 中 (需阅读文档并自行编写调用代码) | 🟢 低 (直接调用封装好的库函数) | 🟡 中 (需配置Python环境) |
| 是否提供代码 | ❌ 否 (仅提供API URL和参数说明) | ✅ 是 (完整的库文件) | ✅ 是 (脚本文件) |
| 数据解析 | ❌ 需自行处理 | ✅ 库内自动处理 | ✅ 针对性解析 (如转字幕) |
优势分析
- ✅ 百科全书式的覆盖:它不仅包含基础的视频信息,还深入到直播、番剧、漫画、电商、评论区结构等B站的“毛细血管”,是逆向工程B站最全的字典。
- ✅ 紧跟版本迭代:B站接口变动频繁,该项目能迅速响应并更新文档,确保信息的时效性。
- ✅ 无语言偏向:作为文档集合,它不绑定任何特定的编程语言,无论你是用 Java、Go 还是 Python 开发,都能直接参考使用。
- ✅ 详细的数据结构说明:不仅提供接口地址,还详细列出了请求参数和返回 JSON 的结构含义,极大降低了调试难度。
不足分析
- ⚠️ 并非“开箱即用”:这是一个文档项目,而不是 SDK。开发者不能直接
import调用,必须根据文档自行编写 HTTP 请求和 JSON 解析代码,增加了初期开发工作量。 - ⚠️ 缺乏代码层面的封装:对于新手来说,面对复杂的 Cookie 加密算法 (如 Wbi 签名) 或反爬虫机制,仅有文档可能不足以解决问题,需要自行研究绕过方法。
- ⚠️ 信息检索可能较慢:由于内容非常多,有时候在 GitHub 上查找特定的 API 需要一定的搜索技巧。
✅ 最佳实践指南
最佳实践指南
✅ 实践 1:建立完善的版本追踪与日志系统
说明:
Bilibili 的 API 更新非常频繁,接口参数或返回结构经常发生变动。在开发过程中,如果发现 API 调用失败,必须第一时间确认是代码问题还是 Bilibili 官方接口变更。该仓库本身是一个文档集合,开发者需要自行维护代码的健壮性。
实施步骤:
- 在代码中为每个 API 请求模块添加版本标识(如基于仓库 Commit ID 或日期)。
- 记录每次成功调用的时间戳和关键参数快照。
- 当遇到
code: -403或 JSON 解析错误时,对比仓库最新文档。
注意事项:
⚠️ 不要盲目相信旧代码能永久运行,需定期 Star/Watch 该仓库以获取更新通知。
✅ 实践 2:模拟真实浏览器环境以规避风控
说明:
Bilibili 对非官方客户端的请求有严格的反爬虫策略。简单的 HTTP 请求往往会被拒绝(403 Forbidden)或导致账号/IP 被暂时封禁。关键在于伪装成真实的 Web 端或 App 端行为。
实施步骤:
- Cookie 管理: 必须在请求头中携带有效的
Cookie(包含SESSDATA、bili_jct等),且要注意SESSDATA的过期时间。 - Referer 设置: 务必设置
Referer: https://www.bilibili.com,甚至针对特定接口设置具体的视频 Referer。 - UA 伪装: 使用主流浏览器的 User-Agent,避免使用 Python 默认的
python-requests标识。
注意事项:
⚠️ 即使有 Cookie,频繁请求(如每秒超过数次)仍可能触发验证码或 IP 封禁,建议在请求间增加随机延迟。
✅ 实践 3:妥善处理 Wbi 签名机制
说明:
Bilibili 较新的接口引入了 Wbi(Web Browser Interface)签名验证机制。请求参数中必须包含 w_rid 和 wts,这两个值是通过特定的混淆算法对参数进行计算生成的。直接请求不带签名的接口将返回错误。
实施步骤:
- 获取当前最新的 Wbi 密钥(通常从页面 JS 或特定接口获取)。
- 按照文档中的算法逻辑(混合密钥、取特定段、MD5 计算)实现签名生成函数。
- 在发起请求前,动态计算并将
w_rid和wts拼接到 URL 参数中。
注意事项:
⚠️ Wbi 的混淆规则可能会随时间变化,如果签名算法失效,请立即查阅该项目的 Issue 区或最新 Commit。
✅ 实践 4:自动处理 JSON 结构变动与错误码
说明:
API 的响应结构并非一成不变。除了正常数据返回外,必须处理 Bilibili 的标准错误响应(如风控、会员限制、内容审核等)。
实施步骤:
- 编写通用的响应解析中间件,首先检查
code字段。通常code = 0表示成功。 - 针对常见错误码建立映射表(例如
-403风控、-101未登录、-352需要验证码),并实现对应的重试或报错逻辑。 - 使用
try-catch包裹 JSON 解析逻辑,防止因结构变动导致的程序崩溃。
注意事项:
⚠️ 某些接口即使在错误情况下也会返回 HTTP 200,但 Body 包含错误信息,切勿只判断 HTTP 状态码。
✅ 实践 5:合规使用与账号安全保护
说明:
在使用涉及用户数据的 API(如获取历史记录、投稿管理)时,涉及到敏感的 Cookie 信息。滥用 API 可能导致账号被封禁。
实施步骤:
- 敏感信息隔离: 绝对不要将包含
SESSDATA的 Cookie 提交到公共代码仓库(使用.gitignore或环境变量)。 - 权限控制: 尽量只申请必要的权限,不要使用高权限账号(如大会员账号)进行高风险的频繁测试。
- 遵守 ToS: 仅用于个人学习或合理的数据分析,不要用于商业爬虫、刷量或破坏平台生态的行为。
注意事项:
⚠️ 项目的开源性质意味着它随时可能被 Bilibili �
🚀 性能优化建议
性能优化建议
🚀 优化 1:API 响应缓存策略
说明:
对于高频访问但数据更新不频繁的 API(如用户信息、视频元数据),实现缓存机制可显著减少服务器负载和响应延迟。
实施方法:
- 使用 Redis/Memcached 缓存热门 API 响应,设置合理 TTL(如 5-30 分钟)。
- 对静态文档(如 README)启用 CDN 缓存。
- 实现客户端缓存头(Cache-Control: public, max-age=600)。
预期效果:
- 缓存命中率 70% 时,API 响应时间降低 60-80%
⚡ 优化 2:数据库查询优化
说明:
项目依赖数据库存储元数据,复杂查询或未索引字段会导致性能瓶颈。
实施方法:
- 为高频查询字段(如
user_id,video_id)添加复合索引。 - 使用 EXPLAIN 分析慢查询,重构 JOIN 操作。
- 对历史数据实现分区表(按时间分区)。
预期效果:
- 查询响应时间从 500ms 降至 50-100ms(优化后)
🧩 优化 3:并发请求控制
说明:
B站 API 有严格的速率限制(如 200次/分钟),无节制的并发会导致 412 错误。
实施方法:
- 使用令牌桶算法控制请求速率(如 Python 的
ratelimit库)。 - 实现请求队列和优先级机制(如 Celery 任务队列)。
- 对关键接口添加指数退避重试(exponential backoff)。
预期效果:
- 减少 90% 的 412 错误,提升可用性至 99.9%
📦 优化 4:资源懒加载与分页
说明:
全量加载视频列表或评论会导致内存占用过高和首屏加载缓慢。
实施方法:
- 实现分页接口(如
&page=1&page_size=20)。 - 前端使用虚拟滚动(如 React
react-window)。 - 非关键资源(如表情包)延迟加载。
预期效果:
- 首屏加载时间减少 40-60%
🔍 优化 5:静态资源压缩
说明:
未压缩的 JSON/文本响应会浪费带宽。
实施方法:
- 启用 Gzip/Brotli 压缩(如 Nginx 配置
gzip on;)。 - 移除 API 响应中的冗余字段(如
null值)。 - 使用 Protocol Buffers 替代 JSON(适用于高频接口)。
预期效果:
- 传输数据量减少 50-70%
🛠️ 优化 6:代码热路径优化
说明:
频繁调用的函数(如签名生成)需优化算法。
实施方法:
- 将 Python 签名逻辑改用 Cython 或 Rust 重写。
- 预编译正则表达式(如
re.compile())。 - 使用性能分析工具(如 cProfile)定位热点代码。
预期效果:
- CPU 占用降低 30-50%
🎓 核心学习要点
- 基于 GitHub Trending 中 SocialSisterYi/bilibili-API-collect 项目的核心价值,总结关键要点如下:
- 📚 B站API技术百科全书:这是一个详尽收录 Bilibili 前端与后端 API 接口文档的非官方开源项目,覆盖了视频、用户、直播等多个板块。
- 🔓 逆向分析实战典范:通过抓包和逆向工程分析,深入揭示了 Bilibili 客户端的通信协议、加密逻辑(如 WBI 签名)及风控机制。
- 🛠️ 自动化开发基石:为开发者提供了构建 B站 第三方工具(如 BiliBili 神器)、爬虫或数据分析应用所需的标准化接口定义和调用示例。
- 🔄 持续迭代的时效性:项目紧跟 B站 官方版本的更新步伐,及时修复失效接口,保证了文档在技术快节奏变化中的可用性。
- 🤝 聚合社区技术力量:利用 GitHub 众包模式,由多位开发者共同维护、补充和完善接口细节,形成了高质量的技术知识库。
🗺️ 循序渐进的学习路径
学习路径
阶段 1:API基础与网络请求入门 🌐
学习内容:
- HTTP/HTTPS协议基础(请求方法、状态码、Headers)
- JSON数据格式解析
- 基本网络请求工具使用(如Postman、curl)
- bilibili-API-collect项目结构熟悉
学习时间: 1-2周
学习资源:
- MDN Web API文档
- Postman官方教程
- bilibili-API-collect项目README
学习建议:
- 先通读项目README了解整体架构
- 用Postman测试几个简单API(如视频信息获取)
- 对比请求参数与响应数据理解API设计逻辑
阶段 2:B站API专项实践 🔍
学习内容:
- B站API分类(用户/视频/弹幕/直播等)
- 常用API参数详解
- B站特有的加密算法(如Wbi签名)
- API调用频率限制处理
学习时间: 2-3周
学习资源:
- bilibili-API-collect文档中的API分类
- B站开发者平台相关文档
- 项目中的示例代码
学习建议:
- 每天研究1-2个相关API
- 尝试用代码实现一个完整API调用流程
- 注意记录不同API的参数差异和特殊要求
阶段 3:API集成与数据处理 🛠️
学习内容:
- 批量API请求优化
- 数据缓存策略
- 异常处理机制
- 数据可视化基础
学习时间: 3-4周
学习资源:
- Redis缓存教程
- Python requests库高级用法
- 项目中的实战案例
学习建议:
- 从简单功能开始实现(如批量获取视频信息)
- 逐步加入错误处理和缓存机制
- 尝试用图表展示API获取的数据
阶段 4:高级应用与扩展 💡
学习内容:
- 自动化脚本开发
- API反向分析技巧
- 数据采集与存储
- 实时数据处理
学习时间: 4-6周
学习资源:
- Chrome开发者工具网络面板教程
- 项目中的高级实现案例
- 相关开源项目(如bilibili-downloader)
学习建议:
- 选择一个感兴趣的方向深入(如数据分析/自动化工具)
- 研究未公开API的分析方法
- 注意遵守B站使用条款和法律法规
阶段 5:项目实战与优化 🎯
学习内容:
- 完整项目开发流程
- 性能优化技巧
- API版本适配
- 文档编写与维护
学习时间: 6-8周
学习资源:
- 项目中的issue和PR
- 优秀开源项目案例
- RESTful API设计规范
学习建议:
- 设计并实现一个完整工具项目
- 参与项目issue讨论和PR提交
- 总结自己的实践经验并输出文档
❓ 常见问题解答
1: 这个项目主要用来做什么的?📚
1: 这个项目主要用来做什么的?📚
A: SocialSister/bilibili-API-collect 是目前 GitHub 上最全面、最详尽的 B站(Bilibili)接口文档收集项目。
它主要整理了 Bilibili 网站(Web 端)和 App 客户端在运行过程中使用的各种 API 接口。内容包括但不限于:视频信息获取、用户资料查询、弹幕操作、评论系统、直播间互动以及番剧信息等。对于想要开发 B 站第三方应用、爬虫或进行数据分析的开发者来说,这是一个必备的参考手册。
2: 我是初学者,如何使用这些接口?🛠️
2: 我是初学者,如何使用这些接口?🛠️
A: 使用这些接口通常需要具备一定的 HTTP 网络请求基础。
- 阅读文档:在项目的 README 和具体的文档页面中,找到你想要的功能(例如“获取视频信息”)。
- 查看请求方式:文档会列出接口的 URL(
https://api.bilibili.com/...)、请求方法(GET 或 POST)以及必须携带的参数(如bvid或mid)。 - 模拟请求:你可以使用编程语言(如 Python 的
requests库)或调试工具(如 Postman)向该 URL 发送请求。 - 解析数据:B站的接口通常会返回 JSON 格式的数据,你需要解析这些数据来提取你需要的信息。
3: 为什么我调用接口时返回了 -101 或 -111 错误?🔑
3: 为什么我调用接口时返回了 -101 或 -111 错误?🔑
A: 这是最常见的问题,通常与权限验证有关。
- -101 (账号未登录):该接口需要用户登录状态。你必须在 HTTP 请求头中添加有效的
Cookie(包含SESSDATA等字段)才能通过验证。 - -111 (CSRF 校验失败):当你进行非 GET 请求(如点赞、投币、发送评论)时,B站 会进行 CSRF(跨站请求伪造)检查。你需要在请求头中添加
Referer和Origin字段(通常指向https://www.bilibili.com),且 Cookie 中必须包含bili_jct字段。
4: 文档中提到的 SESSDATA 和 bili_jct 是什么?从哪里获取?🍪
4: 文档中提到的 SESSDATA 和 bili_jct 是什么?从哪里获取?🍪
A: 这些是 B站 用于识别用户身份和进行安全校验的关键 Cookie 字段。
- SESSDATA:相当于你的登录凭证,很多涉及个人信息的接口都需要它。
- bili_jct:用于 CSRF 校验,防止恶意请求。
获取方法:
- 在浏览器中登录 Bilibili 网站。
- 打开浏览器开发者工具(F12),切换到 Network(网络)选项卡。
- 刷新页面或随意点击一个链接,在请求列表中选择一个请求(通常是主页面)。
- 在右侧的 Headers -> Request Headers 中找到
Cookie字段。 - 复制其中的
SESSDATA=...和bili_jct=...的值填入你的代码中。 注意:SESSDATA有时会过期,过期后需重新登录获取。
5: 接口文档更新了,但我发现有些接口失效了怎么办?⚠️
5: 接口文档更新了,但我发现有些接口失效了怎么办?⚠️
A: B站 的接口随时可能调整,这是逆向工程和第三方文档面临的常态。
- 查看 Issues:在 GitHub 项目的 Issues 页面搜索相关错误码或接口名称,通常其他开发者已经遇到过并给出了解决方案。
- 抓包对比:如果文档未更新,你可以使用 Fiddler 或 Charles 对 B站 官方客户端进行抓包,对比官方请求的参数、加密方式和请求头,看看是否与文档描述有出入。
- 提交 PR:如果你发现了新的调用方式或参数变更,欢迎向该项目提交 Pull Request 帮助完善文档。
6: 使用这个项目开发爬虫会被封号吗?🚫
6: 使用这个项目开发爬虫会被封号吗?🚫
A: 仅仅阅读文档和调用部分公开接口(如获取视频信息、用户公开资料)通常风险较低,但频繁请求或涉及非公开接口存在风险。
- 频率限制:如果你的请求频率过高(例如短时间几千次请求
🎯 挑战与思考题
## 挑战与思考题
### 挑战 1: [简单] 🌟
问题**:
Bilibili 的视频链接通常包含形如 BV1xx411c7mD 的字符串。请参考该项目文档,编写一个简单的 Python 脚本,输入一个 BV 号,获取并打印该视频的标题、时长和作者信息。
提示**:
💡 实践建议
针对 SocialSisterYi/bilibili-API-collect 这个仓库,它主要用于记录和逆向解析哔哩哔哩(Bilibili)的各类 API 接口。以下是 5-7 条针对实际开发和使用场景的实践建议:
1. 🕵️♂️ 善用抓包工具进行“逆向复现”
场景:文档中的参数含义不够明确,或者需要确认最新的请求逻辑。 建议: 不要只看文档中的静态参数,要结合 Fiddler 或 Charles 进行抓包对比。
- 具体操作:在浏览器或 Bilibili 客户端进行操作(如点赞、发评论),抓取请求包,对比仓库中列出的参数,找出哪些是必须的,哪些是签名验证相关的。
- 注意:Bilibili 的 API 变动频繁,抓包是验证文档是否过时的最快方法。
2. 🛡️ 警惕风控与 IP 封禁
场景:使用脚本批量获取视频信息或进行自动化操作。
建议:
B站对非官方客户端的请求有严格的风控策略,特别是涉及 wbi 签名验证和 Cookie 校验。
- 具体操作:
- 控制频率:请求之间务必增加随机延时(例如每次请求间隔 1-3 秒),切勿高频并发请求。
- 伪装 Header:必须携带完整的
User-Agent和Referer,最好模拟浏览器的行为。 - Cookie 管理:敏感操作(如点赞、投币)必须携带登录后的 Cookie,且要注意
buvid3等设备指纹参数的变化。
3. 🍪 关于“游客模式”与“登录态”的区别
场景:只需读取视频基本信息,无需用户交互。 建议: 如果只是获取视频标题、封面、BV 号转换等公开信息,尽量不要使用登录态 Cookie。
- 原因:未登录请求的 API 接口通常更简单,且不涉及账号风控风险。只有在进行投币、评论、获取私人播放列表时,才需要传入 Cookie。这样做可以降低主账号被误封的风险。
4. 🧩 处理 WBI 签名机制
场景:调用部分需要 WBI 签名的接口(如视频详情、评论列表),直接请求返回 -403 或 签名错误。
建议:
B站现在许多接口强制要求 WBI(Web Boundary Interface) 签名,不能只传原始参数。
- 具体操作:
- 不要尝试硬编码签名,因为 WBI 的混淆密钥会定期
🔗 引用
- GitHub 仓库: https://github.com/SocialSisterYi/bilibili-API-collect
- DeepWiki: https://deepwiki.com/SocialSisterYi/bilibili-API-collect
注:文中事实性信息以以上引用为准;观点与推断为 AI Stack 的分析。
这篇文章由 AI Stack 自动生成,包含多次大模型调用,提供深度的结构化分析。
📚 更多精彩内容,敬请关注!