不是群主或管理员,想批量导出QQ群成员信息 | QQ插件 | QQ机器人框架

2024年10月28日重新编辑:插件更新较大,原来的攻略不管用了,因此我做了更新。

2024年12月26日重新编辑:访问HTTP网址得到json页面后,json文件有时会不分段,因此做了修订。

是群主或管理员:直接在浏览器搜索“qq群成员管理”,并进入官网即可。

不是群主或管理员:我找到了一个基于NTQQ的机器人框架,通过调用API手动实现提取群成员的qq号。可以进入github按照指示操作(项目链接:https://github.com/LLOneBot/LLOneBot)。我也在本文总结了操作步骤,可以按照本文的提示操作。

具体步骤如下。

目录

第1步:安装QQ9,然后关闭QQ

第2步:安装llob_install.exe文件

第3步:设置LLOneBot

第4步:调用API,得到json文件

方法1:直接访问HTTP网址

方法2:命令行调用

方法3:python语言

方法4:C语言

第5步:将json转换为表格

方法1:cpp程序+分列

先把json转换为txt

再把txt转换为表格,并分列

方法2:分列

第1步:安装QQ9,然后关闭QQ

首先安装QQ9,最好从官网(QQ-轻松做自己)下载,因为有的应用商店还没有QQ9。

安装好之后,先退出登录,关闭QQ。

第2步:安装llob_install.exe文件

然后,到官方github仓库(Releases · super1207/install_llob · GitHub)或者我的 gitee 仓库(myFile: 存一些word、ppt、cpp等文件)下载llob_install.exe 文件。

如下图是2种下载途径:

下载完后,Edge浏览器会显示黄色三角形感叹号。这时,点击下载项右边的省略号,选“保留”,再选“显示详细信息”,点“仍然保留”。如下图:

然后,右键点击下载的exe文件,以管理员身份运行。若校园网下载失败,可以换成移动网尝试。

安装完成后,打开QQ,点击“设置”,若左侧出现插件LiteLoaderQQNT和LLOneBot,即成功。如下图:

第3步:设置LLOneBot

这一步先不做!!!如果后面第4步没有成功,再来这里参考下我的设置。

我的设置如下:

第4步:调用API,得到json文件

所有API可以点击链接(点赞 - LLOneBot & NapCat)查看,根据所需API进行访问。这里只讲获取群成员列表的API,get_group_member_list。

官方给了很十几种方法,这里举例4种。我一般用方法1,比较简单。

方法1:直接访问HTTP网址

我想调用get_group_member_list,得到QQ群83xxxxx67所有群成员的信息。

那么,就先登录QQ,然后打开浏览器,访问链接 http://127.0.0.1:3000/get_group_member_list?group_id=83xxxxx67

注意,你登录的账号得在这个QQ群里,否则会访问失败。访问成功后,网页会返回json格式的页面。如下图:

有时,导出的json页面会不分段,所有内容乱七八糟地挤在一起。这种情况下,执行第5步建议用方法2。

方法2:命令行调用

命令行访问示例如下,应该是把下面的curl命令都输入命令行即可。虽然我没试过,但给你们看看官方给方法:

curl --location --request POST 'http://localhost:3000/get_group_member_list' \

--header 'User-Agent: Apifox/1.0.0 (https://apifox.com)' \

--header 'Content-Type: application/json' \

--data-raw '{

"group_id": 0,

"no_cache": true

}'

方法3:python语言

代码如下,输入后运行即可:

import http.client

import json

conn = http.client.HTTPSConnection("localhost", 3000)

payload = json.dumps({

"group_id": 0,

"no_cache": True

})

headers = {

'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',

'Content-Type': 'application/json'

}

conn.request("POST", "/get_group_member_list", payload, headers)

res = conn.getresponse()

data = res.read()

print(data.decode("utf-8"))

方法4:C语言

代码如下,输入后编译运行即可:

CURL *curl;

CURLcode res;

curl = curl_easy_init();

if(curl) {

curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");

curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:3000/get_group_member_list");

curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);

curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");

struct curl_slist *headers = NULL;

headers = curl_slist_append(headers, "User-Agent: Apifox/1.0.0 (https://apifox.com)");

headers = curl_slist_append(headers, "Content-Type: application/json");

curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);

const char *data = "{\n \"group_id\": 0,\n \"no_cache\": true\n}";

curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);

res = curl_easy_perform(curl);

}

curl_easy_cleanup(curl);

第5步:将json转换为表格

这里是上一步方法1的后续。

若导出的 json 网页页面分段整齐,两种方法均可;

若没有分段而是挤在一起,推荐使用方法2。

方法1:cpp程序+分列

先把json转换为txt

首先,右键单击 json 网页页面,全选,复制到文本文件 json.txt 中。

注意,json.txt文件内容必须整齐地分行,如果像下图一样没有分行,可以先从网页粘贴到word,再从word粘贴到txt中。

然后,把下面的 cpp 代码和 json.txt 文件放在同一目录下,再编译运行。下面的 cpp 程序,用来读取 json.txt 中 card 和 user_id 的值,并保存到文本文件 result.txt 中:

#include

#include

#include

using namespace std;

int main(){

ofstream fout("result.txt");

ifstream fin("json.txt");

string name, qq;

int pos;

while(getline(fin, qq)){

pos = qq.find("user_id");

if(pos == -1)

continue;

fout << qq.substr(pos+10) << ' ';

getline(fin, name);

getline(fin, name);

pos = name.find("card\"");

fout << name.substr(pos+8) << endl;

}

fout.close();

fin.close();

return 0;

}

如果运行后 result.txt 文件是空,那就吧 json.txt 文件的编码格式从 UNICODE 另存为ANSI。如下图。

再把txt转换为表格,并分列

打开WPS或EXCEL,将 result.txt 所有内容复制到excel表格中。然后选中单元格,点击“数据 --> 分列”功能。如下图:

先选中“分隔符号”,用逗号分隔;再选固定宽度,分隔前2个字和后面的字。结果如下图:

方法2:分列

首先,直接把json页面的所有内容,复制到Excel的第一个单元格中。

然后,点击“数据 --> 分列”功能,先按照“{”符号进行分列,这样第一行每个单元格里是1个人的所有信息。再把第一行复制,然后粘贴时选择转置选项,把第一行转置为第一列。如下图:

接着,选中第一列,按照逗号进行分列,得到结果如下图:

最后留下你需要的列,再按照冒号分列,删除冒号左边的内容即可。

结束,感谢。