DOCUMENTATION

安全、隐私与接入说明

这里集中放置验证原理和 OAuth 2.1 接入细节,首页和验证页只保留完成任务所需的信息。

安全与隐私
验证不依赖 B 站登录态。

本服务只通过 B 站公开资料确认 MID、昵称、头像、签名、粉丝、等级、VIP 和账号状态,不要求输入 B 站密码,也不会获取或保存 Cookie、access token 或隐私接口响应。

验证时需要临时修改个人签名。原签名只在当前标签页的 sessionStorage 中保存,用于完成后的恢复提示。请在个人设备上使用,并在验证完成后恢复原签名。

验证流程
一次性 challenge 会绑定 MID 和有效期。
  1. 验证页面输入 B 站 MID,确认公开资料。
  2. 复制服务生成的临时签名指令,前往 B 站个人设置写入签名。
  3. 返回服务确认,服务端重新读取公开签名并完成注册、登录或绑定。
  4. 复制页面缓存的原签名,恢复 B 站设置。

如果 challenge 过期或签名不匹配,请重新查询并生成新的指令。challenge 不能重复消费。

OAuth 2.1 接入
仅支持 authorization code + S256 PKCE。

授权服务提供 discovery、动态客户端注册、授权码、token、userinfo 和 OIDC metadata 端点。客户端必须使用 S256 PKCE,不支持隐式授权。

可申请的 scope 只有 openidprofile bili:public。只有明确申请 `bili:public` 时,userinfo 才会返回当前绑定的公开 B 站 MID。

创建 Client 需要先登录本服务,请前往开发者设置填写应用名称、主页 URL 和 OAuth 回调 URL。

GET /.well-known/oauth-authorization-server
GET /.well-known/openid-configuration
GET /oauth2/authorize
POST /oauth2/token
GET /oauth2/userinfo
POST /oauth2/register
登录方式
登录页支持多种设备登录方式。

登录页支持 B 站签名登录和 Passkey 登录。B 站登录同时覆盖新用户注册、已有用户登录和已登录用户绑定。

已登录设备可以在账户面板生成一次性设备登录码,复制到其它设备的登录页使用。设备码过期或使用后不可再次使用。

浏览器插件能力
插件能力按声明逐项启用。

网站会通过 `window.postMessage` 与插件握手。插件返回名称、版本和能力列表后,网站才会显示对应功能。

bili.mid.read

向验证页提供当前 B 站 MID,用于自动预填。

bili.api.proxy

代替网站请求 B 站公开资料,返回公开资料字段。

bili.direct-login

自动完成临时签名、验证和原签名恢复。

插件可以在本地使用自身的 B 站登录状态来完成公开资料转发或自动签名操作。 网站不会接收插件的 Cookie、access token、refresh token、密码或隐私资料, 只接收完成验证所需的公开字段。握手必须回传网站提供的 nonce,请求使用 requestId,网站会校验来源、超时和响应字段。

bili-sign:hello
bili-sign:ready
bili-sign:request
bili-sign:response
bili-sign:event