Bilibili直播相关API

你知唔知我系靓仔

Bilibili直播相关API

直播间管理笔记概要

开通直播间

  • API: https://api.live.bilibili.com/xlive/app-blink/v1/preLive/CreateRoom
  • 请求方式: POST
  • 认证方式: Cookie(SESSDATA)
  • 鉴权方式: Cookie中bili_jct的值正确并与csrf相同
  • 参数:
    • platform: 客户端(默认值web)
    • visit_id: 未知(默认空)
    • csrf: CSRF Token(位于cookie)
    • csrf_token: CSRF Token(位于 cookie)
  • 返回值:
    • code: 返回值(0:成功,1531193016:已经创建直播间,-400:请求错误)
    • data.roomID: 直播间房间号

更新直播间标题

  • API: https://api.live.bilibili.com/room/v1/Room/update
  • 请求方式: POST
  • 认证方式: Cookie(SESSDATA)
  • 鉴权方式: Cookie中bili_jct的值正确并与csrf相同
  • 参数:
    • room_id: 直播间id
    • title: 直播间标题(最大20字符)
    • csrf: CSRF Token(位于cookie)
    • csrf_token: CSRF Token(位于 cookie)
  • 返回值:
    • code: 返回值(0:成功,65530:token错误,1:错误)

开始直播

  • API: https://api.live.bilibili.com/room/v1/Room/startLive
  • 请求方式: POST
  • 认证方式: Cookie(SESSDATA)
  • 鉴权方式: Cookie中bili_jct的值正确并与csrf相同
  • 参数:
    • room_id: 直播间id
    • area_v2: 直播分区id(子分区id)
    • platform: 直播平台
    • csrf: CSRF Token(位于cookie)
  • 返回值:
    • code: 返回值(0:成功,65530:token错误,1:错误,60009:分区不存在,60024:目标分区需要人脸认证,60013:地区受实名认证限制)
    • data.rtmp.addr: RTMP推流地址
    • data.rtmp.code: RTMP推流参数

关闭直播

  • API: https://api.live.bilibili.com/room/v1/Room/stopLive
  • 请求方式: POST
  • 认证方式: Cookie(SESSDATA)
  • 鉴权方式: Cookie中bili_jct的值正确并与csrf相同
  • 参数:
    • room_id: 直播间id
    • csrf: CSRF Token(位于cookie)
  • 返回值:
    • code: 返回值(0:成功,65530:token错误,-400:没有权限)
    • data.change: 是否改变状态
    • data.status: 状态(PREPARING)

更新直播间公告

  • API: https://api.live.bilibili.com/xlive/app-blink/v1/index/updateRoomNews
  • 请求方式: POST
  • 认证方式: Cookie(SESSDATA)
  • 鉴权方式: Cookie中bili_jct的值正确并与csrf相同
  • 参数:
    • room_id: 直播间id
    • uid: 用户id
    • content: 公告内容(最大60个字符,可以为空)
    • csrf: CSRF Token(位于cookie)
    • csrf_token: CSRF Token(位于 cookie)
  • 返回值:
    • code: 返回值(0:成功,65530:token错误,1:错误)

编辑直播间标签

  • API: https://api.live.bilibili.com/room/v1/Room/update
  • 请求方式: POST
  • 认证方式: Cookie(SESSDATA)
  • 鉴权方式: Cookie中bili_jct的值正确并与csrf相同
  • 参数:
    • room_id: 直播间id
    • add_tag: 要添加的标签(最大10个字符)
    • del_tag: 要删除的标签
    • csrf: CSRF Token(位于cookie)
    • csrf_token: CSRF Token(位于 cookie)
  • 返回值:
    • code: 返回值(0:成功,65530:token错误,1:错误)

B站Cookies值简介

  • SESSDATA: 用于获取用户信息,通常在GET操作下提供。
  • bili_jct: 用于操作用户数据,通常在POST操作下提供。
  • buvid3 / buvid4: 设备验证码,通常不需要提供,但部分接口需要。
  • dedeuserid: 用户UID,几乎不需要提供。
  • ac_time_value: 用于刷新Cookies,登录状态过期后使用。

Web端Cookie刷新

  • 检查是否需要刷新: 通过特定接口检查Cookie是否需要刷新。
  • 生成CorrespondPath: 使用RSA-OAEP算法加密特定字符串生成。
  • 获取refresh_csrf: 通过特定URL获取实时刷新口令。
  • 刷新Cookie: 通过POST请求刷新Cookie。
  • 确认更新: 使旧的refresh_token对应的Cookie失效。

具体操作步骤

  1. 检查是否需要刷新:

    • URL: https://passport.bilibili.com/x/passport-login/web/cookie/info
    • 请求方式: GET
    • 参数: csrf (位于Cookie中的bili_jct字段)
  2. 生成CorrespondPath:

    • 使用RSA-OAEP算法加密字符串refresh_${timestamp}
    • 公钥: 提供JWK和PEM格式。
  3. 获取refresh_csrf:

    • URL: https://www.bilibili.com/correspond/1/{correspondPath}
    • 请求方式: GET
    • 参数: correspondPath (由生成CorrespondPath算法加密获得)
  4. 刷新Cookie:

    • URL: https://passport.bilibili.com/x/passport-login/web/cookie/refresh
    • 请求方式: POST
    • 参数: csrf, refresh_csrf, source, refresh_token
  5. 确认更新:

    • URL: https://passport.bilibili.com/x/passport-login/web/confirm/refresh
    • 请求方式: POST
    • 参数: csrf, refresh_token
        {
            "name": "Bilibili Live - RTMP | 哔哩哔哩直播 - RTMP",
            "more_info_link": "https://link.bilibili.com/p/help/index?id=4#/tools-tutorial",
            "stream_key_link": "https://link.bilibili.com/p/center/index#/my-room/start-live",
            "alt_names": [
                "Bilibili Live"
            ],
            "servers": [
                {
                    "name": "Global - Primary | 全球 - 主要",
                    "url": "rtmp://live-push.bilivideo.com/live-bvc/"
                },
                {
                    "name": "Non Chinese Mainland - Primary | 非中国大陆地区 - 主要",
                    "url": "rtmp://bdy.live-push.bilivideo.com/live-bvc/"
                },
                {
                    "name": "Chinese Mainland - Backup | 中国大陆地区 - 备用",
                    "url": "rtmp://txy2.live-push.bilivideo.com/live-bvc/"
                },
                {
                    "name": "Non Chinese Mainland - Backup | 非中国大陆地区 - 备用",
                    "url": "rtmp://txy.live-push.bilivideo.com/live-bvc/"
                }
            ],
            "supported video codecs": [
                "h264"
            ]
        }

https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/docs/live/manage.md https://nemo2011.github.io/bilibili-api/#/refresh_cookies https://socialsisteryi.github.io/bilibili-API-collect/docs/login/cookie_refresh.html#%E7%A1%AE%E8%AE%A4%E6%9B%B4%E6%96%B0