前言
开发语言:JS
使用说明:
注意:这个API需要在b站的网站下执行,跨域会被拒绝(很重要哦,另外请求太多可能会被禁请求,需要注意)
1、来到b站页面,按F12打开开发者工具
2、点击“控制台”或者叫 “console”
3、贴入代码,修改uids,填入用户uid的数组,例如:(注意是英文逗号)
var uids = [
1,2,3,4,5
];
4、回车运行即可,等到打印完成后,会输出人数分布。
5、输入 show_level(你想看的对应等级的数字); 然后回车,查看对应等级用户信息。例如:
效果图
源码
// 此处填入uid的数组,用,分隔
var uids = [
];
var infos = [];
var url = "https://api.bilibili.com/x/space/acc/info?token=&platform=web&jsonp=jsonp&mid=";
console.log("开始运行");
for(let i = 0; i < uids.length; i++) {
setTimeout(() => {
get_baseinfo(url + uids[i], i);
}, 100 * (i + 1));
}
function get_baseinfo(url, index) {
var xmlhttp;
if(window.XMLHttpRequest)
{
//code for IE7+,Firefox,Chrome,Opera,Safari
xmlhttp = new XMLHttpRequest();
}
else
{
//code for IE6,IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
if(xmlhttp.readyState == 4)
{
if(xmlhttp.status == 200)
{
var str = xmlhttp.responseText;
if(str.length == 0)
{
return "";
}
//console.log(str);
var json = JSON.parse(str);
// console.log(json);
var info = {"uid": json["data"]["mid"], "name": json["data"]["name"], "level": json["data"]["level"]};
infos.push(info);
if(uids.length - 1 == index) {
console.log("数据获取完毕,如果相应获取单个level的用户信息,请输入 show_level(你想看的对应等级的数字); 然后回车喵");
console.log(infos);
show_num();
}
}
else
{
//alert(xmlhttp.status);
}
}
else
{
//alert(xmlhttp.readyState);
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
function show_num() {
var level = [0, 0, 0, 0, 0, 0, 0];
for(var i = 0; i < infos.length; i++) {
if(infos[i]["level"] < 1) level[0] += 1;
else if(infos[i]["level"] < 2) level[1] += 1;
else if(infos[i]["level"] < 3) level[2] += 1;
else if(infos[i]["level"] < 4) level[3] += 1;
else if(infos[i]["level"] < 5) level[4] += 1;
else if(infos[i]["level"] < 6) level[5] += 1;
else level[6] += 1;
}
console.log("用户等级分布统计 0:" + level[0] + " ,1:" + level[1] + " ,2:" + level[2] + " ,3:" + level[3] + " ,4:" + level[4] + " ,5:" + level[5] + " ,6:" + level[6]);
}
function show_level(level) {
for(var i = 0; i < infos.length; i++) {
if(infos[i]["level"] == level) console.log("uid:" + infos[i]["uid"], " name:" + infos[i]["name"]);
}
}