完整源码下载

点击下载完整源码
如果对你有用,请给个Star,你的支持,是我最大的动力

1 获取所有QQ

这里主要通过抓包,抓取QQ空间中的数据
记得将访问空间权限改为QQ好友

获取QQ好友列表

接口地址:
https://h5.qzone.qq.com/proxy/domain/base.qzone.qq.com/cgi-bin/right/get_entryuinlist.cgi?uin=741047261&fupdate=1&action=1&offset=0&g_tk=847821819&qzonetoken=24dd9cbc92e1ba657addcd982f7f4d0fa1a9ee8ba7b8d52863703a10274f08f9325d1298e5afac11

这里uin 为你的QQ号
offset 偏移量 ,每次增加 50 即可
g_tk是从cookie中获取的 p_skey 再通过算法获得;

java版实现此算法:

public class GetTk {public static String getTk(String skey) {int hash = 5381;  for(int i = 0, len = skey.length(); i < len; ++i){  hash += (hash << 5) + (int)(char)skey.charAt(i);  }  return (hash & 0x7fffffff)+"";  }  }

完整版java实现:

package com.pibigstar.qq.main;import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;import org.json.JSONObject;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;import com.pibigstar.qq.domain.User;
import com.pibigstar.qq.utils.GetCookies;
import com.pibigstar.qq.utils.GetTk;
import com.pibigstar.qq.utils.JSONUtil;/*** 获取所有的QQ用户列表* @author pibigstar**/
public class GetAllUser {public static List<User> getAll(Map<String, String> cookies) throws IOException{List<User> allUser = new ArrayList<>();String qq = cookies.get("o_cookie");String pskey = cookies.get("p_skey");String g_tk = GetTk.getTk(pskey);for(int i=0;;) {Document document = Jsoup.connect("https://h5.qzone.qq.com/proxy/domain/base.qzone.qq.com/cgi-bin/right/get_entryuinlist.cgi?uin=741047261&fupdate=1&action=1&offset="+i+"&g_tk="+g_tk).cookies(cookies).header("user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36").timeout(10000).ignoreContentType(true).get();String strJson = document.getElementsByTag("body").text().replace("_Callback(", "").replace(");", "");JSONObject jsonObject = new JSONObject(strJson);String jsonData =((JSONObject) jsonObject.get("data")).get("uinlist").toString();List<User> users = JSONUtil.JSONToList(jsonData, User.class);if (users==null||users.size()==0) {break;}allUser.addAll(users);i+=50;}return allUser;}}

2 获得QQ信息
接口地址:
http://cgi.find.qq.com/qqfind/buddy/search_v3

post请求,需要两个参数:
keyword : 你要查询的QQ号码
lwd : g_tk 值

注意:此g_tk 的值为 cookie中 skey 计算得来的 而不是 p_skey

java实现

package com.pibigstar.qq.main;import java.io.IOException;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONObject;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;import com.pibigstar.qq.domain.User;
import com.pibigstar.qq.utils.GetTk;
import com.pibigstar.qq.utils.JSONUtil;public class GetInfo{public static User getInfo(String qq,Map<String, String> cookies) {User user = new User();Map<String, String> data = new HashMap<>();//注意这里,获得信息是用的skey 而获得全部好友使用的为p_skeyString skey = cookies.get("skey");String g_tk = GetTk.getTk(skey);data.put("keyword", qq);data.put("ldw", g_tk);Document document;try {document = Jsoup.connect("http://cgi.find.qq.com/qqfind/buddy/search_v3").cookies(cookies).header("user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36").ignoreContentType(true).data(data).timeout(10000).post();String allJson = document.getElementsByTag("body").text();System.out.println(allJson);JSONObject result = (JSONObject) new JSONObject(allJson).get("result");JSONObject buddy = (JSONObject) result.get("buddy");JSONArray jsonArray = buddy.getJSONArray("info_list");JSONObject dataJson = (JSONObject) jsonArray.get(0);user = JSONUtil.jSONToObject(dataJson.toString(), User.class);JSONObject birthdayJson = (JSONObject) dataJson.get("birthday");String year = birthdayJson.get("year").toString();String month = birthdayJson.get("month").toString();String day = birthdayJson.get("day").toString();String birthday = year+"-"+month+"-"+day;user.setBirthday(birthday);Calendar calendar = Calendar.getInstance();int now = calendar.get(Calendar.YEAR);if (year!=null&&year.length()>0) {int age = now - Integer.parseInt(year);user.setAge(age);}} catch (IOException e) {e.printStackTrace();}return user;}}

把user的bean也放一下

package com.pibigstar.qq.domain;public class User {private String data;//QQ号private String label;//用户名/备注名private String nick;//昵称private String gender;//性别 1为男  2为女private String city;//城市private String country;//国家private String lnick;//个性签名private String personal;//个人说明private String college;//学校private String birthday;//生日private String email;//邮箱private String phone;//手机private String uin;//qq号private int age;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getUin() {return uin;}public void setUin(String uin) {this.uin = uin;}public String getData() {return data;}public void setData(String data) {this.data = data;}public String getLabel() {return label;}public void setLabel(String label) {this.label = label;}public String getNick() {return nick;}public void setNick(String nick) {this.nick = nick;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}public String getCountry() {return country;}public void setCountry(String country) {this.country = country;}public String getLnick() {return lnick;}public void setLnick(String lnick) {this.lnick = lnick;}public String getPersonal() {return personal;}public void setPersonal(String personal) {this.personal = personal;}public String getCollege() {return college;}public void setCollege(String college) {this.college = college;}public String getBirthday() {return birthday;}public void setBirthday(String birthday) {this.birthday = birthday;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}@Overridepublic String toString() {return "User [data=" + data + ", label=" + label + ", nick=" + nick + ", gender=" + gender + ", city=" + city+ ", country=" + country + ", lnick=" + lnick + ", personal=" + personal + ", college=" + college+ ", birthday=" + birthday + ", email=" + email + ", phone=" + phone + "]";}}

以上仅供学习参考。

QQ好友列表获取

QQ好友列表获取软件   qq群交流:573714756

获取QQ好友列表、QQ分组信息、QQ群成员数据接口实现相关推荐

  1. js解密之QQ的bkn值,获取QQ群成员信息,获取QQ好友列表信息

    js解密之QQ的bkn值,获取QQ群成员信息,获取QQ好友列表信息   Lan   2020-05-31 12:13   126 人阅读  0 条评论 QQ群网站:https://qun.qq.com ...

  2. qq好友列表获取导出,利用QQ协议实现好友数据备份,包含:qq好友、QQ分组、QQ群、qq群成员【附code源码】

    qq好友列表获取导出,利用QQ协议实现qq好友数据备份,包含:qq好友.QQ分组.QQ群.qq群成员. 我们是在浏览器中的操作,接下来看看数据到底怎么获取的,我们通过Fiddler的查找功能,就可以查 ...

  3. 手机获取QQ好友列表的信息【Android】

    QQ作为大众社交软件.很多朋友在开发QQ软件时不知道怎么QQ好友列表信息.特别是针对手机端QQ好友列表获取.下面小编在开发手机qq好友列表获取软件的一些记录. 简单的原理: 第一步  先申请opena ...

  4. python获取qq好友ip_使用Python模拟登录QQ邮箱获取QQ好友列表

    最近因开发项目的需要,有一个需求,就是很多SNS网站都有的通过 Email地址 导入好友列表,不过这次要导入的不是Email 列表,而是QQ的好友列表. 实现方式: 通过google一搜,实现的方式大 ...

  5. android 仿qq好友动态,Android UI仿QQ好友列表分组悬浮效果

    本文实例为大家分享了Android UI仿QQ好友列表分组悬浮效果的具体代码,供大家参考,具体内容如下 楼主是在平板上測试的.图片略微有点大,大家看看效果就好 接下来贴源代码: PinnedHeade ...

  6. QQ登录回调地址实现:【获取qq好友列表数据】附实例

    QQ登录回调地址实现:[获取qq好友列表数据] <?php require_once("../../API/qqConnectAPI.php"); $qc = new QC( ...

  7. 利用web端接口实现QQ好友列表获取、QQ群成员获取列表的实例分析

    当开放API成为历史潮流不可阻挡之时,腾讯亦只能与时俱进,但腾讯为了保持江湖的垄断地位,不会随意公开像QQ号这样的客户资源,于是乎,你能通过webQQ查询到的,也只能是用户或群的昵称,绝非QQ号码或群 ...

  8. qq好友列表获取之动态爬虫清洗爬取好友列表数据 - 获取qq好友、群、群成员列表

    qq好友列表获取之动态爬虫清洗爬取qq好友列表数据 - 获取qq好友ip.群.群成员列表.我们的好友列表要从 qzone 获取,现在打开 qzone 的链接 https://h5.qzone.qq.c ...

  9. 原生JS获取QQ好友列表

    JS内容如下: /*** @author ius.* @date 2022/8/1* @introduction 获取QQ好友列表*/function getCookie(aim) {const al ...

  10. 14_自定义ItemDecoration实现qq好友列表分组效果

    14_自定义ItemDecoration实现qq好友列表分组效果 一.先上效果 二.RecyclerView实现简单分组 RecyclerView比较常规的用法,显示多item布局,直接上代码: pu ...

最新文章

  1. Js结束,项目进行中
  2. Hadoop wordcount
  3. Java实现读取服务器上的图片并进行base64编码
  4. Request_获取请求参数中文乱码问题处理
  5. 一个用于SAP UI5学习的脚手架应用,没有任何后台API的依赖
  6. 一.redis 环境搭建
  7. SpringCloud服务安全连接
  8. jsonschema php 例子,[宜配屋]听图阁
  9. (Excel)常用函数公式及操作技巧之四:文本与页面设置(一)
  10. prototype.js之$A(iterable)
  11. 刺激!我31岁敲代码10年,明天退休!
  12. csv 计算机系统化验证,计算机化系统CSV验证问答.doc
  13. 常用接口介绍03——485
  14. Ubuntu系统盘制作
  15. [RQNOJ PID85]三个袋子 {快速幂 or 矩阵乘法}
  16. c# winform人脸识别
  17. 百钱买百鸡问题的最优解法
  18. 天气预报小程序 微信小程序期末大作业(含文档)
  19. [汇编语言] 循环与分支程序设计 例题
  20. (c语言)通俗易懂的冒泡代码思路

热门文章

  1. 【练习题】第四章--交互设计(Think Python)
  2. vue3.0+ts+element-plus多页签应用模板:侧边导航菜单(下)
  3. 关于“马太效应”,“蝴蝶效应”、“鲶鱼效应”的解释(转贴)
  4. 惠州学院计算机学院陈东骏,教学情况简报第107期
  5. 关于GIS中Scale和Resolution的那些事儿
  6. MySQL 排序规则
  7. 【js】js获取今日和昨日0点和23点59分59秒
  8. 椭球面的c语言方程,喷油嘴椭球面手工编程方法的实现
  9. 你的终极目标是什么?
  10. SVN `Clean up`时报错如何处理