断壁残垣档案
BILIBILI TECH ARCHAEOLOGY

哔哩哔哩技术层考古

不是运营史,是接口、协议、错误页、客户端的考古。那些你只在故障时见过一次、后来再也找不到的东西。

错误页考古接口变迁播放器架构弹幕协议风控与签名

一、错误页考古

「非常抱歉」全屏错误页

这是 B 站最有名的"故障界面"之一:整屏浅灰/白底,中间一行「非常抱歉」,下面跟一行小字(大意是"页面加载失败"或"服务器开小差了"),没有任何 B 站配色、没有 logo、没有返回按钮。

它之所以值得考古,是因为它不像 B 站——没有粉色、没有小电视,像是直接从某个通用错误模板里贴过来的。后来改版后,错误页逐渐换成了带插画的风格化页面,"非常抱歉"这四个字反而成了老用户的共同记忆。

同类还有:视频被删除时的「啊叻?视频不见了?」、稿件审核中的提示页、以及 412/风控拦截页。

延伸:它甚至配过提示音。公众号「ARC」有一篇专文《当"非常抱歉"静了音:B站失效提示音考古》,专门考据这声提示音的来历与消失——这是少见的、把"错误页"当成对象做完整考据的中文文献。

参考文献:ARC《当"非常抱歉"静了音:B站失效提示音考古》 · 专栏《B 站 UI 十年变迁 2009-2019》 · 2021-07-14 机房故障致歉报道

它还活着:这页其实是故障分诊器

「非常抱歉」并没有被废弃,它今天仍在服役——而且它的出现本身就是一条诊断信息:

看到「非常抱歉」
 ├─ 强制刷新(Ctrl+F5)→ 恢复
 │    ⇒ CDN 节点问题:边缘缓存过期 / 回源失败 / 节点被摘
 │       典型:某个地区、某个运营商才复现
 │
 └─ 刷新多次仍是它,且换网络(4G/热点)也一样
      ⇒ 源站问题:服务器挂了 / 网关 5xx / 上游数据库不可用
         典型:全网同时反馈(如 2021-07-14 机房故障)

换句话说,这页是用户侧的免费分诊表:单点复现=CDN,全局复现=源站。运营侧也常拿它当"降级兜底页",用最轻的静态页挡住故障流量,避免把后端打穿。

备注:判断逻辑来自实际故障表现(单点 vs 全局),非官方文档;但"轻量静态兜底页"是业界通用做法。

412 与「请求被拦截」

风控触发时返回 412 Precondition Failed,页面表现为一个极简的拦截提示。早期对 UA、Referer、Cookie 的校验比现在宽松得多,很多第三方客户端就靠伪造这几个头工作。

参考文献:专栏《PC 网页端 B 站 412 错误,及其他 DNS 未配置带来的网络问题》

二、接口变迁

av 号 → BV 号(2020-03)

2020 年 3 月,B 站把视频 ID 从纯数字的 av 号改为 BV 号。两者存在确定性换算(av↔BV 互转算法公开流传),这也是为什么老链接至今仍能跳转。

// 思路:av 号做位运算混淆 → 按固定字母表映射 → 加 "BV1" 前缀
// 社区实现多为:XOR 常量 + 换表 + 分段拼接
来源:切换公告与社区公开的互转实现

域名与入口

从 bilibili.us 时期的 AVFUN 血脉,到 bilibili.com 主站;早期还有邀请码注册、100 分转正答题。接口域名长期以 api.bilibili.com 为主,App 侧另有 app.bilibili.com,近年大量接口 gRPC 化。

签名与风控参数

Web 接口长期带 appkey + sign(对参数排序后加 salt 做 md5)的组合;App 接口另有 access_key、ts、以及后来的 w_rid/wts(前端 JS 计算的签名)。这套东西是第三方客户端永远的痛点,也是每次"接口失效"的根源。

三、播放器与分发

Flash → HTML5 → DASH

早期播放器是 Flash 的,2016 年前后全面转向 HTML5;之后引入 DASH 分片(dash/ 目录 + baseUrl 列表),1080P+ 与 HDR 走不同清晰度 ID。再往后是 PCDN(P2P + CDN 混合),也因此长期存在"上传占带宽"的争议。

清晰的清晰度 ID

接口里的 qn / quality 是数字编码(如 80 = 1080P、112 = 1080P+、120 = 4K),不同登录态与大会员态能拿到的上限不同。老第三方客户端里这张映射表是必备件。

四、弹幕协议

XML → protobuf 分片

早期弹幕是一次性拉一个 XML(comment.bilibili.com/<cid>.xml);后来改成按 6 分钟一段的 protobuf 分片(I0…In),服务端按段返回,客户端拼接。这也是"超长视频弹幕加载慢"的技术原因。

分片命名:{cid}/I{段号}.bin     段长:360 秒
字段:progress(毫秒) / mode / fontsize / color / midHash / content

六、工具:av ↔ BV 转换

BV 号不是随机串,它是把 av 号做偏移 + 异或后,按一张 58 字符的字母表重新编码,再按固定位置填进 BV1??4?1?7?? 这个模板。

转换器

算法要点(社区公开实现):
  table  = "fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF"  (58 字符)
  位置   = [11, 10, 3, 8, 4, 6]     // 6 位有效字符在 12 位 BV 串里的下标
  av→BV  : x = (av ^ 177451812) + 8728348608,再按 58 进制填位
  BV→av  : 取位 → 58 进制还原 → (x - 8728348608) ^ 177451812

七、页面存档(Wayback Machine)

考古最可靠的一手材料是存档快照。下面这些链接可以直接跳到 Internet Archive 的历史抓取列表:

用法:进入列表后按年份筛选;快照里的 CSS/JS 也一并存档,可以直接看当年的样式实现。

八、站内存档预览

以下为 2015–2016 年前后的页面截图,来源为当年网友保存的第三方存档,非官方存档,仅作技术考古展示。

2015 首页

2015 · 首页
还能看到「BiliBili MMD 大赛 2015」横幅、七彩导航、右侧在线列表。
来源:第三方存档(斗图啦)

2016 首页

2016 · 首页
顶部换成「bilibili 春」头图,导航出现「专栏 / 广场 / 直播 / 小黑屋」,右侧是固定的侧边导航。
来源:第三方存档(知乎专栏)

存档 B

同期 · 竖版存档
手机端/宣传图形态的存档,用于对照当年移动端的排版密度。
来源:第三方存档(360 图片)

版权说明:以上截图版权归哔哩哔哩及原截图作者所有,此处仅作技术演进对照展示;如权利人提出异议,将立即撤下。

九、2020–2025 技术线

这五年的变化不再是"配色与栏目",而是分发、协议与形态。以下按年份记,未标来源的属社区共识/实际表现。

2020 · BV 号上线

3 月起视频 ID 从 av 迁到 BV,老链接靠换算继续可用(见第六节工具)。同年前后开始大规模使用 WebP 封面与自适应码率。

约 2020 年首页(第三方存档,来源 csdnimg.cn) 配图:约 2020 年首页(第三方存档,来源 csdnimg.cn)

2021 · 播放器与弹幕

DASH 成为默认分发形态(音视频分离 + 分段),1080P+ / HDR 走独立清晰度;弹幕从 XML 全量改为 protobuf 分片(6 分钟一段),并加入密度控制与关键词屏蔽。

2021 登录页 配图:约 2021 年登录页 —— 密码/短信双入口 + 扫码 + 微信登录(第三方存档,来源 bunian.cn)

也是这一年,PCDN(P2P + CDN 混合)在高峰期被大量使用,"上传占带宽"的争议从这里开始。

2022 · 首页改成三栏瀑布流

PC 首页从"分区入口 + 排行"变成推荐流为主:左侧固定导航、中间无限流、右侧热榜/动态。首屏几乎不再承担"导航"职能,而是算法入口。

约 2022 年首页,导航已出现「纪录片 / 知识 / 资讯 / 时尚」(来源 xpwin7.com) 配图:约 2022 年首页,导航已出现「纪录片 / 知识 / 资讯 / 时尚」(来源 xpwin7.com)
2022 · 三栏推荐流
左导航
无限推荐流
热榜

2023 · 竖屏与 Story 模式

手机端引入全屏竖屏播放(上滑切换),接口层新增一套竖屏推荐参数;PC 端同步出现"竖屏"筛选。这是 B 站第一次从"横屏内容库"向"短视频形态"妥协。

2024 · 风控与签名升级

Web 接口从 appkey+sign 逐步转向 w_rid + wts(前端 JS 计算,参数排序 + 盐 + md5),并叠加 buvid3 等设备指纹。第三方客户端的失效周期从"月"缩短到"周"。

2025 · AI 与多端一致

搜索结果与推荐里 AI 摘要占比上升;客户端开始统一使用同一套 gRPC 网关,PC/手机/车机共用接口,差异只在渲染层。

对考古的意义:能观察到的"页面差异"越来越少,差异都下沉到接口与风控——这也意味着"截图考古"的时代基本结束了。

2026 · 现状(最新版)

2026 首页

页面层已高度同质:同一套组件、同一套推荐位,能看见的差异基本消失;风控与签名全在前端 JS 与设备指纹里,AI 摘要进入搜索与推荐。

2026 · 同质化 + 浮层
推荐流(组件化)
热榜
+ 登录浮层 / 竖屏入口 / AI 摘要
配图:本站 2026-11 实时截取的首页(未登录态,顶部有登录浮层);备注:2026 部分为当前观察,缺官方文档支撑。
2015 年看的是配色,2025 年看的是签名参数。同一个站,考古对象换了一层。

五、还能怎么挖

"非常抱歉"这四个字之所以值得记,是因为它是唯一一个没有任何设计的 B 站页面——恰恰因此,它成了最诚实的那个。
注:第九节中的方框为布局示意图(非真实截图),用于说明页面结构变化。