首页 > 极客资料 博客日记
一键批量导出自己企鹅好友
2024-09-22 19:30:04极客资料围观18次
这篇文章介绍了一键批量导出自己企鹅好友,分享给大家做个参考,收藏极客之家收获更多编程知识
先附上原作者的代码
/**
* @author ius.
* @date 2022/8/1
* @introduction 获取QQ好友列表
*/
function getCookie(aim) {
const allText = document.cookie.replace(/\s*/g, ''); //document.cookie
oneText = allText.split(";");
for (var two of oneText) {
const three = two.split("=");
if (aim === three[0]) {
return two;
}
}
}
const gtk = user.getToken();
const uin = getCookie("uin").substring(5);
const xhr = new XMLHttpRequest();
const qzonetoken = window.shine0callback;
var url = 'https://mobile.qzone.qq.com/friend/mfriend_list?qzonetoken=' + qzonetoken + '&g_tk=' + gtk + '&res_uin=' + uin + '&res_type=normal&format=json&count_per_page=10&page_index=0&page_type=0&mayknowuin=&qqmailstat=';
xhr.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
const json = JSON.parse(xhr.responseText)
const allGroup = json.data.gpnames;
const allFriend = json.data.list;
var consoleContext = "";
for (var groupid of allGroup) {
consoleContext += groupid["gpname"] + ":\n";
for (const friendid of allFriend) {
if (groupid["gpid"] === friendid["groupid"]) {
consoleContext += " " + friendid["remark"] + "(" + friendid["uin"] + ")" + "\n";
}
}
}
console.log(consoleContext);
}
}
xhr.open('GET', url)
xhr.withCredentials = true;
xhr.send()
获取的信息是好友名字+(账号)
下面是我改良版本
获取的信息是账号
// 获取指定名称的cookie值
function getCookie(aim) {
// 去除cookie字符串中的空格
const allText = document.cookie.replace(/\s*/g, '');
// 将cookie字符串按分号分割成数组
const oneText = allText.split(";");
// 遍历每个cookie
for (var two of oneText) {
// 将cookie按等号分割成键值对
const three = two.split("=");
// 检查当前cookie的名称是否与目标名称匹配
if (aim === three[0]) {
return two; // 返回匹配的cookie
}
}
}
// 获取用户的GTK(用于验证的令牌)
const gtk = user.getToken();
// 从cookie中获取用户的uin,并去掉前缀
const uin = getCookie("uin").substring(5);
// 创建一个XMLHttpRequest对象以发送HTTP请求
const xhr = new XMLHttpRequest();
// 获取qzonetoken
const qzonetoken = window.shine0callback;
// 构建请求的URL
var url = 'https://mobile.qzone.qq.com/friend/mfriend_list?qzonetoken=' + qzonetoken + '&g_tk=' + gtk + '&res_uin=' + uin + '&res_type=normal&format=json&count_per_page=10&page_index=0&page_type=0&mayknowuin=&qqmailstat=';
// 设置请求状态变化的回调函数
xhr.onreadystatechange = function () {
// 当请求完成且响应状态为200(成功)时
if (this.readyState == 4 && this.status == 200) {
// 解析JSON格式的响应文本
const json = JSON.parse(xhr.responseText);
// 获取所有分组
const allGroup = json.data.gpnames;
// 获取所有好友列表
const allFriend = json.data.list;
// 遍历每个分组
for (var groupid of allGroup) {
// 遍历每个好友
for (const friendid of allFriend) {
// 检查好友的分组ID是否与当前分组的ID匹配
if (groupid["gpid"] === friendid["groupid"]) {
// 如果匹配,打印该好友的uin(账号),每个账号单独一行
console.log(friendid["uin"]);
}
}
}
}
}
// 初始化GET请求
xhr.open('GET', url);
// 允许携带凭证(如cookie)
xhr.withCredentials = true;
// 发送请求
xhr.send();
使用方式
电脑EDGE或者Chrome浏览器
打开QQ空间登录然后切换仿真模式
然后在把地址改为:https://h5.qzone.qq.com/mqzone/index
最后把代码放在控制台上回车就搞定了
下面以edge浏览器为例子
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- Nuxt.js 应用中的 prerender:routes 事件钩子详解
- 【问题解决】Tomcat由低于8版本升级到高版本使用Tomcat自带连接池报错无法找到表空间的问题
- 【FAQ】HarmonyOS SDK 闭源开放能力 —Vision Kit
- 六、Spring Boot集成Spring Security之前后分离认证流程最佳方案
- 《JVM第7课》堆区
- .NET 8 高性能跨平台图像处理库 ImageSharp
- 还在为慢速数据传输苦恼?Linux 零拷贝技术来帮你!
- 刚毕业,去做边缘业务,还有救吗?
- 如何避免 HttpClient 丢失请求头:通过 HttpRequestMessage 解决并优化
- 让性能提升56%的Vue3.5响应式重构之“版本计数”