首页 > 其他分享 >一键批量导出自己企鹅好友

一键批量导出自己企鹅好友

时间:2024-09-22 19:12:45浏览次数:1  
标签:企鹅 导出 一键 uin qzonetoken xhr json cookie const

先附上原作者的代码

/**
     * @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浏览器为例子

标签:企鹅,导出,一键,uin,qzonetoken,xhr,json,cookie,const
From: https://www.cnblogs.com/xkboi/p/18425719

相关文章

  • 帝国cms数据库备份,导出的数据库 导入的时候各种错误
    在导入帝国CMS备份的数据库时遇到错误,这可能是由于多种原因造成的,比如数据库版本不兼容、SQL语法错误、权限问题等。以下是一些常见的错误及其解决办法:SQL语法错误如果遇到类似YouhaveanerrorinyourSQLsyntax这样的错误,可能是由于SQL语句不符合当前MySQL版本的规范。......
  • 短剧搜索带一键转存功能系统源码修复版
    短剧搜索带一键转存功能系统,这是Thinkphp框架的源码,上传宝塔之后设置伪静态为:thinkphpPHP版本7.2然后导入“数据库.sql”修改.env里面的数据库信息修改网站目录为“public”即可后台:/qfadmin账号admin密码123456aa......
  • 短剧搜索带一键转存功能系统源码修复版
    短剧搜索带一键转存功能系统,这是Thinkphp框架的源码,上传宝塔之后设置伪静态为:thinkphpPHP版本7.2然后导入“数据库.sql”修改.env里面的数据库信息修改网站目录为“public”即可后台:/qfadmin账号admin密码123456aa......
  • 短剧搜索带一键转存功能系统源码修复版
    短剧搜索带一键转存功能系统,这是Thinkphp框架的源码,上传宝塔之后设置伪静态为:thinkphpPHP版本7.2然后导入“数据库.sql”修改.env里面的数据库信息修改网站目录为“public”即可后台:/qfadmin账号admin密码123456aa......
  • centos 一键安装docker+docker-compose
    点击查看代码#!/bin/shecho"开始安装docker/docker-compose"echo"1)安装/升级Docker客户端,安装必要的一些系统工具"yumupdate-yyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2echo"2)添加软件源信息"yum-config-manager--add-repohttp://mirrors.......
  • 使用`xlsx-js-style`插件导出表格,并添加样式导出
    安装npminstallxlsx-js-style--save使用引入importXLSXfrom'xlsx-js-style'//1.创建一个工作簿constwb=XLSX.utils.book_new()//表格标题//这里设置标题是怕数据没有,返回空表,连标题都没有//这里的权重,没有数据tableData里的高,果如ta......
  • 一键隐藏所有固定的浏览器扩展
    大家好,我是一名开发者,也是一名内容创作者。我经常需要录制教学视频。录制之前,需要做很多隐私保护准备,比如隐藏书签栏、隐藏顶部工具栏、隐藏我正在使用的浏览器扩展浏览器不提供一键隐藏所有固定浏览器扩展的功能,所以我开发了一个插件。该插件适用于以下场景:当内容创作者开始录制......
  • 视频监控平台AS-V1000的部门管理功能,实现对部门所属的监控视频摄像头资源的添加、删除
    目录一、部门资源二、视频监控资源管理平台介绍1、AS-V1000介绍2、平台服务器配置说明三、部门资源管理功能介绍1、部门资源结构树2、添加和删除部门的资源(1)手动添加(2)删除资源3、查询资源(1)按部门查询(2)按资源查询4、导出部门资源及其结构(1)导出整个部门资源树(2)导......
  • Rope DFM一键整合包AI换脸教程:使用DeepFaceLab模型实现专业级视频和直播换脸
    今天给大家介绍RopeDFM版本!RopeDFM是Rope软件中支持DeepFaceLab(DFL)模型训练的版本。DeepFaceLab是一款经典的AI换脸工具,它通过深度学习实现图片和视频中的人脸识别和交换。然而,想要通过DeepFaceLab获得专业级的效果,不仅难度大,时间成本也相当高,训练模型也是个不小的挑战。但如果......
  • 如何使用帝国CMS进行数据库导出操作?
    使用帝国CMS进行数据库导出操作,可以通过帝国CMS的后台管理系统来完成。以下是详细的步骤:数据库导出步骤登录帝国CMS后台:使用管理员账号登录帝国CMS后台。进入系统管理:在后台管理界面左侧菜单中找到“系统”选项,并点击进入。选择备份与恢复数据:在系统管理菜单中找到“备份与恢......