bac

播放器

web 播放器信息

web 播放器的信息接口,提供正常播放需要的元数据,包括:智能防挡弹幕、字幕、章节看点等。

https://api.bilibili.com/x/player/wbi/v2
https://api.bilibili.com/x/player/v2

请求方式:GET

URL参数:

参数名 类型 内容 必要性 备注
aid num 稿件 avid 必要 (可选) aid 与 bvid 任选
bvid str 稿件 bvid 必要 (可选) aid 与 bvid 任选
cid num 稿件 cid 必要  
season_id num 番剧 season_id 不必要  
ep_id num 剧集 ep_id 不必要  
w_rid str WBI 签名 不必要  
wts num 当前 unix 时间戳 不必要  

JSON回复:

根对象:

字段 类型 内容 备注
code num 返回值 0: 成功
-400: 请求错误
message str 错误信息 默认为 0
ttl num 1  
data obj 数据本体  

data 对象:

字段 类型 内容 备注
aid num 视频 aid  
bvid str 视频 bvid  
allow_bp bool    
no_share bool 禁止分享?  
cid num 视频 cid  
dm_mask obj webmask 防挡字幕信息 若无则没有防挡功能
subtitle obj 字幕信息 若无则没有字幕, 若不登陆则为空
view_points array 分段章节信息  
ip_info obj 请求 IP 信息  
login_mid num 登录用户 mid  
login_mid_hash str    
is_owner bool 是否为该视频 UP 主  
name str    
permission num    
level_info obj 登录用户等级信息  
vip obj 登录用户 VIP 信息  
answer_status num 答题状态  
block_time num 封禁时间?  
role str    
last_play_time num 上次观看时间?  
last_play_cid num 上次观看 cid?  
now_time num 当前 UNIX 秒级时间戳  
online_count num 在线人数  
need_login_subtitle bool 是否必须登陆才能查看字幕 是的
preview_toast str 为创作付费,购买观看完整视频\|购买观看  
interaction obj 互动视频资讯 若非互动视频,则无该栏位(直接没有该键,而非栏位值为空)
options obj    
guide_attention any    
jump_card any    
operation_card any    
online_switch obj    
fawkes obj 播放器相关信息?  
show_switch obj    
bgm_info obj 背景音乐信息  
toast_block bool    
is_upower_exclusive bool 是否为充电专属视频  
is_upower_play bool    
is_ugc_pay_preview bool    
elec_high_level obj 充电专属视频信息  
disable_show_up_info bool    

data 对象中的 options 对象:

字段 类型 内容 备注
is_360 bool 是否 360 全景视频  
without_vip bool    

data 对象中的 bgm_info 对象:

字段 类型 内容 备注
music_id str 音乐 id  
music_title str 音乐标题  
jump_url str 跳转 URL  

data 对象中的 dm_mask 对象 (如果有):

字段 类型 内容 备注
cid num 视频 cid  
plat num 未知  
fps num webmask 取样 fps  
time num 未知  
mask_url str webmask 资源 url  

解析 webmask 请看 智能防挡弹幕

data 对象中的 subtitle 对象:

字段 类型 内容 备注
allow_submit bool true  
lan str ””  
lan_doc str ””  
subtitles array   不登录为 []

subtitle 对象中的 subtitles 数组内的元素:

字段 类型 内容 备注
ai_status num    
ai_type num    
id num    
id_str str   和 id 不一样
is_lock bool    
lan str 语言类型英文字母缩写  
lan_doc str 语言类型中文名称  
subtitle_url str 资源 url 地址  
type num 0  

data对象中的view_point 数组内的元素:

字段 类型 内容 备注
content str 分段章节名  
from num 分段章节起始秒数  
to num 分段章节结束秒数  
type num    
imgUrl str 图片资源地址  
logoUrl str ””  
team_type str    
team_name str    

data 对象中的 interaction 对象 (如果有):

字段 类型 内容 备注
graph_version num 剧情图id  
msg str   未登入有机会返回 登录后才能体验全部结局哦~
error_toast str 错误信息? 所有互动视频皆返回 剧情图被修改已失效,不确定有没有例外
mark num 0?  
need_reload num 0?  

data对象中的elec_high_level对象:

字段 类型 内容 备注
privilege_type num 解锁视频所需最低定价档位的代码 充电档位代码与定价
title str 提示标题 该视频为「{充电档位名称}」专属视频
sub_title str 提示子标题 开通「{充电档位定价}元档包月充电」即可观看
show_button bool 是否显示按钮  
button_text str 按钮文本 去开通
jump_url obj 跳转url信息 详细信息有待补充
intro str 充电介绍语  
open bool (?)  
new bool (?)  
question_text str (?)  
qa_detail_link str (?)  

示例:

未登录, aid=1906473802

curl -G 'https://api.bilibili.com/x/player/wbi/v2' \
--url-query 'bvid=BV1MU411S7iJ' \
--url-query 'aid=1906473802' \
--url-query 'cid=1625992822'
查看响应示例: ```json { "code": 0, "message": "0", "ttl": 1, "data": { "aid": 1906473802, "bvid": "BV1MU411S7iJ", "allow_bp": false, "no_share": false, "cid": 1625992822, "max_limit": 1000, "page_no": 1, "has_next": false, "ip_info": { "ip": "104.28.152.138", "zone_ip": " 10.163.150.25", "zone_id": 29409280, "country": "美国", "province": "加利福尼亚州", "city": "东洛杉矶" }, "login_mid": 0, "login_mid_hash": "", "is_owner": false, "name": "", "permission": "0", "level_info": { "current_level": 0, "current_min": 0, "current_exp": 0, "next_exp": 0, "level_up": 0 }, "vip": { "type": 0, "status": 0, "due_date": 0, "vip_pay_type": 0, "theme_type": 0, "label": { "path": "", "text": "", "label_theme": "", "text_color": "", "bg_style": 0, "bg_color": "", "border_color": "", "use_img_label": false, "img_label_uri_hans": "", "img_label_uri_hant": "", "img_label_uri_hans_static": "", "img_label_uri_hant_static": "" }, "avatar_subscript": 0, "nickname_color": "", "role": 0, "avatar_subscript_url": "", "tv_vip_status": 0, "tv_vip_pay_type": 0, "tv_due_date": 0, "avatar_icon": { "icon_resource": {} } }, "answer_status": 0, "block_time": 0, "role": "", "last_play_time": 0, "last_play_cid": 0, "now_time": 1725002188, "online_count": 1, "need_login_subtitle": false, "view_points": [], "preview_toast": "为创作付费,购买观看完整视频|购买观看", "options": { "is_360": false, "without_vip": false }, "guide_attention": [], "jump_card": [], "operation_card": [], "online_switch": { "enable_gray_dash_playback": "500", "new_broadcast": "1", "realtime_dm": "1", "subtitle_submit_switch": "1" }, "fawkes": { "config_version": 30787, "ff_version": 21289 }, "show_switch": { "long_progress": false }, "bgm_info": { "music_id": "MA436038343856245020", "music_title": "Unwelcome school", "jump_url": "https://music.bilibili.com/h5/music-detail?music_id=MA436038343856245020&cid=1625992822&aid=1906473802" }, "toast_block": false, "is_upower_exclusive": false, "is_upower_play": false, "is_ugc_pay_preview": false, "elec_high_level": { "privilege_type": 0, "title": "", "sub_title": "", "show_button": false, "button_text": "", "jump_url": "", "intro": "", "new": false }, "disable_show_up_info": false } } ```

已登陆, aid=60977932

curl -G 'https://api.bilibili.com/x/player/v2' \
--url-query 'aid=60977932' \
--url-query 'cid=106101299' \
-b 'SESSDATA=xxx'
查看响应示例: ```json { "code": 0, "message": "0", "ttl": 1, "data": { "aid": 60977932, "bvid": "BV1Jt411P77c", "allow_bp": false, "no_share": false, "cid": 106101299, "max_limit": 1000, "page_no": 1, "has_next": true, "ip_info": { "ip": "108.181.22.55", "zone_ip": " 172.27.132.5", "zone_id": 29409296, "country": "美国", "province": "加利福尼亚州", "city": "洛杉矶" }, "login_mid": 616368979, "login_mid_hash": "445e7035", "is_owner": false, "name": "淡紫玲儿", "permission": "10000,1001", "level_info": { "current_level": 3, "current_min": 1500, "current_exp": 2962, "next_exp": 4500, "level_up": -62135596800 }, "vip": { "type": 1, "status": 0, "due_date": 1665417600000, "vip_pay_type": 0, "theme_type": 0, "label": { "path": "", "text": "", "label_theme": "", "text_color": "", "bg_style": 0, "bg_color": "", "border_color": "", "use_img_label": true, "img_label_uri_hans": "", "img_label_uri_hant": "", "img_label_uri_hans_static": "https://i0.hdslb.com/bfs/vip/d7b702ef65a976b20ed854cbd04cb9e27341bb79.png", "img_label_uri_hant_static": "https://i0.hdslb.com/bfs/activity-plat/static/20220614/e369244d0b14644f5e1a06431e22a4d5/KJunwh19T5.png" }, "avatar_subscript": 0, "nickname_color": "", "role": 0, "avatar_subscript_url": "", "tv_vip_status": 0, "tv_vip_pay_type": 0, "tv_due_date": 0, "avatar_icon": { "icon_resource": {} } }, "answer_status": 0, "block_time": 0, "role": "0", "last_play_time": 0, "last_play_cid": 0, "now_time": 1725003260, "online_count": 1, "need_login_subtitle": false, "subtitle": { "allow_submit": true, "lan": "zh-CN", "lan_doc": "中文(中国)", "subtitles": [ { "id": 13643112644608002, "lan": "zh-Hans", "lan_doc": "中文(简体)", "is_lock": true, "subtitle_url": "//aisubtitle.hdslb.com/bfs/subtitle/c49b18a284739d99df1e3723cdf72c0c82db98e0.json?auth_key=1725003260-5d0391a07f4f47f6960f60cf5045dff3-0-fc16c1f67a6b41edcb2a89d5e0c9bfdd", "type": 0, "id_str": "13643112644608002", "ai_type": 0, "ai_status": 0 }, { "id": 13643200114196484, "lan": "en-US", "lan_doc": "英语(美国)", "is_lock": true, "subtitle_url": "//aisubtitle.hdslb.com/bfs/subtitle/2b38bc0f5d7671176964d4c3de441ed37568500c.json?auth_key=1725003260-5f709a74aa884751b77f86b6f6a48078-0-9b2fc3c18b99b1bf0cc7c7e63d18f686", "type": 0, "id_str": "13643200114196484", "ai_type": 0, "ai_status": 0 } ] }, "view_points": [], "preview_toast": "为创作付费,购买观看完整视频|购买观看", "options": { "is_360": false, "without_vip": false }, "guide_attention": [], "jump_card": [], "operation_card": [], "online_switch": { "enable_gray_dash_playback": "500", "new_broadcast": "1", "realtime_dm": "1", "subtitle_submit_switch": "1" }, "fawkes": { "config_version": 30787, "ff_version": 21289 }, "show_switch": { "long_progress": false }, "bgm_info": null, "toast_block": false, "is_upower_exclusive": false, "is_upower_play": false, "is_ugc_pay_preview": false, "elec_high_level": { "privilege_type": 0, "title": "", "sub_title": "", "show_button": false, "button_text": "", "jump_url": "", "intro": "", "new": false }, "disable_show_up_info": false } } ```

播放反馈

https://app.bilibili.com/x/resource/laser2

请求方式: POST

注: 该接口不传 Cookie

URL参数:

参数名 类型 内容 必要性 备注
mid num 当前用户 mid 不必要 未登录为空
buvid str BUVID (APP) 或 buvid3 (Web) 必要 可为任意非空字符串
app_key str APP 密钥 必要 Web: web_player
可为任意非空字符串
url str 日志 URL 非必要 上传接口 得到的 upos 协议 URL
task_type num 任务类型 非必要 300: 播放卡顿
301: 进度条君无法调戏
354: 校园网无法访问
303: 弹幕无法显示
553: 跳过首尾时间有误
304: 出现浮窗广告
305: 无限小电视
302: 音画不同步
306: 黑屏
307: 其他

JSON回复:

字段 类型 内容 备注
code num 返回值 0: 成功
-400: 请求错误
message str 错误信息 默认为 0
ttl num 1  
data obj 数据本体  

data 对象:

字段 类型 内容 备注
task_id num 任务 ID?  

示例:

播放反馈无限小电视, 不登录, 不传文件, buvid 为 chenrui-in-icu

curl -X POST "https://app.bilibili.com/x/resource/laser2" \
--data-urlencode "buvid=chenrui-in-icu" \
--data-urlencode "app_key=web_player" \
--data-urlencode "task_type=305"
查看响应示例: ```json { "code": 0, "message": "0", "ttl": 1, "data": { "task_id": 850448532 } } ```