在某些特殊的时刻,我们有时可能会需要获取CID以及弹幕文件,这一个时候我们可以使用B站自带的API或者浏览器的控制台进行获取他们。(注意以下方法属于个人研究,不是 B 站官方提供的正式服务,随时可能会失效)(由于B站更新了API,本次更新较多,前面的方法大部分都已经失效)
1、控制台获取CID [当前仍可以使用]

以这一个视频为例,我们在电脑浏览器上按F12(开发者模式,Safari为Option+Command+I),进入控制台,直接输入cid后按回车,返回的值即为当前所在p的CID。
举例:
> cid
<· "177948638" · 2021年2月21日更新:
由于现在B站已经将cid直接嵌入至网页HTML中,如果需要获得对应的所有p的cid,可以直接在控制台中输入:
window.__INITIAL_STATE__.videoData.pages 返回的JSON值中就包含了所有p的cid(示例可能会较长,如果要参考,可以到页面底部查看)
2、B站API获取CID(新API)[当前仍可以使用]

以这一个视频(BV1kK4y1Y7Zq)为例,我们在电脑浏览器上按F12(开发者模式,Safari为Option+Command+I),进入“网络”选项卡,可以找到右侧的这样的一串数据,中间就存在了CID值。

我们在这里的“标头”部分,不难发现,这里有一个链接:https://api.bilibili.com/x/player/pagelist?bvid=BV1kK4y1Y7Zq&jsonp=jsonp
返回数据示例:
{
"code":0,
"message":"0",
"ttl":1,
"data":[
{
"cid":227684649,
"page":1,
"from":"vupload",
"part":"8.12天文社上山观测",
"duration":225,
"vid":"",
"weblink":"",
"dimension":{
"width":3840,
"height":2160,
"rotate":0
}
}
]
} 这里的数据,是按照p的顺序进行排列的。举个例子,如果我们要获取第一个p的CID号,只需要找到第一个CID值就可以了。第二个p就是第二个CID值,以此类推。(注意在输入时,需要替换BV号为对应视频的BV号)
3、B站API获取CID(旧API)[当前已经无法使用]
这一个方式略繁琐一些,建议优先选择前两者方式,这一个方式B站目前也是能够支持的。
思路:API转换,将视频BV号转换为AV号,再用另外一个API,将视频AV号转换为CID。

以这一个视频(BV1Jt411B7M5)为例,我们将BV号填入
https://api.bilibili.com/x/web-interface/archive/stat?bvid= 的最后。例如这一个视频就是
https://api.bilibili.com/x/web-interface/archive/stat?bvid=BV1Jt411B7M5 返回数据示例:
{
"code":0,
"message":"0",
"ttl":1,
"data":{
"aid":39596505,
"bvid":"BV1Jt411B7M5",
"view":867,
"danmaku":1,
"reply":3,
"favorite":32,
"coin":6,
"share":8,
"like":12,
"now_rank":0,
"his_rank":0,
"no_reprint":1,
"copyright":1,
"argue_msg":"",
"evaluation":""
}
} 在返回的数据中,我们可以获取到这一个视频的aid(AV号),以上面的视频为例,aid值为39596505。
接下来,我们将我们获得的aid,填入
https://www.bilibili.com/widget/getPageList?aid= 的最后。例如这一个视频就是
https://www.bilibili.com/widget/getPageList?aid=39596505 返回数据示例(当前已经无法复现):
[
{
"page":1,
"pagename":"P1",
"cid":69580178
}
] 此处获取对应p的方式同第二种,在这里就不赘述了。
弹幕XML文件获取(当前弹幕池)(新方法)[当前可用]
前置条件:通过上述方式获取CID
注意:此方式可能会出现部分无法解析的数据,如果要获得时间等信息,可以参考旧方法

以这一个视频(BV1kK4y1Y7Zq)为例,前面我们已经获得了它的第一p的CID是227684649,我们只需将以下链接
https://api.bilibili.com/x/v2/dm/web/seg.so?type=1&oid={cid}&segment_index=1 中的{cid}替换成CID即可。例如获取这一个视频的第一p的弹幕XML文件,就是
https://api.bilibili.com/x/v2/dm/web/seg.so?type=1&oid=69580178&segment_index=1 至此,你就可以获得视频对应的弹幕文件了。
使用文本编辑器(例如Visual Studio Code)打开,选择UTF-8的编码格式,就可以看到里面的弹幕内容了。
弹幕XML文件获取(当前弹幕池)(旧方法)[当前已经失效]
前置条件:通过上述方式获取CID

以这一个视频(BV1kK4y1Y7Zq)为例,前面我们已经获得了它的第一p的CID是227684649,我们只需将以下链接
https://comment.bilibili.com/{}.xml 中的{}替换成CID即可。例如获取这一个视频的第一p的弹幕XML文件,就是
https://comment.bilibili.com/227684649.xml 至此,你就可以获得视频对应的弹幕XML文件了。
弹幕文件获取(历史弹幕)(新方法)[当前可用]
前置条件:通过上述方式获取CID,已经登录B站
注意:此方式可能会出现部分无法解析的数据(例如时间、颜色等)

以这一个视频(BV1Js411o76u)为例,我们通过上面的方式,已经获得了它的第一p的CID是1176840,我们需要将以下链接
https://api.bilibili.com/x/v2/dm/web/history/seg.so?type=1&oid={cid}&date={date} 中的{cid}替换为CID,{date}替换为对应的时间,例如,我想要查询2013年10月26日的弹幕,可以访问
https://api.bilibili.com/x/v2/dm/web/history/seg.so?type=1&oid=1176840&date=2013-10-26 这里返回的就是那一天的历史文件了(如果短时间内查询过多,可能会触发风控412报错,建议延长间隔时间,风控后可能需要等待一段时间后才可以进行再次获取)。通过这些历史弹幕的组合,你就可以获得全弹幕了~
弹幕XML文件获取(历史弹幕)[当前已经失效]
前置条件:通过上述方式获取CID,已经登录B站

以这一个视频(BV1Js411o76u)为例,我们通过上面的方式,已经获得了它的第一p的CID是1176840,我们只需将以下链接
https://api.bilibili.com/x/v2/dm/history?type=1&oid={cid}&date={date}
中的{cid}替换为CID,{date}替换为对应的时间,例如,我想要查询2013年10月26日的弹幕,可以访问
https://api.bilibili.com/x/v2/dm/history?type=1&oid=1176840&date=2013-10-26
这里返回的就是那一天的历史文件了(如果短时间内查询过多,可能会触发风控412报错,建议延长间隔时间,风控后可能需要等待一段时间后才可以进行再次获取)。通过这些历史弹幕的组合,你就可以获得全弹幕了~
对于视频的CID获取的python程序,目前已在https://github.com/g497813927/Bilibili_BV_Converter发布,欢迎下载使用~
附录:
控制台获取CID示例(JSON部分):
"pages": [
{
"cid": 177948638,
"page": 1,
"from": "vupload",
"part": "新年特辑",
"duration": 279,
"vid": "",
"weblink": "",
"dimension": {
"width": 1920,
"height": 1080,
"rotate": 0
}
},
{
"cid": 144746623,
"page": 2,
"from": "vupload",
"part": "舞社开场",
"duration": 188,
"vid": "",
"weblink": "",
"dimension": {
"width": 1920,
"height": 1080,
"rotate": 0
}
},
{
"cid": 145017798,
"page": 3,
"from": "vupload",
"part": "主持人开场白",
"duration": 82,
"vid": "",
"weblink": "",
"dimension": {
"width": 1920,
"height": 1080,
"rotate": 0
}
},
{
"cid": 145017900,
"page": 4,
"from": "vupload",
"part": "《赤伶》《不为谁而做的歌》",
"duration": 581,
"vid": "",
"weblink": "",
"dimension": {
"width": 1920,
"rotate": 0
}
},
{
"cid": 145018373,
"page": 5,
"from": "vupload",
"part": "高一12班 《霹雳春雷》",
"duration": 413,
"vid": "",
"weblink": "",
"dimension": {
"width": 1920,
"height": 1080,
"rotate": 0
}
},
{
"cid": 145018705,
"page": 6,
"from": "vupload",
"part": "高一4班 《不染》",
"duration": 313,
"vid": "",
"weblink": "",
"dimension": {
"width": 1920,
"height": 1080,
"rotate": 0
}
},
{
"cid": 145018920,
"page": 7,
"from": "vupload",
"part": "古筝合奏",
"duration": 426,
"vid": "",
"weblink": "",
"dimension": {
"width": 1920,
"height": 1080,
"rotate": 0
}
},
{
"cid": 145019258,
"page": 8,
"from": "vupload",
"part": "Raise The Roof(Cover- Julia Murney)",
"duration": 191,
"vid": "",
"weblink": "",
"dimension": {
"width": 1920,
"height": 1080,
"rotate": 0
}
},
{
"cid": 145020671,
"page": 9,
"from": "vupload",
"part": "《好日子》",
"duration": 222,
"vid": "",
"weblink": "",
"dimension": {
"width": 1920,
"height": 1080,
"rotate": 0
}
},
{
"cid": 145021243,
"page": 10,
"from": "vupload",
"part": "高一AP2 《忆莲》",
"duration": 322,
"vid": "",
"weblink": "",
"dimension": {
"width": 1920,
"height": 1080,
"rotate": 0
}
},
{
"cid": 145020665,
"page": 11,
"from": "vupload",
"part": "美丽寝室颁奖典礼",
"duration": 1262,
"vid": "",
"weblink": "",
"dimension": {
"width": 1920,
"height": 1080,
"rotate": 0
}
},
{
"cid": 145021246,
"page": 12,
"from": "vupload",
"part": "《Closer》",
"duration": 352,
"vid": "",
"weblink": "",
"dimension": {
"width": 1920,
"height": 1080,
"rotate": 0
}
},
{
"cid": 144750819,
"page": 13,
"from": "vupload",
"part": "动漫社《神的随波逐流》",
"duration": 287,
"vid": "",
"weblink": "",
"dimension": {
"width": 1920,
"height": 1080,
"rotate": 0
}
},
{
"cid": 144751065,
"page": 14,
"from": "vupload",
"part": "《最初的梦想》",
"duration": 293,
"vid": "",
"weblink": "",
"dimension": {
"width": 1920,
"height": 1080,
"rotate": 0
}
},
{
"cid": 144750379,
"page": 15,
"from": "vupload",
"part": "《Good Life》《胡桃夹子》",
"duration": 598,
"vid": "",
"weblink": "",
"dimension": {
"width": 1920,
"height": 1080,
"rotate": 0
}
},
{
"cid": 144751544,
"page": 16,
"from": "vupload",
"part": "校歌合唱",
"duration": 427,
"vid": "",
"weblink": "",
"dimension": {
"width": 1920,
"height": 1080,
"rotate": 0
}
}
]