API认证与鉴权

Cookie方式(web端)

cookie中的值在访问登录接口成功登录时,用set-cookie写入

在访问api时为Cookie头的数据

Token有效期为1月,更改密码或过期失效

cookie项含义备注
DedeUserID当前用户UID
DedeUserID__ckMd5用户UID md5校验值
SESSDATA登录Token用于用户识别与鉴权
作用同access_key
bili_jctCSRF Token用于操作性接口

APP方式(手机客户端及TV端等)

参数含义备注
access_keyAPP登录Token注意必须在第一个参数
appkeyAPP密钥
refresh_tokenAPP刷新登录Token仅在刷新时使用
ts当前时间戳
signAPP签名注意必须在最后一个参数

接口鉴权:

使用appkey作为api的必要参数,并使用除sign外所有参数的url字串后连接相对应的盐值进行md5校验(32位小写),把计算结果作为sign的值,与前面参数一同发送

appkey与appsec一一对应

已知的appkey与签名:

appkeyappsec(sign盐值)平台应用备注
07da50c9a0bf829f75d35aa5c06fb46e40059a6a5bf671a6安卓概念版
1d8b6e7d45233436560c52ccd288fed045859ed18bffd973安卓客户端一般用途
37207f2beaebf8d7e988e794d4d4b6dd43bc0e89d6e90c43安卓biliLink
4409e2ce8ffd12b859b43e04ad6965f34319062b478f83ddTV客户端
5dce947fe22167f9 安卓必剪
85eb6835b0a1034e2ad42749773c441109bdc0191257a664
aae92bc66f3edfabaf125a0d5279fd576c1b4418a3e8276dPC投稿工具
bb3101000e232e2736efcfed79309338ced0380abd824ac1
bca7e84c2d947ac6 安卓客户端登录专用
cc578d267072c94d 安卓轻视频
cc8617fd6961e070 安卓漫画
iVGUTjsxvpLeuDCfaHRmhWMLkdeMuILqORnYZocwMBpMEOdt安卓客户端取流专用

例如:

参数的url为appkey=1d8b6e7d45233436&test=123->连接盐值后为appkey=1d8b6e7d45233436&test=123560c52ccd288fed045859ed18bffd973->进行md5 32bit校验,结果为8a3fdd74911862810f5c78f65afcce5d->最终参数为appkey=1d8b6e7d45233436&test=123&sign=8a3fdd74911862810f5c78f65afcce5d

身份认证:

使用参数 access_key 进行身份验证,有效期为1月,作用同SESSDATA

可以使用 refresh_token 进行刷新


公共错误码

下表为大部分接口返回值中code字段的值中公共的错误代码

权限类:

代码含义
-1应用程序不存在或已被封禁
-2Access Key错误
-3API校验密匙错误
-4调用方对该Method没有权限
-101账号未登录
-102账号被封停
-103积分不足
-104硬币不足
-105验证码错误
-106账号非正式会员或在适应期
-107应用不存在或者被封禁
-108未绑定手机
-110未绑定手机
-111csrf 校验失败
-112系统升级中
-113账号尚未实名认证
-114请先绑定手机
-115请先完成实名认证

请求类:

代码含义
-304木有改动
-307撞车跳转
-400请求错误
-401未认证
-403访问权限不足
-404啥都木有
-405不支持该方法
-409冲突
-500服务器错误
-503过载保护,服务暂不可用
-504服务调用超时
-509超出限制
-616上传文件不存在
-617上传文件太大
-625登录失败次数太多
-626用户不存在
-628密码太弱
-629用户名或密码错误
-632操作对象数量限制
-643被锁定
-650用户等级太低
-652重复的用户
-658Token 过期
-662密码时间戳过期
-688地理区域限制
-689版权限制
-701扣节操失败

登录操作

人机验证方式登录包含账号密码登录与手机短信验证码登录

注:扫码登录不需要进行人机验证,故不使用以下接口

扫码登录

验证登录

人机验证流程:

  1. 请求验证码参数,得到登录密钥key与极验IDgt和极验KEYchallenge
  2. 进行滑动or点击验证
  3. 返回验证结果validateseccode,进行短信或密码登录

申请验证码参数

http://passport.bilibili.com/web/captcha/combine?plat=6

请求方式:GET

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
dataobj信息本体

data对象:

字段类型内容备注
resultobj套了个娃
typenum1作用尚不明确

result对象:

字段类型内容备注
successnum1作用尚不明确
gtstr极验ID一般为固定值
challengestr极验KEY由B站后端产生用于人机验证
keystr登录秘钥与人机验证无关,与登录接口有关,但与极验KEY对应

示例:

curl 'https://passport.bilibili.com/web/captcha/combine?plat=6'

<details>
<summary>查看响应示例:</summary>

{
  "code": 0,
  "data": {
    "result": {
      "success": 1,
      "gt": "bd111e81eda1cbb9f54425aafc0908ac",
      "challenge": "2903a8eb967a1d990444cb23ea42f417",
      "key": "76fb59fbd83a4d9d816162c5156fc964"
    },
    "type": 1
  }
}

</details>

进行验证

本文档为Bilibili文档,验证码为geetest极验提供,故不提供api

附: 手动验证器
及其源码

  1. 打开手动验证器,在1、2分别填入上面API返回的gtchallenge
  2. 点击按钮3,稍等加载验证码,点击按钮4进行验证
  3. 验证完成后,点击按钮5生成验证结果
  4. 使用最开始获得到的keychallenge和刚获得到的validateseccode继续之后的登录操作

继续登录


二维码登录

web端流程&逻辑:

  1. 获取二维码内容url以及密钥,以二维码内容url生成二维码,等待手机客户端扫描
  2. 密钥作为参数进行POST
  3. if code == true goto 6 else goto 4(是否已经确认)
  4. if data == -4 goto 2 else goto 5(是否已经扫描)
  5. if data == -5 goto 3 & 提示已扫描 else goto 1&提示二维码超时或错误(密钥是否有效)
  6. 成功后会自动配置cookie 如需登录游戏分站则访问data.url中的url

TV端流程&逻辑:

  1. 获取二维码内容url以及密钥,以二维码内容url生成二维码,等待手机客户端扫描
  2. 密钥作为参数进行POST
  3. if code == 0 提示扫码成功并存储access_keyrefersh_key else goto 4
  4. if code == 86039 提示未扫描&goto 2 else goto 5
  5. if code == 86038 提示二维码超时或错误&goto 1

申请二维码URL及扫码密钥(web端)

http://passport.bilibili.com/qrcode/getLoginUrl

请求方式:GET

密钥超时为180秒

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
statusbooltrue作用尚不明确
tsnum请求时间时间戳
dataobj信息本体

data对象:

字段类型内容备注
urlstr二维码内容url恒为87字符
oauthKeystr扫码登录秘钥恒为32字符

示例:

用申请到的data.url中的值生成二维码,等待手机客户端扫描,并将data.oauthKey保存等待使用

curl 'http://passport.bilibili.com/qrcode/getLoginUrl'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "status": true,
    "ts": 1583314311,
    "data": {
        "url": "https://passport.bilibili.com/qrcode/h5/login?oauthKey=c3bd5286a2b40a822f5f60e9bf3f602e",
        "oauthKey": "c3bd5286a2b40a822f5f60e9bf3f602e"
    }
}

</details>

使用扫码登录(web端)

http://passport.bilibili.com/qrcode/getLoginInfo

请求方式:POST

密钥超时为180秒

验证登录成功后会进行设置以下cookie项:

DedeUserID DedeUserID__ckMd5 SESSDATA bili_jct

正文参数( application/x-www-form-urlencoded ):

参数名类型内容必要性备注
oauthKeystr扫码登录秘钥必要
gourlstr跳转url非必要默认为http://www.bilibili.com

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
messagestr错误信息正确无
tsnum扫码时间错误无
statusbool扫码是否成功true:成功
false:未成功
data正确时:obj
错误时:num
正确时:游戏分站url
错误时:错误代码
未成功时:
-1:密钥错误
-2:密钥超时
-4:未扫描
-5:未确认

data 对象:

字段类型内容备注
urlstr游戏分站跨域登录url

示例:

使用扫描秘钥c3bd5286a2b40a822f5f60e9bf3f602e登录

curl "http://passport.bilibili.com/qrcode/getLoginInfo"\
--data-urlencode 'oauthKey=c3bd5286a2b40a822f5f60e9bf3f602e' \
-c 'cookie.txt'

当密钥正确时但未扫描时statusfalsedata为num值-4

<details>
<summary>查看响应示例:</summary>

{
    "status":false,
    "data":-4,
    "message":"Can't scan~"
}

</details>

扫描成功但手机端未确认时statusfalsedata为num值-5

<details>
<summary>查看响应示例:</summary>

{
    "status":false,
    "data":-5,
    "message":"Can't confirm~"
}

</details>

扫描成功手机端确认登录后,statustruedata为对象,并向浏览器写入cookie

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "status": true,
    "ts": 1583315474,
    "data": {
        "url": "https://passport.biligame.com/crossDomain?DedeUserID=***&DedeUserID__ckMd5=***&Expires=***&SESSDATA=***&bili_jct=***&gourl=http%3A%2F%2Fwww.bilibili.com"
    }
}

</details>

响应头部抓包信息:

可明显看见设置了几个cookie(填入浏览器即可成功登录)

<details>
<summary>查看响应示例:</summary>

HTTP/1.1 200 OK
Date: Wed, 04 Mar 2020 10:36:37 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Server: Apache-Coyote/1.1
Set-Cookie: sid=***; Domain=.bilibili.com; Expires=Thu, 04-Mar-2021 10:36:37 GMT; Path=/
Set-Cookie: DedeUserID=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/
Set-Cookie: DedeUserID__ckMd5=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/
Set-Cookie: SESSDATA=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/; HttpOnly
Set-Cookie: bili_jct=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/
Expires: Wed, 04 Mar 2020 10:36:36 GMT
Cache-Control: no-cache
X-Cache-Webcdn: BYPASS from ks-sxhz-dx-w-01

</details>

游戏分站跨域登录url:

游戏分站跨域登录url与cookie的值一一对应,可用于不方便设置cookie的场合提取使用

https://passport.biligame.com/crossDomain?

DedeUserID=(登录UID)&

DedeUserID__ckMd5=(登录UID MD5值)&

Expires=(过期时间 秒)&

SESSDATA=(登录token)&

bili_jct=(csrf)&

gourl=(跳转网址 默认为主页)

申请二维码URL及扫码密钥(TV端)

http://passport.bilibili.com/x/passport-tv-login/qrcode/auth_code

请求方式:POST

鉴权方式:appkey

密钥超时为180秒

本接口可申请用于APP方式登录的access_key

正文参数( application/x-www-form-urlencoded ):

参数名类型内容必要性备注
appkeystrAPP密钥APP方式必要仅可用4409e2ce8ffd12b8
local_idstrTV端IDTV端必要可为0
tsnum当前时间戳APP方式必要
signstrAPP签名APP方式必要

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-3:API校验密匙错误
-400:请求错误
messagestr错误信息默认为0
ttlnum1
dataobj信息本体

data对象:

字段类型内容备注
urlstr二维码内容url恒为87字符
oauthKeystr扫码登录秘钥恒为32字符

示例:

curl 'http://passport.bilibili.com/x/passport-tv-login/qrcode/auth_code' \
--data-urlencode 'appkey=4409e2ce8ffd12b8' \
--data-urlencode 'local_id=0' \
--data-urlencode 'ts=0' \
--data-urlencode 'sign=e134154ed6add881d28fbdf68653cd9c'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "url": "https://passport.bilibili.com/x/passport-tv-login/h5/qrcode/auth?auth_code=0eeb635a64526709d70cb4c854a3b001",
        "auth_code": "0eeb635a64526709d70cb4c854a3b001"
    }
}

</details>

使用扫码登录(TV端)

http://passport.bilibili.com/x/passport-tv-login/qrcode/poll

请求方式:POST

鉴权方式:appkey

密钥超时为180秒

验证登录成功后会返回可用于APP方式登录的access_key以及refresh_token

正文参数( application/x-www-form-urlencoded ):

参数名类型内容必要性备注
appkeystrAPP密钥APP方式必要仅可用4409e2ce8ffd12b8
auth_codestr扫码秘钥必要
local_idstrTV端IDTV端必要可为0
tsnum当前时间戳APP方式必要
signstrAPP签名APP方式必要

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-3:API校验密匙错误
-400:请求错误
86038:二维码已失效
86039:二维码尚未确认
messagestr错误信息默认为0
ttlnum1
data有效时:obj
无效时:null
信息本体

data对象:

字段类型内容备注
midnum登录用户UID
access_tokenstrAPP登录Token
refresh_tokenstrAPP刷新Token
expires_innum有效时间单位为秒 一般为30天

示例:

使用扫描秘钥6214464b3025541abf6f654cf7569a01进行验证登录

curl 'http://passport.bilibili.com/x/passport-tv-login/qrcode/poll' \
--data-urlencode 'appkey=4409e2ce8ffd12b8' \
--data-urlencode 'auth_code=6214464b3025541abf6f654cf7569a01' \
--data-urlencode 'local_id=0' \
--data-urlencode 'ts=0' \
--data-urlencode 'sign=87de3d0fee7c3f4facd244537238914e' \

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "mid": 293793435,
        "access_token": "***",
        "refresh_token": "***",
        "expires_in": 2592000
    }
}

</details>


二维码登录

web端流程&逻辑:

  1. 获取二维码内容url以及密钥,以二维码内容url生成二维码,等待手机客户端扫描
  2. 密钥作为参数进行POST
  3. if code == true goto 6 else goto 4(是否已经确认)
  4. if data == -4 goto 2 else goto 5(是否已经扫描)
  5. if data == -5 goto 3 & 提示已扫描 else goto 1&提示二维码超时或错误(密钥是否有效)
  6. 成功后会自动配置cookie 如需登录游戏分站则访问data.url中的url

TV端流程&逻辑:

  1. 获取二维码内容url以及密钥,以二维码内容url生成二维码,等待手机客户端扫描
  2. 密钥作为参数进行POST
  3. if code == 0 提示扫码成功并存储access_keyrefersh_key else goto 4
  4. if code == 86039 提示未扫描&goto 2 else goto 5
  5. if code == 86038 提示二维码超时或错误&goto 1

申请二维码URL及扫码密钥(web端)

http://passport.bilibili.com/qrcode/getLoginUrl

请求方式:GET

密钥超时为180秒

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
statusbooltrue作用尚不明确
tsnum请求时间时间戳
dataobj信息本体

data对象:

字段类型内容备注
urlstr二维码内容url恒为87字符
oauthKeystr扫码登录秘钥恒为32字符

示例:

用申请到的data.url中的值生成二维码,等待手机客户端扫描,并将data.oauthKey保存等待使用

curl 'http://passport.bilibili.com/qrcode/getLoginUrl'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "status": true,
    "ts": 1583314311,
    "data": {
        "url": "https://passport.bilibili.com/qrcode/h5/login?oauthKey=c3bd5286a2b40a822f5f60e9bf3f602e",
        "oauthKey": "c3bd5286a2b40a822f5f60e9bf3f602e"
    }
}

</details>

使用扫码登录(web端)

http://passport.bilibili.com/qrcode/getLoginInfo

请求方式:POST

密钥超时为180秒

验证登录成功后会进行设置以下cookie项:

DedeUserID DedeUserID__ckMd5 SESSDATA bili_jct

正文参数( application/x-www-form-urlencoded ):

参数名类型内容必要性备注
oauthKeystr扫码登录秘钥必要
gourlstr跳转url非必要默认为http://www.bilibili.com

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
messagestr错误信息正确无
tsnum扫码时间错误无
statusbool扫码是否成功true:成功
false:未成功
data正确时:obj
错误时:num
正确时:游戏分站url
错误时:错误代码
未成功时:
-1:密钥错误
-2:密钥超时
-4:未扫描
-5:未确认

data 对象:

字段类型内容备注
urlstr游戏分站跨域登录url

示例:

使用扫描秘钥c3bd5286a2b40a822f5f60e9bf3f602e登录

curl "http://passport.bilibili.com/qrcode/getLoginInfo"\
--data-urlencode 'oauthKey=c3bd5286a2b40a822f5f60e9bf3f602e' \
-c 'cookie.txt'

当密钥正确时但未扫描时statusfalsedata为num值-4

<details>
<summary>查看响应示例:</summary>

{
    "status":false,
    "data":-4,
    "message":"Can't scan~"
}

</details>

扫描成功但手机端未确认时statusfalsedata为num值-5

<details>
<summary>查看响应示例:</summary>

{
    "status":false,
    "data":-5,
    "message":"Can't confirm~"
}

</details>

扫描成功手机端确认登录后,statustruedata为对象,并向浏览器写入cookie

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "status": true,
    "ts": 1583315474,
    "data": {
        "url": "https://passport.biligame.com/crossDomain?DedeUserID=***&DedeUserID__ckMd5=***&Expires=***&SESSDATA=***&bili_jct=***&gourl=http%3A%2F%2Fwww.bilibili.com"
    }
}

</details>

响应头部抓包信息:

可明显看见设置了几个cookie(填入浏览器即可成功登录)

<details>
<summary>查看响应示例:</summary>

HTTP/1.1 200 OK
Date: Wed, 04 Mar 2020 10:36:37 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Server: Apache-Coyote/1.1
Set-Cookie: sid=***; Domain=.bilibili.com; Expires=Thu, 04-Mar-2021 10:36:37 GMT; Path=/
Set-Cookie: DedeUserID=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/
Set-Cookie: DedeUserID__ckMd5=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/
Set-Cookie: SESSDATA=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/; HttpOnly
Set-Cookie: bili_jct=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/
Expires: Wed, 04 Mar 2020 10:36:36 GMT
Cache-Control: no-cache
X-Cache-Webcdn: BYPASS from ks-sxhz-dx-w-01

</details>

游戏分站跨域登录url:

游戏分站跨域登录url与cookie的值一一对应,可用于不方便设置cookie的场合提取使用

https://passport.biligame.com/crossDomain?

DedeUserID=(登录UID)&

DedeUserID__ckMd5=(登录UID MD5值)&

Expires=(过期时间 秒)&

SESSDATA=(登录token)&

bili_jct=(csrf)&

gourl=(跳转网址 默认为主页)

申请二维码URL及扫码密钥(TV端)

http://passport.bilibili.com/x/passport-tv-login/qrcode/auth_code

请求方式:POST

鉴权方式:appkey

密钥超时为180秒

本接口可申请用于APP方式登录的access_key

正文参数( application/x-www-form-urlencoded ):

参数名类型内容必要性备注
appkeystrAPP密钥APP方式必要仅可用4409e2ce8ffd12b8
local_idstrTV端IDTV端必要可为0
tsnum当前时间戳APP方式必要
signstrAPP签名APP方式必要

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-3:API校验密匙错误
-400:请求错误
messagestr错误信息默认为0
ttlnum1
dataobj信息本体

data对象:

字段类型内容备注
urlstr二维码内容url恒为87字符
oauthKeystr扫码登录秘钥恒为32字符

示例:

curl 'http://passport.bilibili.com/x/passport-tv-login/qrcode/auth_code' \
--data-urlencode 'appkey=4409e2ce8ffd12b8' \
--data-urlencode 'local_id=0' \
--data-urlencode 'ts=0' \
--data-urlencode 'sign=e134154ed6add881d28fbdf68653cd9c'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "url": "https://passport.bilibili.com/x/passport-tv-login/h5/qrcode/auth?auth_code=0eeb635a64526709d70cb4c854a3b001",
        "auth_code": "0eeb635a64526709d70cb4c854a3b001"
    }
}

</details>

使用扫码登录(TV端)

http://passport.bilibili.com/x/passport-tv-login/qrcode/poll

请求方式:POST

鉴权方式:appkey

密钥超时为180秒

验证登录成功后会返回可用于APP方式登录的access_key以及refresh_token

正文参数( application/x-www-form-urlencoded ):

参数名类型内容必要性备注
appkeystrAPP密钥APP方式必要仅可用4409e2ce8ffd12b8
auth_codestr扫码秘钥必要
local_idstrTV端IDTV端必要可为0
tsnum当前时间戳APP方式必要
signstrAPP签名APP方式必要

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-3:API校验密匙错误
-400:请求错误
86038:二维码已失效
86039:二维码尚未确认
messagestr错误信息默认为0
ttlnum1
data有效时:obj
无效时:null
信息本体

data对象:

字段类型内容备注
midnum登录用户UID
access_tokenstrAPP登录Token
refresh_tokenstrAPP刷新Token
expires_innum有效时间单位为秒 一般为30天

示例:

使用扫描秘钥6214464b3025541abf6f654cf7569a01进行验证登录

curl 'http://passport.bilibili.com/x/passport-tv-login/qrcode/poll' \
--data-urlencode 'appkey=4409e2ce8ffd12b8' \
--data-urlencode 'auth_code=6214464b3025541abf6f654cf7569a01' \
--data-urlencode 'local_id=0' \
--data-urlencode 'ts=0' \
--data-urlencode 'sign=87de3d0fee7c3f4facd244537238914e' \

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "mid": 293793435,
        "access_token": "***",
        "refresh_token": "***",
        "expires_in": 2592000
    }
}

</details>


短信登录

web端短信登录流程:

  1. 完成人机验证
  2. 发送短信,使用国际地区代码cid+手机号码tel+登录密钥key+极验challenge+验证结果validate+验证结果seccode
  3. 提交短信验证码以验证登录操作,使用国际地区代码cid+手机号码tel+短信验证码smsCode

获取国际地区代码(web端)

http://passport.bilibili.com/web/generic/country/list

请求方式:GET

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
dataobj数据本体

data对象:

字段类型内容备注
commonarray常用国家或地区
othersarray其他国家或地区

data中的commonothers数组:

类型内容备注
0obj国家或地区1
nobj国家或地区(n+1)
……obj…………

commonothers数组中的对象:

字段类型内容备注
idnum国际代码值
cnamestr国家或地区名
country_idstr国家或地区区号

示例:

curl 'http://passport.bilibili.com/web/generic/country/list'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "data": {
        "common": [
            {
                "id": 1,
                "cname": "中国大陆",
                "country_id": "86"
            },
            {
                "id": 5,
                "cname": "中国香港特别行政区",
                "country_id": "852"
            },
            …………
        ],
        "others": [
            {
                "id": 22,
                "cname": "阿富汗",
                "country_id": "93"
            },
            {
                "id": 20,
                "cname": "阿尔巴尼亚",
                "country_id": "355"
            },
            …………
        ]
    }
}

</details>

发送短信验证码(web端)

http://passport.bilibili.com/web/sms/general/v2/send

请求方式:POST

短信发送CD时间为60s

短信验证码超时时间为5min

正文参数( application/x-www-form-urlencoded ):

参数名类型内容必要性备注
telnum手机号码必要
cidnum国际地区代码必要
typenum21必要必须为21
captchaTypenum6必要必须为6
keystr登录秘钥必要从B站API获取
challengestr极验challenge必要从B站API获取
validatestr极验结果必要从极验获取
seccodestr极验结果+`jordan`必要从极验获取

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-400:请求错误
1002:手机号格式错误
1015:短信发送次数已达上限
1003:验证码已经发送
2400:登录秘钥错误
2406:验证极验服务出错
messagestr错误信息成功为"验证码短信已下发"

示例:

例如手机号为13888888888,国际ID为1(中国大陆),登录秘钥为aabbccdd,极验challenge为2333,极验结果为666666,进行发送短信验证码操作

curl 'http://passport.bilibili.com/web/sms/general/v2/send' \
--data-urlencode 'tel=13888888888' \
--data-urlencode 'cid=1' \
--data-urlencode 'type=21' \
--data-urlencode 'captchaType=6' \
--data-urlencode 'key=aabbccdd' \
--data-urlencode 'challenge=2333' \
--data-urlencode 'validate=666666' \
--data-urlencode 'seccode=666666|jordan'

<details>
<summary>查看响应示例:</summary>

{
  "code": 0,
  "message": "验证码短信已下发"
}

</details>

使用短信验证码登录(web端)

http://passport.bilibili.com/web/login/rapid

请求方式:POST

验证登录成功后会进行设置以下cookie项:

DedeUserID DedeUserID__ckMd5 SESSDATA bili_jct

正文参数( application/x-www-form-urlencoded ):

参数名类型内容必要性备注
cidnum国际地区代码必要
telnum手机号码必要
smsCodenum短信验证码必要超时时间为5min
goUrlstr跳转url非必要默认为https://www.bilibili.com

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-400:请求错误
1006:请输入正确的短信验证码
1007:短信验证码已过期
messagestr错误信息
dataobj信息本体

data对象:

字段类型内容备注
is_newboolfalse未知,估计是未注册时自动注册新用户
statusnum0未知,可能0就是成功吧
urlstr跳转url默认为https://www.bilibili.com

示例:

使用手机号13888888888,短信验证码为123456,进行验证登录操作

curl 'https://passport.bilibili.com/web/login/rapid' 
--data-urlencode 'cid=1' \
--data-urlencode 'tel=13888888888' \
--data-urlencode 'smsCode=123456'

<details>
<summary>查看响应示例:</summary>

{
  "code": 0,
  "data": {
    "is_new": false,
    "status": 0,
    "url": "https://space.bilibili.com"
  }
}

</details>

响应头部抓包信息:

可明显看见设置了几个cookie(填入浏览器即可成功登录)

<details>
<summary>查看响应示例:</summary>

HTTP/1.1 200 OK
Date: Mon, 13 Jul 2020 09:57:33 GMT
Content-Type: application/json;charset=UTF-8
Content-Length: 78
Connection: keep-alive
Server: Apache-Coyote/1.1
Set-Cookie: DedeUserID=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/
Set-Cookie: DedeUserID__ckMd5=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/
Set-Cookie: SESSDATA=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/; HttpOnly
Set-Cookie: bili_jct=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/
Expires: Mon, 13 Jul 2020 09:57:32 GMT
Cache-Control: no-cache
X-Cache-Webcdn: BYPASS from jd-sxhz-dx-w-01

</details>


账号密码登录

web端密码登录流程:

  1. 完成人机验证
  2. 加密登录密码,获取RSA公钥key与盐值hash(盐值有效时间为20s),并连接盐值+密码字串(注意先后顺序),使用RSA公钥加密,得到base64格式密文
  3. 登录操作验证,使用账号username(手机号或邮箱)+密文密码password+登录密钥key+极验challenge+验证结果validate+验证结果seccode

获取加密公钥及密码盐值1(web端)

http://passport.bilibili.com/login?act=getkey

请求方式:GET

json回复:

根对象:

字段类型内容备注
hashstr密码校验盐值有效时间为20s
keystrRSA公钥公钥为固定值

示例:

curl 'http://passport.bilibili.com/login?act=getkey'

<details>
<summary>查看响应示例:</summary>

{
    "hash":"07c6501690c1af85",
    "key":"-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjb4V7EidX/ym28t2ybo0U6t0n\n6p4ej8VjqKHg100va6jkNbNTrLQqMCQCAYtXMXXp2Fwkk6WR+12N9zknLjf+C9sx\n/+l48mjUU8RqahiFD1XT/u2e0m2EN029OhCgkHx3Fc/KlFSIbak93EH/XlYis0w+\nXl69GV6klzgxW6d2xQIDAQAB\n-----END PUBLIC KEY-----\n"
}

</details>

获取加密公钥及密码盐值2(APP端)

http://passport.bilibili.com/api/oauth2/getKey

请求方式:POST

鉴权方式:appkey

正文参数( application/x-www-form-urlencoded ):

参数名类型内容必要性备注
appkeystrAPP密钥APP方式必要
signstrAPP签名APP方式必要

json回复:

根对象:

字段类型内容备注
hashstr验证hash盐值有效时间为20s
keystrRSA公钥公钥为固定值

示例:

curl 'http://passport.bilibili.com/api/oauth2/getKey' \
--data-urlencode 'appkey=1d8b6e7d45233436' \
--data-urlencode 'sign=17004c193f688f0b5665c1068e733aff'

<details>
<summary>查看响应示例:</summary>

{
    "hash":"07c6501690c1af85",
    "key":"-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjb4V7EidX/ym28t2ybo0U6t0n\n6p4ej8VjqKHg100va6jkNbNTrLQqMCQCAYtXMXXp2Fwkk6WR+12N9zknLjf+C9sx\n/+l48mjUU8RqahiFD1XT/u2e0m2EN029OhCgkHx3Fc/KlFSIbak93EH/XlYis0w+\nXl69GV6klzgxW6d2xQIDAQAB\n-----END PUBLIC KEY-----\n"
}

</details>

登录密码的加密

注:RSA公钥一般为固定值

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjb4V7EidX/ym28t2ybo0U6t0n
6p4ej8VjqKHg100va6jkNbNTrLQqMCQCAYtXMXXp2Fwkk6WR+12N9zknLjf+C9sx
/+l48mjUU8RqahiFD1XT/u2e0m2EN029OhCgkHx3Fc/KlFSIbak93EH/XlYis0w+
Xl69GV6klzgxW6d2xQIDAQAB
-----END PUBLIC KEY-----

例如登录密码为:

BiShi22332323

获取到的盐值为:

8e0db05c46f4052c

那么按照盐值+密码字串连接二者得到:

8e0db05c46f4052cBiShi22332323

用公钥进行RSA加密得到base64字串:

因为公钥的无法解密性和盐值的超时机制,故无法本地验证加密结果

YgpjxAQ22pKa9socHIKPCZX0a/NS6Ng9Zzy+rp16b0LJGT6RHw2ERs3+ijCpG96PKTY1Baavwf0xgotmNvpl25l1KO5y4AjcqeWTzNTSVn6ejonBXGmBMybHHYawJ0aMPn1eDGpKrbI91mrF+h2x+fsnnpuZ1gheiYGzFmtshUc=

使用账号密码登录(web端)

http://passport.bilibili.com/web/login/v2

请求方式:POST

验证登录成功后会进行设置以下cookie项:

sid DedeUserID DedeUserID__ckMd5 SESSDATA bili_jct

正文参数( application/x-www-form-urlencoded ):

参数名类型内容必要性备注
captchaTypenum6必要必须为6
usernamestr用户登录账号必要手机号或邮箱地址
passwordstr加密后的带盐密码必要base64格式
keepbooltrue必要必须为true
keystr登录秘钥必要从B站API获取
challengestr极验challenge必要从B站API获取
validatestr极验结果必要从极验获取
seccodestr极验结果必要从极验获取

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-400:请求错误
-629:账号或密码错误
-653:用户名或密码不能为空
-662:提交超时,请重新提交
-2001:缺少必要的的参数
-2100:需验证手机号或邮箱
2400:登录秘钥错误
2406:验证极验服务出错
tsnum当前时间戳成功时无此项
messagestr错误信息默认为0
dataobj数据本体成功时有此项

data对象:

未登录时:

字段类型内容备注
redirectUrlstr游戏分站跨域登录url

已登录时:

字段类型内容备注
isLoginbooltrue
goUrlstrhttps://www.bilibili.com

需验证手机号或邮箱时

字段类型内容备注
midnum用户UID
telstr绑定的手机号星号隐藏部分信息
emailstr绑定的邮箱星号隐藏部分信息
sorcenum0作用尚不明确
keeptimenum1作用尚不明确
goUrlstrhttps://www.bilibili.com

示例:

例如用户账号为12345678900,加密后的密码为xxx,登录秘钥为aabbccdd,极验challenge为2333,极验结果为666666,进行验证登录操作

curl 'https://passport.bilibili.com/web/login/v2' \
--data-urlencode 'captchaType=6' \
--data-urlencode 'username=12345678900' \
--data-urlencode 'password=xxx' \
--data-urlencode 'keep=true' \
--data-urlencode 'key=aabbccdd' \
--data-urlencode 'challenge=2333' \
--data-urlencode 'validate=666666' \
--data-urlencode 'seccode=666666|jordan'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "data": {
        "redirectUrl": "https://passport.biligame.com/crossDomain?DedeUserID=***&DedeUserID__ckMd5=***&Expires=15551000&SESSDATA=***&bili_jct=***&gourl=https%3A%2F%2Fwww.bilibili.com"
    }
}

</details>

响应头部抓包信息:

可明显看见设置了几个cookie(填入浏览器即可成功登录)

<details>
<summary>查看响应示例:</summary>

HTTP/1.1 200 OK
Date: Mon, 13 Jul 2020 06:56:00 GMT
Content-Type: application/json;charset=UTF-8
Content-Length: 273
Connection: keep-alive
Server: Apache-Coyote/1.1
Set-Cookie: DedeUserID=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/
Set-Cookie: DedeUserID__ckMd5=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/
Set-Cookie: SESSDATA=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/; HttpOnly
Set-Cookie: bili_jct=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/
Content-Security-Policy-Report-Only: default-src 'self' data: *.bilibili.com *.hdslb.com; style-src 'self' 'unsafe-inline' *.hdslb.com static.geetest.com; img-src 'self' data: blob: *.bilibili.com *.hdslb.com http://*.hdslb.com static.geetest.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.bilibili.com *.hdslb.com api.geetest.com static.geetest.com; object-src 'self' *.hdslb.com; media-src 'self' *.acgvideo.com http://*.acgvideo.com *.ksyungslb.com; connect-src 'self' data: wss://*.bilibili.com:* *.bilibili.com *.hdslb.com *.biliapi.net *.biliapi.com; frame-ancestors 'self' *.bilibili.com *.biligame.com; report-uri https://security.bilibili.com/csp_report
Expires: Mon, 13 Jul 2020 06:55:59 GMT
Cache-Control: no-cache
X-Cache-Webcdn: BYPASS from jd-sxhz-dx-w-01

</details>

游戏分站跨域登录url:

游戏分站跨域登录url与cookie的值一一对应,可用于不方便设置cookie的场合提取使用

https://passport.biligame.com/crossDomain?

DedeUserID=(登录UID)&

DedeUserID__ckMd5=(登录UID MD5值)&

Expires=(过期时间 秒)&

SESSDATA=(登录token)&

bili_jct=(csrf)&

gourl=(跳转网址 默认为主页)


登录基本信息

本页所有操作均需登录(Cookie或APP)

登录用户信息1(web端)

http://api.bilibili.com/nav(带有转义)

http://api.bilibili.com/x/web-interface/nav(原始数据)

请求方式:GET

认证方式:仅可Cookie(SESSDATA)

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-101:账号未登录
messagestr错误信息默认为0
ttlnum1
dataobj信息本体

data对象:

字段类型内容备注
isLoginbool是否已登录false:未登录
true:已登录
email_verifiednum是否验证邮箱地址0:未验证
1:已验证
facestr用户头像url
level_infoobj等级信息
midnum用户UID
mobile_verifiednum是否验证手机号0:未验证
1:已验证
moneynum拥有硬币数
moralnum当前节操值上限70
officialobj认证信息
officialVerifyobj认证信息2
pendantobj头像框信息
scoresnum0作用尚不明确
unamestr用户昵称
vipDueDatenum大会员到期时间毫秒 时间戳
vipStatusnum会员开通状态0:无
1:有
vipTypenum大会员类型0:无
1:月度
2:年度
vip_pay_typenum会员开通状态0:无
1:有
vip_theme_typenum0作用尚不明确
vip_labelobj大会员信息
vip_avatar_subscriptnum是否显示会员图标0:不显示
1:显示
vip_nickname_colorstr会员昵称颜色颜色码
walletobjB币信息
has_shopboolfalse作用尚不明确
shop_urlstr作用尚不明确
allowance_countnum0作用尚不明确
answer_statusnum0作用尚不明确

data中的level_info对象:

字段类型内容备注
current_levelnum当前等级
current_minnum当前等级经验最低值
current_expnum当前经验
next_exp小于6级时:num
6级时:str
升级下一等级需达到的经验当用户等级为Lv6时,值为--,代表无穷大

data中的official对象:

字段类型内容备注
rolenum认证类型0:无
1 2:个人认证
3 4 5 6:机构认证
titlestr认证信息无为空
descstr认证备注无为空
typenum是否认证-1:无
0:认证

data中的official_verify对象:

字段类型内容备注
typenum是否认证-1:无
0:认证
descstr认证信息无为空

data中的pendant对象:

字段类型内容备注
pidnum挂件id
namestr挂件名称
imagestr挂件图片url
expirenum0作用尚不明确

data中的vip_label对象:

字段类型内容备注
pathstr作用尚不明确
textstr会员类型文字
label_themestr会员类型

data中的wallet对象:

字段类型内容备注
midnum登录用户UID
bcoin_balancenum拥有B币数
coupon_balancenum每月奖励B币数
coupon_due_timenum0作用尚不明确

示例:

curl 'http://api.bilibili.com/nav' \
-b 'SESSDATA=xxx'

<details>
<summary>查看响应示例:</summary>

{
    "code":0,
    "message":"0",
    "ttl":1,
    "data":{
        "isLogin":true,
        "email_verified":1,
        "face":"http://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg",
        "level_info":{
            "current_level":5,
            "current_min":10800,
            "current_exp":17065,
            "next_exp":28800
        },
        "mid":293793435,
        "mobile_verified":1,
        "money":33.4,
        "moral":70,
        "official":{
            "role":0,
            "title":"",
            "desc":"",
            "type":-1
        },
        "officialVerify":{
            "type":-1,
            "desc":""
        },
        "pendant":{
            "pid":0,
            "name":"",
            "image":"",
            "expire":0,
            "image_enhance":""
        },
        "scores":0,
        "uname":"社会易姐QwQ",
        "vipDueDate":1612454400000,
        "vipStatus":1,
        "vipType":2,
        "vip_pay_type":1,
        "vip_theme_type":0,
        "vip_label":{
            "path":"",
            "text":"年度大会员",
            "label_theme":"annual_vip"
        },
        "vip_avatar_subscript":1,
        "vip_nickname_color":"#FB7299",
        "wallet":{
            "mid":293793435,
            "bcoin_balance":8,
            "coupon_balance":5,
            "coupon_due_time":0
        },
        "has_shop":false,
        "shop_url":"",
        "allowance_count":0,
        "answer_status":0
    }
}

</details>

登录用户信息2(web端)(仅部分)

http://account.bilibili.com/home/userInfo

请求方式:GET

认证方式:仅可Cookie(SESSDATA)

鉴权方式:Cookie中DedeUserID存在且不为0

带有转义

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-101:账号未登录
statusbooltrue作用尚不明确
dataobj信息本体

data对象:

字段类型内容备注
level_infoobj等级信息
bCoinsnum拥有B币数
coinsnum拥有硬币数
facestr登录用户头像url
nameplate_currentnull???作用尚不明确
nameplate_currentstr登录用户勋章url
pendant_currentstr登录用户头像框url
unamestr登录用户昵称
userStatusstr登录用户状态
vipTypenum大会员类型0:无
1:月度
2:年度
vipStatusnum会员开通状态0:无
1:有
official_verifynum是否认证-1:无
0:认证
pointBalancenum0作用尚不明确

data中的level_info对象:

字段类型内容备注
current_levelnum当前等级
current_minnum当前等级经验最低值
current_expnum当前经验
next_expnum升级下一等级需达到的经验

示例:

curl 'http://account.bilibili.com/home/userInfo' \
-b 'SESSDATA=xxx;DedeUserID=1;'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "status": true,
    "data": {
        "level_info": {
            "current_level": 5,
            "current_min": 10800,
            "current_exp": 14270,
            "next_exp": 28800
        },
        "bCoins": 10,
        "coins": 2.5,
        "face": "http:\/\/i2.hdslb.com\/bfs\/face\/480e2e98513aaeb65d2f2c76dbae750c4de722e9.jpg",
        "nameplate_current": null,
        "pendant_current": "http:\/\/i0.hdslb.com\/bfs\/face\/6550f53324c330f201a528e70ef305cb10ac2c01.png",
        "uname": "\u793e\u4f1a\u6613\u59d0QwQ",
        "userStatus": "\u6b63\u5f0f\u4f1a\u5458",
        "vipType": 2,
        "vipStatus": 1,
        "official_verify": -1,
        "pointBalance": 0
    }
}

</details>

登录用户信息(APP端)

http://app.bilibili.com/x/v2/account/myinfo

请求方式:GET

认证方式:仅可APP

鉴权方式:appkey

url参数:

参数名类型内容必要性备注
access_keystrAPP登录TokenAPP方式必要
appkeystrAPP密钥APP方式必要
tsnum当前时间戳APP方式必要
signstrAPP签名APP方式必要

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-3:API校验密匙错误
-101:账号未登录
-400:请求错误
messagestr错误信息默认为0
ttlnum1
dataobj信息本体

data对象:

字段类型内容备注
midnum用户UID
namestr用户昵称
signstr用户签名
coinsnum拥有硬币数
birthdaystr用户生日YYYY-MM-DD
facestr用户头像url
sexnum用户性别0:私密
1:男
2:女
levelnum用户等级0-6
ranknum1000作用尚不明确
silencenum用户是否被封禁0:正常
1:封禁
vipobj会员信息
email_statusnum是否验证邮箱地址0:未验证
1:已验证
tel_statusnum是否验证手机号0:未验证
1:已验证
officialobj认证信息
identificationnum1作用尚不明确
inviteobj
is_touristnum0作用尚不明确
pin_promptingnum0作用尚不明确

data中的vip对象:

字段类型内容备注
typenum大会员类型0:无
1:月度
2:年度
statusnum会员开通状态0:无
1:有
due_datenum大会员到期时间毫秒 时间戳
vip_pay_typenum会员开通状态0:无
1:有
theme_typenum会员开通状态0:无
1:有
labelobj大会员信息
avatar_subscriptnum是否显示会员图标0:不显示
1:显示
nickname_colorstr会员昵称颜色颜色码

vip中的label对象:

字段类型内容备注
pathstr作用尚不明确
textstr会员类型文字
label_themestr会员类型

data中的official对象:

字段类型内容备注
rolenum认证类型0:无
1 2:个人认证
3 4 5 6:机构认证
titlestr认证信息无为空
descstr认证备注无为空
typenum认证备注无为空

data中的invite对象:

字段类型内容备注
invite_remindnum1作用尚不明确
displaybooltrue作用尚不明确

示例:

curl -G 'http://app.bilibili.com/x/v2/account/myinfo' \
--data-urlencode 'access_key=xxx' \
--data-urlencode 'appkey=4409e2ce8ffd12b8' \
--data-urlencode 'ts=0' \
--data-urlencode 'sign=b8fb8480049c525994be6507a97ae0b6'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "mid": 293793435,
        "name": "社会易姐QwQ",
        "sign": "高中技术宅一枚,爱好MC&电子&8-bit音乐&数码&编程,资深猿厨,粉丝群:1136462265",
        "coins": 33.4,
        "birthday": "2002-03-05",
        "face": "http://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg",
        "sex": 1,
        "level": 5,
        "rank": 10000,
        "silence": 0,
        "vip": {
            "type": 2,
            "status": 1,
            "due_date": 1612454400000,
            "vip_pay_type": 1,
            "theme_type": 0,
            "label": {
                "path": "",
                "text": "年度大会员",
                "label_theme": "annual_vip"
            },
            "avatar_subscript": 1,
            "nickname_color": "#FB7299"
        },
        "email_status": 1,
        "tel_status": 1,
        "official": {
            "role": 0,
            "title": "",
            "desc": "",
            "type": -1
        },
        "identification": 1,
        "invite": {
            "invite_remind": 1,
            "display": true
        },
        "is_tourist": 0,
        "pin_prompting": 0
    }
}

</details>

登录用户状态数(双端)

http://api.bilibili.com/x/web-interface/nav/stat

请求方式:GET

认证方式:Cookie(SESSDATA)或APP

url参数:

参数名类型内容必要性备注
access_keystrAPP登录TokenAPP方式必要

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-101:账号未登录
messagestr错误信息默认为0
ttlnum1
dataobj信息本体
字段类型内容备注
followingnum关注数
followernum粉丝数
dynamic_countnum发布动态数

示例:

当前登录用户的状态数为粉丝596,关注754,发送的动态252

Cookie方式:

curl 'http://api.bilibili.com/x/web-interface/nav/stat' \
-b 'SESSDATA=xxx'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "following": 754,
        "follower": 596,
        "dynamic_count": 252
    }
}

</details>

APP方式:

curl -G 'http://api.bilibili.com/x/web-interface/nav/stat' \
--data-urlencode 'access_key=d907f51122c59599d580ade2315af971'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "following": 754,
        "follower": 596,
        "dynamic_count": 252
    }
}

</details>

获取硬币数

http://account.bilibili.com/site/getCoin

请求方式:GET

认证方式:仅可Cookie(SESSDATA)

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-101:账号未登录
statusbooltrue作用尚不明确
dataobj信息本体

data对象:

字段类型内容备注
money硬币为正数时:num
硬币为0时:null
当前硬币数

示例:

curl 'http://account.bilibili.com/site/getCoin' \
-b 'SESSDATA=xxx'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "status": true,
    "data": {
        "money": 42.4
    }
}

</details>


个人中心

获取我的信息

http://api.bilibili.com/x/member/web/account

请求方式:GET

认证方式:Cookie(SESSDATA)或APP

url参数:

参数名类型内容必要性备注
access_keystrAPP登录TokenAPP方式必要

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-101:账号未登录
messagestr错误信息默认为0
ttlnum1
dataobj信息本体

data对象:

字段类型内容备注
midnum我的UID
unamestr我的昵称
useridstr我的用户名
signstr我的签名
birthdaystr我的生日YYYY-MM-DD
sexstr我的性别男 女 保密
nick_freebool是否未设置昵称false:设置过昵称
true:未设置昵称
rankstr我的会员等级

示例:

curl 'http://api.bilibili.com/x/member/web/account' \
-b 'SESSDATA=xxx'

<details>
<summary>查看响应示例:</summary>

{
    "code":0,
    "message":"0",
    "ttl":1,
    "data":{
        "mid":293793435,
        "uname":"社会易姐QwQ",
        "userid":"bili_84675323391",
        "sign":"高中技术宅一枚,爱好MC&电子&8-bit音乐&数码&编程,资深猿厨,粉丝群:1136462265",
        "birthday":"2002-03-05",
        "sex":"男",
        "nick_free":false,
        "rank":"正式会员"
    }
}

</details>

查询每日奖励状态

http://api.bilibili.com/x/member/web/exp/reward

请求方式:GET

认证方式:Cookie(SESSDATA)或APP

url参数:

参数名类型内容必要性备注
access_keystrAPP登录TokenAPP方式必要

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-101:账号未登录
messagestr错误信息默认为0
ttlnum1
dataobj信息本体

data对象:

字段类型内容备注
loginbool每日登录false:未完成
true:已完成
完成奖励5经验
watchbool每日观看false:未完成
true:已完成
完成奖励5经验
coinsnum每日投币所奖励的经验上限为50
注:该值更新存在延迟
另外一个专门API
sharebool每日分享false:未完成
true:已完成
完成奖励5经验
emailbool绑定邮箱false:未完成
true:已完成
telbool绑定手机号false:未完成
true:已完成
首次完成完成奖励100经验
safe_questionbool设置密保问题false:未完成
true:已完成
identify_cardbool实名认证false:未完成
true:已完成
首次完成奖励50经验

示例:

curl 'http://api.bilibili.com/x/member/web/exp/reward' \
-b 'SESSDATA=xxx'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "login": true,
        "watch": true,
        "coins": 30,
        "share": true,
        "email": true,
        "tel": true,
        "safe_question": true,
        "identify_card": true
    }
}

</details>

查询每日投币获得经验数

http://www.bilibili.com/plus/account/exp.php

请求方式:GET

认证方式:仅可Cookie(SESSDATA)

鉴权方式:Cookie中DedeUserID存在且不为0

该接口实时更新,未发现延迟

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
messagestr错误信息默认为0
numbernum每日投币所奖励的经验上限为50<br

示例:

curl 'http://www.bilibili.com/plus/account/exp.php' \
-b 'SESSDATA=xxx;DedeUserID=1'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "message": "0",
    "number": 20
}

</details>

查询大会员状态

http://api.bilibili.com/x/vip/web/user/info

请求方式:GET

认证方式:仅可Cookie(SESSDATA)

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-101:账号未登录
messagestr错误信息默认为0
ttlnum1
dataobj信息本体

data对象:

字段类型内容备注
midnum我的UID
vip_typenum大会员类型0:无
1:月度
2:年度
vip_statusnum大会员状态1:正常
2:由于IP地址更换过于频繁,服务被冻结
3:你的大会员账号风险过高,大会员功能已被锁定
vip_due_datenum大会员到期时间时间戳 毫秒
vip_pay_typenum是否已购买大会员0:未购买
1:已购买
theme_typenum0作用尚不明确

示例:

curl 'http://api.bilibili.com/x/vip/web/user/info' \
-b 'SESSDATA=xxx'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "mid": 293793435,
        "vip_type": 2,
        "vip_status": 1,
        "vip_due_date": 1612454400000,
        "vip_pay_type": 1,
        "theme_type": 0
    }
}

</details>

查询账号安全情况

http://passport.bilibili.com/web/site/user/info

请求方式:GET

认证方式:Cookie(SESSDATA)或APP

鉴权方式:如用Cookie方式认证时Cookie中DedeUserID存在且不为0

url参数:

参数名类型内容必要性备注
access_keystrAPP登录TokenAPP方式必要

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-101:账号未登录
messagestr错误信息默认为0
ttlnum1
dataobj信息本体

data对象:

字段类型内容备注
account_infoobj账号绑定信息
account_safeobj密码安全信息
account_snsobj互联登录绑定信息
account_otherobj

data中的account_info对象:

字段类型内容备注
hide_telstr绑定的手机号星号隐藏部分信息
hide_mailstr绑定的邮箱星号隐藏部分信息
bind_telbool是否绑定手机号false:未绑定
true:已绑定
bind_mailbool是否绑定邮箱false:未绑定
true:已绑定
tel_verifybool是否验证手机号false:未验证
true:已验证
mail_verifybool是否验证邮箱false:未验证
true:已验证
unneeded_checkbool是否未设置密码false:已设置
true:未设置

data中的account_safe对象:

字段类型内容备注
Scorenum当前密码强度0-100
pwd_levelnum当前密码强度等级1:弱
2:中
3:强
securitybool当前密码是否安全false:不安全
true:安全

data中的account_sns对象:

字段类型内容备注
weibo_bindnum是否绑定微博0:未绑定
1:已绑定
qq_bindnum是否绑定qq0:未绑定
1:已绑定

data中的account_other对象:

字段类型内容备注
skipVerifyboolfalse作用尚不明确

示例:

curl 'http://passport.bilibili.com/web/site/user/info' \
-b 'SESSDATA=xxx;DedeUserID=1;'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "data": {
        "account_info": {
            "hide_tel": "153*****056",
            "hide_mail": "144****@qq.com",
            "bind_tel": true,
            "bind_mail": true,
            "tel_verify": true,
            "mail_verify": true,
            "unneeded_check": false
        },
        "account_safe": {
            "Score": 90,
            "pwd_level": 3,
            "security": true
        },
        "account_sns": {
            "weibo_bind": 1,
            "qq_bind": 1
        },
        "account_other": {
            "skipVerify": false
        }
    }
}

</details>

查询账号实名认证状态

http://api.bilibili.com/x/member/realname/status

请求方式:GET

认证方式:Cookie(SESSDATA)或APP

url参数:

参数名类型内容必要性备注
access_keystrAPP登录TokenAPP方式必要

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-101:账号未登录
messagestr错误信息默认为0
ttlnum1
dataobj信息本体

data对象:

字段类型内容备注
statusnum实名认证状态0:未认证
1:已认证

示例:

当前状态为已认证

curl 'http://api.bilibili.com/x/member/realname/status' \
-b 'SESSDATA=xxx'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "status": 1
    }
}

</details>

查询实名认证详细信息

http://api.bilibili.com/x/member/realname/apply/status

请求方式:GET

认证方式:Cookie(SESSDATA)或APP

url参数:

参数名类型内容必要性备注
access_keystrAPP登录TokenAPP方式必要

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-101:账号未登录
messagestr错误信息默认为0
ttlnum1
dataobj数据本体

data对象:

字段类型内容备注
statusnum认证状态1:已认证
3:未认证
remarkstr驳回信息默认为空
realnamestr实名姓名星号隐藏完全信息
cardstr证件号码星号隐藏部分信息
card_typenum证件类型代码0:身份证
2:港澳居民来往内地通行证
3:台湾居民来往大陆通行证
4:护照(中国签发)
5:外国人永久居留证
6:其他国家或地区身份证明
curl 'http://api.bilibili.com/x/member/realname/apply/status' \
-b 'SESSDATA=xxx'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "status": 1,
        "remark": "",
        "realname": "***",
        "card": "6****************7",
        "card_type": 0
    }
}

</details>

查询硬币变化情况

http://api.bilibili.com/x/member/web/coin/log

请求方式:GET

认证方式:Cookie(SESSDATA)或APP

仅能查询最近一周的情况

url参数:

参数名类型内容必要性备注
access_keystrAPP登录TokenAPP方式必要

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-101:账号未登录
messagestr错误信息默认为0
ttlnum1
dataobj数据本体

data对象:

字段类型内容备注
listarray变化记录条目列表
countnum变化记录条目数

data中的list数组:

类型内容备注
0obj变化记录条目1
nobj变化记录条目(n+1)
……obj…………

list数组中的对象:

字段类型内容备注
timestr变化时间YYYY-MM-DD HH:MM:SS
deltanum变化量正值为收入,负值为支出
reasonstr变化说明

示例:

curl 'http://api.bilibili.com/x/member/web/coin/log' \
-b 'SESSDATA=xxx'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "list": [
            {
                "time": "2020-05-19 23:58:29",
                "delta": -1,
                "reason": "给视频 BV1j5411s7M8 打赏"
            },
            {
                "time": "2020-05-19 16:02:53",
                "delta": -1,
                "reason": "给视频 BV1Ht4y117A1 打赏"
            },
            {
                "time": "2020-05-19 15:38:42",
                "delta": 0.1,
                "reason": "给视频 BV1nb411C7aa 打赏"
            },
            {
                "time": "2020-05-19 02:19:20",
                "delta": 1,
                "reason": "登录奖励"
            },
            {
                "time": "2020-05-18 22:34:04",
                "delta": -1,
                "reason": "给视频 BV1Bp4y1Q7uw 打赏"
            },
            {
                "time": "2020-05-18 22:33:59",
                "delta": -1,
                "reason": "给视频 BV1j5411s7M8 打赏"
            },
            {
                "time": "2020-05-18 02:45:53",
                "delta": 1,
                "reason": "登录奖励"
            },
            {
                "time": "2020-05-17 03:02:38",
                "delta": 1,
                "reason": "登录奖励"
            },
            {
                "time": "2020-05-16 01:57:02",
                "delta": 1,
                "reason": "登录奖励"
            },
            {
                "time": "2020-05-15 11:10:35",
                "delta": 0.2,
                "reason": "给视频 BV1Yt41137T6 打赏"
            },
            {
                "time": "2020-05-15 00:34:27",
                "delta": 1,
                "reason": "登录奖励"
            },
            {
                "time": "2020-05-14 02:11:37",
                "delta": 1,
                "reason": "登录奖励"
            },
            {
                "time": "2020-05-13 02:12:28",
                "delta": 1,
                "reason": "登录奖励"
            }
        ],
        "count": 13
    }
}

</details>

修改个人签名

http://api.bilibili.com/x/member/web/sign/update

请求方式:POST

认证方式:Cookie(SESSDATA)或APP

修改签名不会立即生效,会等待审核队列稍后生效

正文参数( application/x-www-form-urlencoded ):

参数名类型内容必要性备注
access_keystrAPP登录TokenAPP方式必要
user_signstr要设置的签名内容非必要删除签名留空或省去即可
最多支持70个字符
csrfstrCSRF Token(位于cookie)Cookie方式必要

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-101:账号未登录
-111:csrf校验失败
40015:签名包含敏感词
40021:签名不能包含表情图片
40022:签名过长
messagestr错误信息默认为0
ttlnum1

示例:

更新个人标签为高中技术宅一枚,爱好MC&电子&8-bit音乐&数码&编程,资深猿厨,粉丝群:1136462265

curl 'http://api.bilibili.com/x/member/web/sign/update' \
--data-urlencode 'user_sign=高中技术宅一枚,爱好MC&电子&8-bit音乐&数码&编程,粉丝群:1136462265' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'

<details>
<summary>查看响应示例:</summary>

{
    "code":0,
    "message":"0",
    "ttl":1
}

</details>


用户基本信息

用户详细信息1 (用于空间)

http://api.bilibili.com/x/space/acc/info

请求方式:GET

认证方式:Cookie(SESSDATA)

url参数:

参数名类型内容必要性备注
midnum目标用户UID必要

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-400:请求错误
messagestr错误信息默认为0
ttlnum1
dataobj信息本体

data对象:

字段类型内容备注
midnumUID
namestr昵称
sexstr性别男 女 保密
facestr头像链接
signstr签名
ranknum10000作用尚不明确
levelnum当前等级0-6级
jointimenum0作用尚不明确
moralnum0作用尚不明确
silencenum封禁状态0:正常
1:被封
birthdaystr生日MM-DD
coinsnum硬币数需要登录(Cookie)
只能查看自己的
默认为0
fans_badgebool是否具有粉丝勋章false:无
true:有
officialobj认证信息
vipobj大会员信息
pendantobj头像框信息
nameplateobj勋章信息
is_followedbool是否关注此用户true:已关注
false:未关注
需要登录(Cookie)
未登录恒为false
top_photostr主页头图链接
themeobj作用尚不明确
sys_noticeobj系统通知无内容则为空

data中的official对象:

字段类型内容备注
rolenum认证类型0:无
1 2:个人认证
3 4 5 6:机构认证
titlestr认证信息无为空
descstr认证备注无为空
typenum是否认证-1:无
0:认证

data中的vip对象:

字段类型内容备注
typenum大会员类型0:无
1:月会员
2:年会员
statusnum大会员状态0:无
1:有
theme_typenum0作用尚不明确

data中的pendant对象:

字段类型内容备注
pidnum头像框id详细说明有待补充
namestr头像框名称
imagestr头像框图片url
expirenum0作用尚不明确

data中的nameplate对象:

字段类型内容备注
nidnum勋章id详细说明有待补充
namestr勋章名称
imagestr挂件图片url 正常
image_smallstr勋章图片url 小
levelstr勋章等级
conditionstr勋章条件

data中的sys_notice对象:

字段类型内容备注
idnum系统提示类型ID详细说明有待补充
contentstr提示信息
urlstr提示信息链接url

示列:

查询用户UID=2的详细信息

curl -G 'http://api.bilibili.com/x/space/acc/info' \
--data-urlencode 'mid=2' \
-b 'SESSDATA=xxx'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "mid": 2,
        "name": "碧诗",
        "sex": "男",
        "face": "http://i0.hdslb.com/bfs/app/3e60b20604b6fdc7d081eb6a1ec72aa47c5a3964.jpg",
        "sign": "kami.im 直男过气网红 # av362830 “We Are Star Dust”",
        "rank": 20000,
        "level": 6,
        "jointime": 0,
        "moral": 0,
        "silence": 0,
        "birthday": "09-19",
        "coins": 0,
        "fans_badge": true,
        "official": {
            "role": 2,
            "title": "bilibili创始人(站长)",
            "desc": "",
            "type": 0
        },
        "vip": {
            "type": 2,
            "status": 1,
            "theme_type": 0
        },
        "pendant": {
            "pid": 76,
            "name": "管理员",
            "image": "http://i2.hdslb.com/bfs/face/02a3b79edef0f0e682de7f5dca7b6b5fe36d5f65.png",
            "expire": 0
        },
        "nameplate": {
            "nid": 10,
            "name": "见习偶像",
            "image": "http://i1.hdslb.com/bfs/face/e93dd9edfa7b9e18bf46fd8d71862327a2350923.png",
            "image_small": "http://i2.hdslb.com/bfs/face/275b468b043ec246737ab8580a2075bee0b1263b.png",
            "level": "普通勋章",
            "condition": "所有自制视频总播放数\u003e=10万"
        },
        "is_followed": true,
        "top_photo": "http://i0.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png",
        "theme": {},
        "sys_notice": {}
    }
}

</details>

查询到的信息解析如下:

用户昵称为:碧诗

性别:男

用户的头像为

http://i1.hdslb.com/bfs/face/3e60b20604b6fdc7d081eb6a1ec72aa47c5a3964.jpg

等级:6级

生日:09-19

粉丝勋章状态:拥有

认证:个人认证

认证名称: bilibili创始人(站长)

大会员类型:年度

大会员状态:已开通

头像框:管理员

http://i2.hdslb.com/bfs/face/02a3b79edef0f0e682de7f5dca7b6b5fe36d5f65.png

粉丝勋章: 见习偶像

http://i1.hdslb.com/bfs/face/e93dd9edfa7b9e18bf46fd8d71862327a2350923.png

空间头图

http://i2.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png

用户详细信息2 (用于名片)

http://api.bilibili.com/x/web-interface/card

请求方式:GET

认证方式:Cookie(SESSDATA)

url参数:

参数名类型内容必要性备注
midnum目标用户UID必要
photobool是否请求用户主页头图非必要true:是
false:否

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-400:请求错误
messagestr错误信息默认为0
ttlnum1
dataobj信息本体

data对象:

字段类型内容备注
cardobj卡片信息

data中的card对象:

字段类型内容备注
midnum用户UID
approveboolfalse作用尚不明确
namestr用户昵称
sexstr用户性别男 女 保密
facestr用户头像链接
DisplayRankstr0作用尚不明确
regtimenum0作用尚不明确
spacestanum0作用尚不明确
birthdaystr作用尚不明确
placestr作用尚不明确
descriptionstr作用尚不明确
articlenum0作用尚不明确
attentionsarray作用尚不明确
fansnum粉丝数
friendnum关注数
attentionnum关注数
level_infoobj等级
pendantobj挂件
nameplateobj勋章
Officialobj认证信息
official_verifyobj认证信息2
vipobj大会员状态
spaceobj主页头图
followingbool是否关注此用户true:已关注
false:未关注
需要登录(Cookie)
未登录为false
archive_countnum用户稿件数
article_countnum0作用尚不明确
followernum粉丝数

card中的level_info对象:

字段类型内容备注
current_levelnum当前等级0-6级
current_minnum0作用尚不明确
current_expnum0作用尚不明确
next_expnum0作用尚不明确

card中的pendant对象:

字段类型内容备注
pidnum挂件id
namestr挂件名称
imagestr挂件图片url
expirenum0作用尚不明确

card中的nameplate对象:

字段类型内容备注
nidnum勋章id详细说明有待补充
namestr勋章名称
imagestr挂件图片url 正常
image_smallstr勋章图片url 小
levelstr勋章等级
conditionstr勋章条件

card中的Official对象:

字段类型内容备注
rolenum认证类型0:无
1 2:个人认证
3 4 5 6:机构认证
titlestr认证信息无为空
descstr认证备注无为空
typenum是否认证-1:无
0:认证

card中的official_verify对象:

字段类型内容备注
typenum是否认证-1:无
0:认证
descstr认证信息无为空

card中的vip对象:

字段类型内容备注
vipTypenum大会员类型0:无
1:月会员
2:年会员
dueRemarkstr作用尚不明确
accessStatusnum0作用尚不明确
vipStatusnum大会员状态0:无
1:有
vipStatusWarnstr作用尚不明确
theme_typenum0作用尚不明确

card中的space对象:

字段类型内容备注
s_imgstr主页头图url 小图
l_imgstr主页头图url 正常

示列:

curl -G 'api.bilibili.com/x/web-interface/card' \
--data-urlencode 'mid=2' \
--data-urlencode 'photo=true' \
-b 'SESSDATA=xxx'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "card": {
            "mid": "2",
            "name": "碧诗",
            "approve": false,
            "sex": "男",
            "rank": "20000",
            "face": "http://i1.hdslb.com/bfs/face/3e60b20604b6fdc7d081eb6a1ec72aa47c5a3964.jpg",
            "DisplayRank": "0",
            "regtime": 0,
            "spacesta": 0,
            "birthday": "",
            "place": "",
            "description": "",
            "article": 0,
            "attentions": [],
            "fans": 810968,
            "friend": 192,
            "attention": 192,
            "sign": "kami.im 直男过气网红 # av362830 “We Are Star Dust”",
            "level_info": {
                "current_level": 6,
                "current_min": 0,
                "current_exp": 0,
                "next_exp": 0
            },
            "pendant": {
                "pid": 76,
                "name": "管理员",
                "image": "http://i2.hdslb.com/bfs/face/02a3b79edef0f0e682de7f5dca7b6b5fe36d5f65.png",
                "expire": 0
            },
            "nameplate": {
                "nid": 10,
                "name": "见习偶像",
                "image": "http://i0.hdslb.com/bfs/face/e93dd9edfa7b9e18bf46fd8d71862327a2350923.png",
                "image_small": "http://i1.hdslb.com/bfs/face/275b468b043ec246737ab8580a2075bee0b1263b.png",
                "level": "普通勋章",
                "condition": "所有自制视频总播放数\u003e=10万"
            },
            "Official": {
                "role": 2,
                "title": "bilibili创始人(站长)",
                "desc": "",
                "type": 0
            },
            "official_verify": {
                "type": 0,
                "desc": "bilibili创始人(站长)"
            },
            "vip": {
                "vipType": 2,
                "dueRemark": "",
                "accessStatus": 0,
                "vipStatus": 1,
                "vipStatusWarn": "",
                "theme_type": 0
            }
        },
        "space": {
            "s_img": "http://i2.hdslb.com/bfs/space/768cc4fd97618cf589d23c2711a1d1a729f42235.png",
            "l_img": "http://i2.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png"
        },
        "following": true,
        "archive_count": 35,
        "article_count": 0,
        "follower": 810968
    }
}

</details>

本用户详细信息

http://api.bilibili.com/x/space/myinfo

请求方式:GET

认证方式:Cookie(SESSDATA)

功能同「登录用户信息1

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-101:未登录
messagestr错误信息默认为0
ttlnum1
dataobj信息本体

data对象:

字段类型内容备注
midnumUID
namestr昵称
sexstr性别男 女 保密
facestr头像图片url
signstr签名
ranknum10000作用尚不明确
levelnum当前等级0-6级
jointimenum0作用尚不明确
moralnum节操默认70
silencenum封禁状态0:正常
1:被封
email_statusnum已验证邮箱0:未验证
1:已验证
tel_statusnum已验证手机号0:未验证
1:已验证
identificationnum1作用尚不明确
vipobj大会员状态
birthdaynum生日时间戳
is_touristnum0作用尚不明确
is_fake_accountnum0作用尚不明确
pin_promptingnum0作用尚不明确
is_deletednum0作用尚不明确
coinsnum硬币数
followingnum粉丝数
followernum粉丝数

data中的vip对象:

字段类型内容备注
typenum大会员类型0:无
1:月会员
2:年会员
statusnum大会员状态0:无
1:有
due_datenum大会员到期时间毫秒 时间戳
vip_pay_typenum1作用尚不明确
theme_typenum0作用尚不明确
labelobj???

vip中的label对象:

字段类型内容备注
pathstr作用尚不明确

data中的pendant对象:

字段类型内容备注
pidnum挂件id详细说明有待补充
namestr挂件名称
imagestr挂件图片url
expirenum0作用尚不明确

data中的nameplate对象:

字段类型内容备注
nidnum勋章id详细说明有待补充
namestr勋章名称
imagestr挂件图片url 正常
image_smallstr勋章图片url 小
levelstr勋章等级
conditionstr勋章条件

data中的Official对象:

字段类型内容备注
rolenum认证类型0:无
1 2:个人认证
3 4 5 6:机构认证
titlestr认证信息无为空
descstr认证备注无为空
typenum是否认证-1:无
0:认证

data中的level_exp对象:

字段类型内容备注
current_levelnum当前等级0-6级
current_minnum0作用尚不明确
current_expnum0作用尚不明确
next_expnum0作用尚不明确

示例:

curl -G 'api.bilibili.com/x/space/myinfo' \
-b 'SESSDATA=xxx'

<details>
<summary>查看响应示例:</summary>

{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "mid": 293793435,
        "name": "社会易姐QwQ",
        "sex": "男",
        "face": "http://i2.hdslb.com/bfs/face/480e2e98513aaeb65d2f2c76dbae750c4de722e9.jpg",
        "sign": "咕咕咕咕咕",
        "rank": 10000,
        "level": 5,
        "jointime": 0,
        "moral": 70,
        "silence": 0,
        "email_status": 1,
        "tel_status": 1,
        "identification": 1,
        "vip": {
            "type": 2,
            "status": 1,
            "due_date": 1612454400000,
            "vip_pay_type": 1,
            "theme_type": 0,
            "label": {
                "path": ""
            }
        },
        "pendant": {
            "pid": 294,
            "name": "茶啊二中",
            "image": "http://i0.hdslb.com/bfs/face/5bb7bef5107e448892ab54539298d50eb678de05.png",
            "expire": 0
        },
        "nameplate": {
            "nid": 0,
            "name": "",
            "image": "",
            "image_small": "",
            "level": "",
            "condition": ""
        },
        "official": {
            "role": 0,
            "title": "",
            "desc": "",
            "type": -1
        },
        "birthday": 1015257600,
        "is_tourist": 0,
        "is_fake_account": 0,
        "pin_prompting": 0,
        "is_deleted": 0,
        "level_exp": {
            "current_level": 5,
            "current_min": 10800,
            "current_exp": 13985,
            "next_exp": 28800
        },
        "coins": 10.4,
        "following": 358,
        "follower": 358
    }
}

</details>