1. 前言
2. 全站在线人数和观看人数
3. 单个视频观看在线人数
4.总结
最近想研究一下B站的在线人数的获得方式,并把相关的内容记录在自己的博客里。
在查找资料的过程中,我发现了两个接口:
http://www.bilibili.com/online.js
https://api.bilibili.com/x/web-interface/online
测试结果:
# http://www.bilibili.com/online.js的访问结果
var web_online = 1104991; # 在线人数
var play_online = 1563580; # 观看人数
var onlineInfo={};var countInfo={c1:384,c11:3,c119:30,c129:60,c13:56,c155:223,c160:1628,c165:49,c167:43,c177:26,c181:766,c23:1,c3:696,c36:667,c4:3703,c5:1016};var detailCountInfo={};
# https://api.bilibili.com/x/web-interface/online的访问结果
{'code': 0,
'data': {'all_count': 32720,
'play_online': 5400994, #观看人数
'region_count': {'1': 1211,
'11': 0,
'119': 142,
'129': 195,
'13': 53,
'155': 458,
'160': 9547,
'165': 114,
'167': 88,
'177': 188,
'181': 3091,
'188': 309,
'23': 2,
'3': 2469,
'36': 1443,
'4': 11177,
'5': 2233},
'web_online': 4101115}, #在线人数
'message': '0',
'ttl': 1}
因为人数是不停变化的,综合来看,我认为第二个的结果比较合理。
注意事项:以下api.bilibli.com开头的链接无法直接请求,需要改请求参数。可以F12抓包或其他,获取返回信息;或者自己改请求头,关键参数一般是Host和Referer。
同样的,我也找到一个接口,接口格式如下:
https://api.bilibili.com/x/player.so?id=cid:
+cid号+&aid=
+aid号
aid号 = av号
cid号,通过http://www.bilibili.tv/widget/getPageList?aid=
+aid号 【在 B站最详细的API 可以了解更多】
e.g.
测试视频:av57880560
aid = av = 57880560
请求:http://www.bilibili.tv/widget/getPageList?aid=57880560
得到:
[{"page":1,"pagename":"\u5929\u4f7f\u91cd\u6784 \u6b63\u7247","cid":101063272}]
cid = 101063272
拼接api,得到:
https://api.bilibili.com/x/player.so?id=cid:101063272&aid57880560
返回结果:
返回结果与截图数据相差不大,说明数据基本符合,可以接受。
这个接口有无Cookie返回结果不一样,某种意义上也挺好,可以自行测试。
隐约觉得还有别的接口,但是我没有找到,因为这个接口返回的数据太多和太具体了,但是确实返回了我们想要的在线人数。
主要写了如何获取全站在线人数和观看人数以及单个视频观看在线人数的方法,可能没什么用吧,放在这里记录一下。
那么,让我们继续加油吧!ヾ(◍°∇°◍)ノ゙
Fin.