获取QQ群中的所有群友QQ

package com.jm.mail.tools;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import com.jm.hsw.tools.File_Tools;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class Gain_QQ {

    /**
     * POST
     **/
    public static String sendPostRequest(String requestUrl, String payload,String Cookie) {
        StringBuffer jsonString = new StringBuffer();
        HttpURLConnection connection=null;
        BufferedReader br=null;
        try {
            URL url = new URL(requestUrl);
            connection = (HttpURLConnection) url.openConnection();

            connection.setDoInput(true);
            connection.setDoOutput(true);             
            connection.setRequestMethod("POST");

            connection.setRequestProperty("user-agent", "Mozilla/5.0 (compatible; MSIE 11.0; Windows NT 6.1; Trident/5.0)");
            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
            connection.setRequestProperty("Cookie",Cookie);
            connection.setRequestProperty("origin","https://qun.qq.com");
            connection.setRequestProperty("referer","https://qun.qq.com/member.html");

            connection.setReadTimeout(300000);
            connection.setConnectTimeout(300000);

            OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
            writer.write(payload);
            writer.close();
            br = new BufferedReader(new InputStreamReader(connection.getInputStream()));

            String line;
            while ((line = br.readLine()) != null) {
                jsonString.append(line);
            }
            br.close();
            connection.disconnect();

        }catch(Exception e){
            e.printStackTrace();
            br = new BufferedReader(new InputStreamReader(connection.getErrorStream()) );
            String line;
            try {
                while ((line = br.readLine()) != null) {
                    jsonString.append(line);
                }
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }finally{
            connection.disconnect();
            try {
                br.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return jsonString.toString();
    }

    /**
     * 将Unix时间戳转换成指定格式日期
     * @param timestampString    Unix时间戳
     * @param formats            格式("yyyy-MM-dd HH:mm:ss")
     * @return
     */
    public static String TimeStamp2Date(String timestampString, String formats){
        Long timestamp = Long.parseLong(timestampString)*1000;
        String date = new java.text.SimpleDateFormat(formats).format(new java.util.Date(timestamp));
        return date;
    }

    /**
     * 获取数据并处理数据
     * @param qq_name    QQ群的名字
     * @param size    qq群总人数
     * @param gc    qq群号
     * @param bkn    我也不知道是啥
     * @param Cookie    进入https://qun.qq.com/member.html#gid=224392232,按F12 点击网络,点开请求"http://qun.qq.com/cgi-bin/qun_mgr/search_group_members" 获取里面的参数和Cookie
     * @return  QQ数据
     * @throws Exception 
     */
    public static List<String> processing(String qq_name,int size,String gc,String bkn,String Cookie) throws Exception{
        //存放每个QQ详细数据
        List<String> olist = new ArrayList<String>();
        olist.add("uin"+"\t"+"role"+"\t"+"flag"+"\t"+"g"+"\t"+"join_time"+"\t"+"last_speak_time"+"\t"+"lv"+"\t"+"nick"+"\t"+"card"+"\t"+"qage"+"\t"+"tags"+"\t"+"rm"+"\t"+"mailbox");
        //控制偏移量
        int i = 0;
        //控制循环次数
        int j = 0;
        //控制是否跳出循环的boolean
        boolean judge = true;
        while(judge){
            int st = i;            //from(开始)
            int end = i+20;        //end(结束)
            System.out.println(st+"---"+end+"---"+j+"---"+size/20);
            String requestUrl = "http://qun.qq.com/cgi-bin/qun_mgr/search_group_members?gc="+gc+"&st="+st+"&end="+end+"&sort=0&bkn="+bkn;
            //把获取的参数转换成JSON字符串并清洗成可使用数据
            JSONObject json_all = JSONObject.fromObject(sendPostRequest(requestUrl, "",Cookie));    
            //获取JSON串中的mems数组
            if(json_all.get("mems")!=null){
                String qq_all =  json_all.get("mems").toString();

                //把数组导入到JSONArray中方便数据处理
                JSONArray json_qq = JSONArray.fromObject(qq_all);
                for(int le = 0 ; le <json_qq.size();le++){
                    JSONObject qq = JSONObject.fromObject(json_qq.get(le));
                    //把每个QQ转换成一条数据并存入List集合
                    String all = qq.getString("uin")+"\t"+
                            qq.getString("role")+"\t"+
                            qq.getString("flag")+"\t"+
                            qq.getString("g")+"\t"+
                            TimeStamp2Date(qq.getString("join_time"), "yyyy-MM-dd")+"\t"+
                            TimeStamp2Date(qq.getString("last_speak_time"), "yyyy-MM-dd")+"\t"+
                            qq.getString("lv")+"\t"+
                            qq.getString("nick")+"\t"+
                            qq.getString("card")+"\t"+
                            qq.getString("qage")+"\t"+
                            qq.getString("tags")+"\t"+
                            qq.getString("rm")+"\t"+
                            qq.getString("uin")+"@qq.com";

                    olist.add(all);    
                }
            }
            j++;    //控制循环次数
            if(j==size/21){
                judge = false;        //循环完毕后跳出循环
            }else{
                i+=21;
            }

            System.out.println("已扫描人数:"+i);
            Thread.sleep(1500);
        }
        return olist;
    }

    public static void main(String[] args) throws InterruptedException {
        //QQ群的名字
        String qq_name = "淘宝优惠券购物21(795017653) ";
        //qq群总人数
        int size = 1975;        
        //qq群号
        String gc = "795017653";
        //我也不知道是啥,反正一定要填
        String bkn = "965542128";
        //网址Cookie
        String Cookie = "pgv_pvid=8083393588; pgv_pvi=5516345344; RK=mgZFXvKpRv; ptcz=25714188ed89e451a67f74be787ccf060a153d84fc8348cff2a6d79ed1c821eb; ts_last=qun.qq.com/member.html; ts_uid=6204078620; ts_refer=xui.ptlogin2.qq.com/cgi-bin/xlogin; pgv_info=ssid=s928689886; pgv_si=s3042974720; _qpsvr_localtk=0.17590207084640497; ptisp=ctc; p_uin=o3385341634; pt4_token=wjsRFVOzK-kGq7B3P2B54XADw5Ik6jXlt6J**zw3rcc_; p_skey=jChYYIB*ibH--AKwTf1846Vv5VxZV1aNd17yRM8u7so_; traceid=9a4df933cb; uin=o3385341634; skey=@zFiVy8rCf";
        List<String> olist;
        try {
            olist = processing(qq_name, size, gc, bkn, Cookie);
            if(olist.size()>0){
                File_Tools.add_File_list("D:\\结果\\"+qq_name+".txt", olist);
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

获取这些信息的网站:https://qun.qq.com/member.html#gid=QQ群号 

然后F12打开无障碍环境属性

点击网络 找到

请求网址:https://qun.qq.com/cgi-bin/qun_mgr/search_group_members
请求方法:POST
 

转载于:https://www.cnblogs.com/java-h/p/11344428.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值