get all QQ group member

download all QQ group member as TXT file

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name      get all QQ group member
// @name:zh-TW   QQ群成员提取器
// @namespace    http://WWW.NTRSN.CN/
// @version      0.0
// @description   download all QQ group  member as TXT file
// @description:zh-TW 下載qq群成員導入txt
// @author       WWW.RUSSIAVK.CN
// @supportURL   [email protected]
// @contributionURL https://www.paypal.com/cgi-bin/webscr?cmd=_donations&[email protected]&item_name=Greasy+Fork+donation
// @include      https://qun.qq.com/member.html*
// @require      https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.3/FileSaver.min.js
// @grant        GM_xmlhttpRequest
// ==/UserScript==
(function() {
    'use strict';
    /* function CheckScroll(){
        let marginBot = 0;
        if (document.documentElement.scrollTop){
            marginBot = document.documentElement.scrollHeight - (document.documentElement.scrollTop+document.body.scrollTop)-document.documentElement.clientHeight;
        } else {
            marginBot = document.body.scrollHeight - document.body.scrollTop- document.body.clientHeight;
        }
        return marginBot;
    }
    function Scroll(){
        let interval;
        let val;
        if(CheckScroll()>0)
        {
            interval = window.setInterval(function(){
                scrollTo(0,document.body.scrollHeight);
                if(CheckScroll==0)
                {
                    alert('完毕');
                    console.log('完毕');
                    window.clearInterval(interval);
                    SaveToTXTOld();
                }
            },100);
        }
    }
    function SaveToTXTOld()
    {
        let QQList=document.querySelectorAll("td:nth-child(5)");
        let  title=document.getElementById('groupTit').innerText;

        while(typeof(QQList)=='undefined'){
            alert('找不到链接哦!');
            SaveToTXT();
        }
        let QQTXT;
        for(var i in QQList){
            QQTXT+=QQList[i].innerText+'@qq.com \n';
        }
        let blob = new Blob([QQTXT], {type: "text/plain;charset=utf-8"});
        let save=saveAs(blob,title+".txt");
        if(save)
        {
            setTimeout(function close(){
                //window.close();
            },500);
        }
        else{
            alert('保存失败!');
        }
    }

    function Confirm()
    {
        let r=confirm("是否提取QQ号?");
        if (r==true)
        {
            Scroll();
        }
    }*/
    function AppendChild()
    {
        var AutoButton=document.createElement('div');
        AutoButton.style.width='150px';
        AutoButton.style.height = '30px';
        AutoButton.style.position='fixed';
        AutoButton.style.right='30px';
        AutoButton.style.bottom='30px';
        AutoButton.style.marginRight='15px';
        AutoButton.style.color='#2a5885';
        AutoButton.style.textAlign='center';
        AutoButton.innerText='提取';
        AutoButton.style.fontSize='large';
        AutoButton.style.backgroundColor='#FFFFFF';
        AutoButton.style.cursor='pointer';
        document.body.appendChild(AutoButton);
        let checkbox = document.createElement('input');
        checkbox.type='checkbox';
        checkbox.id='c';
        checkbox.style.width='30px';
        checkbox.style.height = '30px';
        checkbox.style.position='fixed';
        checkbox.style.right='0px';
        checkbox.style.bottom='30px';
        document.body.appendChild(checkbox);
        AutoButton.onclick=function(){
            AutoGetList();
        };
    }
    function AutoGetList(){
        let delayTime=1000;
        let PageCount,per_page=0;// let PageCount
        let AllUserList=[];
        //let interval=window.setInterval( function(){
        async function GetResult(){
            let Result=await AutoGetValue();//
            if(Result!==false){
                let Write= 'AllUserList.push(Result[id][i]["uin"]);console.log("======================id======================"+Result[id][i]["uin"]);'
                if(document.querySelector('#c').checked==true)
                {
                    alert('aaaaa');
                    Write=Write.replace('(','(Result[id][i]["nick"]+"----"+').replace('g(','g(Result[id][i]["nick"]+');
                    console.log(Write);
                }
                for(let id in Result){
                    for( var i in Result[id] ){
                        if(Result[id][i]['uin']){
                            eval(Write);
                        }
                    }
                }
                // window.clearInterval(interval);
                AllUserList=Array.prototype.concat.apply([],AllUserList);
                console.log('======================結束!降维的AllUserList======================'+AllUserList);
                SaveToTXT(AllUserList);
                return
            }
            else{
                console.log('======================失败重试======================');
                AutoGetValue();
            }
        }
        GetResult();
        //  },delayTime);
    }
    function SaveToTXT(AllUserList)
    {
        let AllUserListBlob = new Blob([AllUserList.toString().replace(/,/g,'\n').replace(/ /ig, "")], {type: "text/plain;charset=utf-8"});
        saveAs(AllUserListBlob,document.querySelector('#groupTit').innerText+'txt');
    }
    async  function AutoGetValue()// async
    {
        const GroupID=parseInt(document.querySelector('#groupTit').innerText.substr(document.querySelector('#groupTit').innerText.indexOf('(')+1).replace(')',''))
        let Count=document.querySelector('#groupMemberNum').innerText+'&sort=0';
        if(document.querySelector('.select-result span')){
            let G=document.querySelector('.select-result span').innerText.replace('性别: ','');
            switch (G){
                case '女':
                    Count+='&g=1';
                    console.log('女');
                    break;
                case '男':
                    Count+='&g=0';
                    console.log('男');
                    break;
            }
        }
        let val='gc='+GroupID+'&st=0&end='+Count+'&bkn=1599454968';//gc=171268365&st=0&end=20&sort=0&g=1&bkn=1599454968
        let Value=[];
        const c=document.cookie;
        return new Promise(function (resolve, reject) {
            GM_xmlhttpRequest({
                method:'POST',
                url:'https://qun.qq.com/cgi-bin/qun_mgr/search_group_members',
                data:val,
                headers: {
                    'accept':'application/json, text/javascript, */*; q=0.01',
                    'accept-encoding': 'gzip, deflate, br',
                    'accept-language': 'en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4',
                    'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
                    'cookie':c,
                    'origin':'https://qun.qq.com',
                    'referer':'https://qun.qq.com/member.html',
                    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
                    'x-requested-with': 'XMLHttpRequest',
                },
                onload:async function(responseDetails) {
                    if(responseDetails.responseText.indexOf('err')==-1)
                    {
                        let List=JSON.parse(responseDetails.responseText); //console.log('===============Value==============='+responseDetails.responseText);
                        resolve(List);
                    }
                    else{
                        console.log('===============err==============='+responseDetails.responseText);
                        reject(false)
                    }
                }
            });//return Value
        })
    }
    //document.ready=function(){//AutoGetValue();
    // setTimeout(function(){
    AppendChild();
    // },500);//Confirm();
    //                 };
})();