QQ群管理页面请求
如图所示,当进入该页面的时候,页面会发送四个请求,bkn参数是每次进入该页面时,自动生成的一个身份id,只要不关闭页面,就不会变,如果重新进入页面,该参数也会变.
1.第一个请求没用,不解释
2.get_group_list请求是拉取群组信息
3.get_friend_list请求是拉取好友信息,这里用不到
4.search_group_members请求是通过群号拉取成员信息
经测试发现,每次只能拉取少量成员,大概是不超过40个数据,如果超过,返回的就是错误代码,所以后续使用递归函数,反复拉取
代码
使用只需要每次将myId更换为进入页面的bkn数值,上面有说.(关闭页面重新进入后该参数会变,所以记得替换参数)
然后将代码直接复制到控制台回车,然后耐心等待即可
// An highlighted block
let start = 0;
let end = 0
let myId = '983285666' //特定id,每次进入页面会生成这个id,复制粘贴到这里就行
let ResultList = new Array(); //用于存储最后要导出的数据
let groupArr = new Array(); //存储所有群
$.ajax({
method: "post",
async: false,
url: "https://qun.qq.com/cgi-bin/qun_mgr/get_group_list",
data: {
"bkn": myId
},
success: function (res) {
groupArr = res.create.concat(res.join) //res.create是自己创建的群.res.join是加入的群,合并到groupArr数组
foo()
},
})
function foo() {
if (groupArr.length > 0) {
$.ajax({
method: "post",
url: "https://qun.qq.com/cgi-bin/qun_mgr/search_group_members",
async: false,
data: {
"bkn": myId,
"gc": groupArr[0].gc, //群号
"st": start,
"end": end + 40, //每次请求40条是因为请求条数过大,返回的就是错误代码
"sort": "0",
},
success: function (res) {
end += 40;
start = end + 1
//存储结果到缓存
console.log(groupArr);
for (var i in res.mems) {
ResultList.push([
groupArr[0].gn, //群名称
groupArr[0].gc, //群号
res.mems[i].card, //人员群昵称
res.mems[i].uin, //人员QQ号
res.mems[i].nick //人员元昵称
])
};
if (end >= res.count) {//res.count是群现有人数
// var title = "群名称,群号,人员群内昵称,人员QQ号,人员昵称";
// var downList = '\n' + ResultList.join('\n')
// var data = "\ufeff" + title + downList;
// const blob = new Blob([data], {
// type: 'text/csv,charset=UTF-8'
// });
// const csvUrl = URL.createObjectURL(blob);
// let link = document.createElement('a');
// link.download = groupArr[0].gn +`.csv`; //文件名字
// link.href = csvUrl;
// link.click();
// ResultList = [];
//上面注释部分是每个群分别生成一个csv文件导出,如果想要单独导出,放开上面,隐藏下面else即可
start = 0;
end = 0;
groupArr.shift()
}
setTimeout(() => { //设置时间是因为请求过快,你会被限制进入该页面
foo();
}, 2 * 1000 + Math.random() * 500);
},
})
} else {
//生成csv并下载,这里是吧所有群人员导入到一个csv文件,如果需要分别导出,隐藏这里,放开上面注释即可
var title = "群名称,群号,人员群内昵称,人员QQ号,人员昵称";
var downList = '\n' + ResultList.join('\n')
var data = "\ufeff" + title + downList;
const blob = new Blob([data], {
type: 'text/csv,charset=UTF-8'
});
const csvUrl = URL.createObjectURL(blob);
let link = document.createElement('a');
link.download = `所有群人员信息.csv`; //文件名字
link.href = csvUrl;
link.click();
ResultList = [];
}
}