zoukankan      html  css  js  c++  java
  • 获取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"+"	"+"role"+"	"+"flag"+"	"+"g"+"	"+"join_time"+"	"+"last_speak_time"+"	"+"lv"+"	"+"nick"+"	"+"card"+"	"+"qage"+"	"+"tags"+"	"+"rm"+"	"+"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")+"	"+
                                qq.getString("role")+"	"+
                                qq.getString("flag")+"	"+
                                qq.getString("g")+"	"+
                                TimeStamp2Date(qq.getString("join_time"), "yyyy-MM-dd")+"	"+
                                TimeStamp2Date(qq.getString("last_speak_time"), "yyyy-MM-dd")+"	"+
                                qq.getString("lv")+"	"+
                                qq.getString("nick")+"	"+
                                qq.getString("card")+"	"+
                                qq.getString("qage")+"	"+
                                qq.getString("tags")+"	"+
                                qq.getString("rm")+"	"+
                                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
     
  • 相关阅读:
    网站安全编程 黑客入侵 脚本黑客 高级语法入侵 C/C++ C# PHP JSP 编程
    【算法导论】贪心算法,递归算法,动态规划算法总结
    cocoa2dx tiled map添加tile翻转功能
    8月30日上海ORACLE大会演讲PPT下载
    【算法导论】双调欧几里得旅行商问题
    Codeforces Round #501 (Div. 3) B. Obtaining the String (思维,字符串)
    Codeforces Round #498 (Div. 3) D. Two Strings Swaps (思维)
    Educational Codeforces Round 89 (Rated for Div. 2) B. Shuffle (数学,区间)
    洛谷 P1379 八数码难题 (BFS)
    Educational Codeforces Round 89 (Rated for Div. 2) A. Shovels and Swords (贪心)
  • 原文地址:https://www.cnblogs.com/java-h/p/11344428.html
Copyright © 2011-2022 走看看