我想导出某个分组里的所有人的 QQ 号码保存起来,在搜索引擎的结果里大都是说用 QQ 邮箱来导出的,我试了现在这个方法已经不行了。还好我找到了个可用的方法,安装这个用户脚本:
https://greasyfork.org/zh-CN/scripts/406982 ([雪喵空友列] QQ 空间一键获取自己的好友列表)
然后登录自己的 QQ 空间(https://user.qzone.qq.com/), 在顶部会看到这个脚本显示的按钮,提供了多种文件格式的导出,点击你想要的格式就可以保存所有的 QQ 好友列表了。
它导出的是所有好友,如果只需要某个分组,可以在导出后自行编辑一下。
例如我只想看“我的好友”分组里的人,可以导出 CSV 格式,用 Excel 打开:
可以看到导出了每个好友的四项数据:Q 号、分组、昵称、备注。
使用“筛选”功能:
之后每列顶部会出现下拉框,显示了所有分组的名称。只勾选“我的好友”然后确定:
现在显示的都是“我的好友”了,此时选择 Q 号一列复制即可。
返回的 QQ 号是按从小到大排列的,所以第一个 QQ 号就是最短的,我有一个好友是 6 位数的。
那么这个脚本是如何实现这个功能的呢?其实它是在 QQ 空间里发了一个请求:
最后两项是 token 和我的 QQ 号码,我打码了。这个请求会返回所有的分组和所有好友的数据。
如果选择导出 JSON 格式,这个脚本就会保存响应数据,里面的 data 属性是核心内容:
它分为两部分(红框),第一部分 gpnames
是每个分组的 id 和名称,第二部分 items
就是所有 QQ 好友的数据了。
如果想从 JSON 里提取某个分组里的好友号码,看绿框的顺序:
- 找到这个分组的
gpid
- 遍历
items
,找到groupid
等于分组gpid
的项,这说明这个好友属于这个分组 - 保存
uin
,也就是 QQ 号码。
可以写个代码提取:
const json = {} // 把导出的 JSON 内容保存到该变量
const list = []
json.data.items.forEach(item => {
item.groupid === 9 && list.push(item.uin)
})
console.log(list.join('\n'))
我发现导出的数据里有一项“认证空间”,但是 QQ 客户端里是没有这个分组的,在好友里也搜不到这些 QQ 号。
认证空间其实就是经过认证的 QQ 空间,或许在过去它曾经想模仿微博,但是在很多年前就彻底凉了。可以在 QQ 空间网址后面加上他们的号码打开对应空间,例如:
杨幂:https://user.qzone.qq.com/1696127668
其他的大多变成了提示违规或空间未开通。
我看了只剩下一个能打开的,但他发的说说全是淘宝链接,2014 年就停更了,没意思。
导出 QQ 群成员的号码
再补充个导出 QQ 群成员列表的方法,这个在腾讯官方的群管理页面即可实现:
https://qun.qq.com/member.html#gid=群号
将末尾的“群号”替换为真正的群号,就可以打开管理列表了(可能需要你有管理员权限):
默认只加载前 20 个,我们向下滚动直至加载全部成员,然后在控制台执行下面的代码,即可输出全部成员的 QQ 号码:
const list = []
const allTR = document.querySelectorAll('tr.mb')
allTR.forEach(tr => {
list.push(tr.classList[1].replace('mb', ''))
})
console.log(list.join('\n'))
感谢分享,感觉会很有用