1. package com.jm.mail.tools;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.io.OutputStreamWriter;
  7. import java.net.HttpURLConnection;
  8. import java.net.URL;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11.  
  12. import com.jm.hsw.tools.File_Tools;
  13.  
  14. import net.sf.json.JSONArray;
  15. import net.sf.json.JSONObject;
  16.  
  17. public class Gain_QQ {
  18.  
  19. /**
  20. * POST
  21. **/
  22. public static String sendPostRequest(String requestUrl, String payload,String Cookie) {
  23. StringBuffer jsonString = new StringBuffer();
  24. HttpURLConnection connection=null;
  25. BufferedReader br=null;
  26. try {
  27. URL url = new URL(requestUrl);
  28. connection = (HttpURLConnection) url.openConnection();
  29.  
  30. connection.setDoInput(true);
  31. connection.setDoOutput(true);
  32. connection.setRequestMethod("POST");
  33.  
  34. connection.setRequestProperty("user-agent", "Mozilla/5.0 (compatible; MSIE 11.0; Windows NT 6.1; Trident/5.0)");
  35. connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  36. connection.setRequestProperty("Cookie",Cookie);
  37. connection.setRequestProperty("origin","https://qun.qq.com");
  38. connection.setRequestProperty("referer","https://qun.qq.com/member.html");
  39.  
  40. connection.setReadTimeout(300000);
  41. connection.setConnectTimeout(300000);
  42.  
  43. OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
  44. writer.write(payload);
  45. writer.close();
  46. br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
  47.  
  48. String line;
  49. while ((line = br.readLine()) != null) {
  50. jsonString.append(line);
  51. }
  52. br.close();
  53. connection.disconnect();
  54.  
  55. }catch(Exception e){
  56. e.printStackTrace();
  57. br = new BufferedReader(new InputStreamReader(connection.getErrorStream()) );
  58. String line;
  59. try {
  60. while ((line = br.readLine()) != null) {
  61. jsonString.append(line);
  62. }
  63. } catch (IOException e1) {
  64. // TODO Auto-generated catch block
  65. e1.printStackTrace();
  66. }
  67. }finally{
  68. connection.disconnect();
  69. try {
  70. br.close();
  71. } catch (IOException e) {
  72. // TODO Auto-generated catch block
  73. e.printStackTrace();
  74. }
  75. }
  76. return jsonString.toString();
  77. }
  78.  
  79. /**
  80. * 将Unix时间戳转换成指定格式日期
  81. * @param timestampString Unix时间戳
  82. * @param formats 格式("yyyy-MM-dd HH:mm:ss")
  83. * @return
  84. */
  85. public static String TimeStamp2Date(String timestampString, String formats){
  86. Long timestamp = Long.parseLong(timestampString)*1000;
  87. String date = new java.text.SimpleDateFormat(formats).format(new java.util.Date(timestamp));
  88. return date;
  89. }
  90.  
  91. /**
  92. * 获取数据并处理数据
  93. * @param qq_name QQ群的名字
  94. * @param size qq群总人数
  95. * @param gc qq群号
  96. * @param bkn 我也不知道是啥
  97. * @param Cookie 进入https://qun.qq.com/member.html#gid=224392232,按F12 点击网络,点开请求"http://qun.qq.com/cgi-bin/qun_mgr/search_group_members" 获取里面的参数和Cookie
  98. * @return QQ数据
  99. * @throws Exception
  100. */
  101. public static List<String> processing(String qq_name,int size,String gc,String bkn,String Cookie) throws Exception{
  102. //存放每个QQ详细数据
  103. List<String> olist = new ArrayList<String>();
  104. 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");
  105. //控制偏移量
  106. int i = 0;
  107. //控制循环次数
  108. int j = 0;
  109. //控制是否跳出循环的boolean
  110. boolean judge = true;
  111. while(judge){
  112. int st = i; //from(开始)
  113. int end = i+20; //end(结束)
  114. System.out.println(st+"---"+end+"---"+j+"---"+size/20);
  115. String requestUrl = "http://qun.qq.com/cgi-bin/qun_mgr/search_group_members?gc="+gc+"&st="+st+"&end="+end+"&sort=0&bkn="+bkn;
  116. //把获取的参数转换成JSON字符串并清洗成可使用数据
  117. JSONObject json_all = JSONObject.fromObject(sendPostRequest(requestUrl, "",Cookie));
  118. //获取JSON串中的mems数组
  119. if(json_all.get("mems")!=null){
  120. String qq_all = json_all.get("mems").toString();
  121.  
  122. //把数组导入到JSONArray中方便数据处理
  123. JSONArray json_qq = JSONArray.fromObject(qq_all);
  124. for(int le = 0 ; le <json_qq.size();le++){
  125. JSONObject qq = JSONObject.fromObject(json_qq.get(le));
  126. //把每个QQ转换成一条数据并存入List集合
  127. String all = qq.getString("uin")+"\t"+
  128. qq.getString("role")+"\t"+
  129. qq.getString("flag")+"\t"+
  130. qq.getString("g")+"\t"+
  131. TimeStamp2Date(qq.getString("join_time"), "yyyy-MM-dd")+"\t"+
  132. TimeStamp2Date(qq.getString("last_speak_time"), "yyyy-MM-dd")+"\t"+
  133. qq.getString("lv")+"\t"+
  134. qq.getString("nick")+"\t"+
  135. qq.getString("card")+"\t"+
  136. qq.getString("qage")+"\t"+
  137. qq.getString("tags")+"\t"+
  138. qq.getString("rm")+"\t"+
  139. qq.getString("uin")+"@qq.com";
  140.  
  141. olist.add(all);
  142. }
  143. }
  144. j++; //控制循环次数
  145. if(j==size/21){
  146. judge = false; //循环完毕后跳出循环
  147. }else{
  148. i+=21;
  149. }
  150.  
  151. System.out.println("已扫描人数:"+i);
  152. Thread.sleep(1500);
  153. }
  154. return olist;
  155. }
  156.  
  157. public static void main(String[] args) throws InterruptedException {
  158. //QQ群的名字
  159. String qq_name = "淘宝优惠券购物21(795017653) ";
  160. //qq群总人数
  161. int size = 1975;
  162. //qq群号
  163. String gc = "795017653";
  164. //我也不知道是啥,反正一定要填
  165. String bkn = "965542128";
  166. //网址Cookie
  167. 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";
  168. List<String> olist;
  169. try {
  170. olist = processing(qq_name, size, gc, bkn, Cookie);
  171. if(olist.size()>0){
  172. File_Tools.add_File_list("D:\\结果\\"+qq_name+".txt", olist);
  173. }
  174. } catch (Exception e) {
  175. // TODO Auto-generated catch block
  176. e.printStackTrace();
  177. }
  178.  
  179. }
  180. }

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

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

点击网络 找到

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

获取QQ群中的所有群友QQ的更多相关文章

  1. 在Spark集群中,集群的节点个数、RDD分区个数、​cpu内核个数三者与并行度的关系

    梳理一下Spark中关于并发度涉及的几个概念File,Block,Split,Task,Partition,RDD以及节点数.Executor数.core数目的关系. 输入可能以多个文件的形式存储在H ...

  2. 第四讲 smart qq 获取联系人信息 ,分组 好友 群聊

    首先从post一下  http://s.web2.qq.com/api/get_user_friends2 这个链接获取分组categories ,好友信息 friends,info. string ...

  3. 【K8S学习笔记】Part2:获取K8S集群中运行的所有容器镜像

    本文将介绍如何使用kubectl列举K8S集群中运行的Pod内的容器镜像. 注意:本文针对K8S的版本号为v1.9,其他版本可能会有少许不同. 0x00 准备工作 需要有一个K8S集群,并且配置好了k ...

  4. 十代雅阁广东车友群,雅阁广州车友群,深圳雅阁车友群,雅阁微信群、雅阁车友群、十代雅阁交流微信QQ群

    最近一直在关注第十代雅阁,不论是普通汽油版本还是油电混动版本都很不错,在网上看到很多评测文章和视频 后续都会整理发布到微信群中. 由于论坛发帖,博客发文都不是很方便,为了及时沟通,先创建了微信群,方便 ...

  5. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

  6. zookeeper动态添加/删除集群中实例(zookeeper 3.6)

    一,用来作为demo操作的zookeeper集群中的实例: 机器名:zk1 server.1=172.18.1.1:2888:3888 机器名:zk2 server.2=172.18.1.2:2888 ...

  7. ingress-nginx 的使用 =》 部署在 Kubernetes 集群中的应用暴露给外部的用户使用

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247488189&idx=1&sn=8175f067 ...

  8. Hadoop学习笔记—13.分布式集群中节点的动态添加与下架

    开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如何动态(不关机且正在运行的情况下)地添加一个Hadoop节点与 ...

  9. 一行实现QQ群组头像,微信群组,圆角等效果. 并支持url直接加载图片

    说点题外话. Coding中我们总是经历着这么几个过程. 学会使用: 不管是API也好, 开源库也好. 总是在最开始的学会去用. 了解实现原理: 可能会因为一些不兼容, 代码的异常状态的处理不够完美等 ...

随机推荐

  1. Python与线性代数——Numpy中的matrix()和array()的区别

    Numpy中matrix必须是2维的,但是 numpy中array可以是多维的(1D,2D,3D····ND).matrix是array的一个小的分支,包含于array.所以matrix 拥有arra ...

  2. 查看服务器CPU相关信息!

    # 查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l # 查看每个物理CPU中core的个数(即 ...

  3. linux文件或目录属性

    wc(word count)命令的功能:统计指定文件的字节数.字数.行数.,并将统计结果显示输出 命令参数: -c 只显示字节数 -l    只显示行数 -w 只显示字数 od命令:查看二进制文件信息 ...

  4. 解决github访问慢和下载项目慢的问题

    一.国内访问 GitHub 为什么很慢?  GitHub的CDN域名遭到DNS污染,导致无法连接使用 GitHub 的加速分发服务器,才使得国内访问速度很慢. 二.如何解决 DNS 污染?  通过修改 ...

  5. js加入收藏

    <script> function AddFavorite(sURL, sTitle) { try { window.external.addFavorite(sURL, sTitle); ...

  6. Mysql基本用法-left join、right join、 inner join、子查询和join-02

    left join #左连接又叫外连接 left join 返回左表中所有记录和右表中连接字段相等的记录  test_user表 phpcvs表 SQL: select * from test_use ...

  7. Go安装gRPC

    grpc-go的官方安装命令 go get google.golang.org/grpc 无法正常使用. 我们可以用以下的命令替代,达到同样的效果 git clone https://github.c ...

  8. Assign the task-HDU3974 dfs序+线段树

    题意: 一个公司有n个员工,每个员工都有一个上司,一个人下属的下属也是这个人的下属,因此可将他们的关系看成一棵树, 然后给定两种操作,C操作是查询当前员工的工作,T操作是将y工作分配给x员工,当一个人 ...

  9. 吴裕雄--天生自然PythonDjangoWeb企业开发:框架基础和技术选型

    简单的Web Server import socket eol1 = b'\n\n' eol2 = b'\n\r\n' body = '''Hello,world!<h1>tszrwyx& ...

  10. C++11类内static成员变量声明与定义

    众所周知,将一个类内的某个成员变量声明为static型,可以使得该类实例化得到的对象实现对象间数据共享. 在C++中,通常将一个类的声明写在头文件中,将这个类的具体定义(实现)写在cpp源文件中. 因 ...