获取QQ好友列表、QQ分组信息、QQ群成员数据接口实现
完整源码下载
点击下载完整源码
如果对你有用,请给个Star,你的支持,是我最大的动力
1 获取所有QQ
这里主要通过抓包,抓取QQ空间中的数据
记得将访问空间权限改为QQ好友
![](/assets/blank.gif)
接口地址:
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 + "]";}}
以上仅供学习参考。
![](http://qk.gam7.com/uploads/qq-578421920.jpg)
QQ好友列表获取软件 qq群交流:573714756
获取QQ好友列表、QQ分组信息、QQ群成员数据接口实现相关推荐
- js解密之QQ的bkn值,获取QQ群成员信息,获取QQ好友列表信息
js解密之QQ的bkn值,获取QQ群成员信息,获取QQ好友列表信息 Lan 2020-05-31 12:13 126 人阅读 0 条评论 QQ群网站:https://qun.qq.com ...
- qq好友列表获取导出,利用QQ协议实现好友数据备份,包含:qq好友、QQ分组、QQ群、qq群成员【附code源码】
qq好友列表获取导出,利用QQ协议实现qq好友数据备份,包含:qq好友.QQ分组.QQ群.qq群成员. 我们是在浏览器中的操作,接下来看看数据到底怎么获取的,我们通过Fiddler的查找功能,就可以查 ...
- 手机获取QQ好友列表的信息【Android】
QQ作为大众社交软件.很多朋友在开发QQ软件时不知道怎么QQ好友列表信息.特别是针对手机端QQ好友列表获取.下面小编在开发手机qq好友列表获取软件的一些记录. 简单的原理: 第一步 先申请opena ...
- python获取qq好友ip_使用Python模拟登录QQ邮箱获取QQ好友列表
最近因开发项目的需要,有一个需求,就是很多SNS网站都有的通过 Email地址 导入好友列表,不过这次要导入的不是Email 列表,而是QQ的好友列表. 实现方式: 通过google一搜,实现的方式大 ...
- android 仿qq好友动态,Android UI仿QQ好友列表分组悬浮效果
本文实例为大家分享了Android UI仿QQ好友列表分组悬浮效果的具体代码,供大家参考,具体内容如下 楼主是在平板上測试的.图片略微有点大,大家看看效果就好 接下来贴源代码: PinnedHeade ...
- QQ登录回调地址实现:【获取qq好友列表数据】附实例
QQ登录回调地址实现:[获取qq好友列表数据] <?php require_once("../../API/qqConnectAPI.php"); $qc = new QC( ...
- 利用web端接口实现QQ好友列表获取、QQ群成员获取列表的实例分析
当开放API成为历史潮流不可阻挡之时,腾讯亦只能与时俱进,但腾讯为了保持江湖的垄断地位,不会随意公开像QQ号这样的客户资源,于是乎,你能通过webQQ查询到的,也只能是用户或群的昵称,绝非QQ号码或群 ...
- qq好友列表获取之动态爬虫清洗爬取好友列表数据 - 获取qq好友、群、群成员列表
qq好友列表获取之动态爬虫清洗爬取qq好友列表数据 - 获取qq好友ip.群.群成员列表.我们的好友列表要从 qzone 获取,现在打开 qzone 的链接 https://h5.qzone.qq.c ...
- 原生JS获取QQ好友列表
JS内容如下: /*** @author ius.* @date 2022/8/1* @introduction 获取QQ好友列表*/function getCookie(aim) {const al ...
- 14_自定义ItemDecoration实现qq好友列表分组效果
14_自定义ItemDecoration实现qq好友列表分组效果 一.先上效果 二.RecyclerView实现简单分组 RecyclerView比较常规的用法,显示多item布局,直接上代码: pu ...
最新文章
- Js结束,项目进行中
- Hadoop wordcount
- Java实现读取服务器上的图片并进行base64编码
- Request_获取请求参数中文乱码问题处理
- 一个用于SAP UI5学习的脚手架应用,没有任何后台API的依赖
- 一.redis 环境搭建
- SpringCloud服务安全连接
- jsonschema php 例子,[宜配屋]听图阁
- (Excel)常用函数公式及操作技巧之四:文本与页面设置(一)
- prototype.js之$A(iterable)
- 刺激!我31岁敲代码10年,明天退休!
- csv 计算机系统化验证,计算机化系统CSV验证问答.doc
- 常用接口介绍03——485
- Ubuntu系统盘制作
- [RQNOJ PID85]三个袋子 {快速幂 or 矩阵乘法}
- c# winform人脸识别
- 百钱买百鸡问题的最优解法
- 天气预报小程序 微信小程序期末大作业(含文档)
- [汇编语言] 循环与分支程序设计 例题
- (c语言)通俗易懂的冒泡代码思路
热门文章
- 【练习题】第四章--交互设计(Think Python)
- vue3.0+ts+element-plus多页签应用模板:侧边导航菜单(下)
- 关于“马太效应”,“蝴蝶效应”、“鲶鱼效应”的解释(转贴)
- 惠州学院计算机学院陈东骏,教学情况简报第107期
- 关于GIS中Scale和Resolution的那些事儿
- MySQL 排序规则
- 【js】js获取今日和昨日0点和23点59分59秒
- 椭球面的c语言方程,喷油嘴椭球面手工编程方法的实现
- 你的终极目标是什么?
- SVN `Clean up`时报错如何处理