webqq机器人java_一步一步来做WebQQ机器人-(四)(获取好友列表和群列表)
×
本篇主要是: 获取好友列表,群列表
我会尽量详细一点,尽我所知的分享一些可能大家已经掌握的或者还不清楚的经验
利于大家阅读,文章样式不再复杂化,根据内容取固定色
目前总进度大概65%
全系列预计会有这些步骤,当然某些步骤可能会合并:
验证码
第一次登陆
第二次登陆
保持在线和接收消息
获取好友和群列表
发送消息
变成智能的(*゚∀゚*)
获取好友 1-获取QQ好友的hash算法
P = function (b, j) {
for (var a = j + "password error", i = "", E = []; ;)
if (i.length <= a.length) {
if (i += b, i.length == a.length) break;
} else {
i = i.slice(0, a.length);
break
}
for (var c = 0; c < i.length; c++) E[c] = i.charCodeAt(c) ^ a.charCodeAt(c);
a = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
i = "";
for (c = 0; c < E.length; c++) i += a[E[c] >> 4 & 15], i += a[E[c] & 15];
return i
}
传入了2个参数:QQ号码、ptwebqq(文章2中从cookie中拿到)
获取好友 2-请求
地址:http://s.web2.qq.com/api/get_user_friends2
referer:http://s.web2.qq.com/proxy.html?v=20130916001&callback=1&id=1
post字符串:string.Format("r={{\"vfwebqq\":\"{0}\",\"hash\":\"{1}\"}}", this.VfWebQQ, this.Hash);
获取好友 3-返回和分析
返回json对象由两部分组成:retcode、result,前者表示请求是否成功不提,我们主要看result,里面包含了这些东西:
categories,分类,即你的QQ好友分组,index可以看做分组表的主键,sort排序,name该组的别名。《我的好友》分组默认是index:0
friends好友,flag表示默认头像序号,后文同不提,uin是贯穿全文的参数,是在网页关闭前,浏览器客户端的唯一标识,categories对应上面分组信息
info 储存了好友的信息--昵称nick,uin对应唯一标识
marknames 备注名称,同样uin对应唯一标识,markname对应备注名称,这里要说的是,如果没有备注,在这里是不显示的
vipinfo,vip信息,无用
我建立了一个类去用于反序列化它
class JsonFriendModel
{
public int retcode { get; set; }
public paramResult result = new paramResult();
public class paramResult
{
///
/// 分组信息
///
public List categories = new List();
///
/// 好友汇总
///
public List friends = new List();
///
/// 好友信息
///
public List info = new List();
///
/// 备注
///
public List marknames = new List();
///
/// 分组
///
public class paramCategories
{
public string index { get; set; }
public int sort { get; set; }
public string name { get; set; }
}
///
/// 好友汇总
///
public class paramFriends
{
public string flag { get; set; }
public string uin { get; set; }
public string categories { get; set; }
}
///
/// 好友信息
///
public class paramInfo
{
public string face { get; set; }
public string nick { get; set; }
public string uin { get; set; }
}
///
/// 备注
///
public class paramMarkNames
{
public string uin { get; set; }
public string markname { get; set; }
}
}
}
小扩展 linq中的left join 左查询
上面返回的result信息,包含了4个对象,互相使用uin或者其它进行关联,使用for循环固然可以,当然有更漂亮的方法也会跟大家分享一下,如果写的不好也请大家多提意见:
var query = from f in model.result.friends
join i in model.result.info on f.uin equals i.uin into table1
from t1 in table1.DefaultIfEmpty()
join m in model.result.marknames on f.uin equals m.uin into table2
from t2 in table2.DefaultIfEmpty()
select new Friend()
{
Uin = f.uin,
Face = t1 == null ? string.Empty : t1.face,
Category = f.categories,
Nick = t1 == null ? string.Empty : t1.nick,
MarkName = t2 == null ? string.Empty : t2.markname
};
以上是使用了left join 多表进行关联查询,model即对应了返回json的result属性
获取群 1-请求信息
地址:http://s.web2.qq.com/api/get_group_name_list_mask2
referer:http://s.web2.qq.com/proxy.html?v=20130916001&callback=1&id=1
post字符串:string.Format("r={{\"vfwebqq\":\"{0}\",\"hash\":\"{1}\"}}", this.VfWebQQ, this.Hash);
获取群 2-返回信息
结构和获取好友有些类似,不同的是:群的唯一标识是gid,好友的是uin,名称不同。以下是对应的实体类:
class JsonGroupModel
{
public int retcode { get; set; }
public paramResult result = new paramResult();
public class paramResult
{
public List gnamelist = new List();
public class paramGnamelist
{
public string flag { get; set; }
public string gid { get; set; }
public string code { get; set; }
public string name { get; set; }
}
}
}
×Close
到目前为止,已经可以完整的登陆,并保持在线,获取消息(解析消息还未说明),获取好友和群列表
接下来我想对每一篇文章写上对应的demo,来帮助大家更好的理解整个过程,毕竟文章主要讲的是流程,实际操作中可能遇到这种或者那种的问题。
为之前的文章附上demo,可能会花一点时间,原计划的每日一更就难实现了...尽量吧
使用C#模拟http请求可以参考猛戳这里
您有没有对这篇文章感兴趣呢?
还好啦 WQNMLGB
自制QQ分组控件(自己写的,凑合用=。=):点击下载
一步一步来做WebQQ机器人-(四)(获取好友列表和群列表):点击下载
本步骤的demo,一步一步来做WebQQ机器人-(四)(获取好友列表和群列表+自制QQ分组控件),更新于2015/2/5
可以到该系列最后一篇文章查看是否可能有最新demo
转载请保留本页链接:http://www.cnblogs.com/lianmin/p/4237723.html
.
webqq机器人java_一步一步来做WebQQ机器人-(四)(获取好友列表和群列表)相关推荐
- webQQ获得群列表、好友列表
本文来源于:http://hi.baidu.com/5457090/item/9746ca53536bf2968d12ed56 转载请注明出处 当开放API成为历史潮流不可阻挡之时,腾讯亦只能与时俱进 ...
- 拼插机器人课和围棋课_创想童年机器人编程课程,让孩子享受学习和游戏的快乐...
人工智能不是互联网的产品,而将是一个时代. 如果说人工智能学科是一棵树,那么我们现在所发展的互联网.计算机编程等技术只算是刚刚为它培好了土.将来,从算法程序到机器人的"大脑"构建, ...
- 一步一步教你如何将 yolov3/yolov4 转为 caffe 模型
实际工作中,目标检测 yolov3 或者 yolov4 模型移植到 AI 芯片中,经常需要将其先转换为 caffe1.x 模型,大家可能或多或少也有这方面的需求.例如华为海思 NNIE 只支持caff ...
- 一步一步学python爬虫_初学Python之爬虫的简单入门
初学Python之爬虫的简单入门 一.什么是爬虫? 1.简单介绍爬虫 爬虫的全称为网络爬虫,简称爬虫,别名有网络机器人,网络蜘蛛等等. 网络爬虫是一种自动获取网页内容的程序,为搜索引擎提供了重要的数据 ...
- MATLAB Robotics System Toolbox学习笔记(一):一步一步建造一个机械臂
本文参考 MathWorks 中 Help Center 的 Build a Robot Step by Step ,并加以自己的理解 原网址:https://ww2.mathworks.cn/hel ...
- pytest+yaml设计接口自动化框架过程记录(一步一步记录如何设计,完结撒花),源码提供,视频教程
pytest+yaml设计接口自动化框架过程记录 第三代框架使用教程,该框架比现在这个完善了很多 框架简介 框架运行演示和功能介绍视频 pytest+yaml框架环境配置和使用教程 0.去年也写了一个 ...
- 调试JDK源码-一步一步看HashMap怎么Hash和扩容
调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...
- 一步一步指引你在Windows7上配置编译使用Caffe(https://github.com/fengbingchun/Caffe_Test)
之前写过几篇关于Caffe源码在Windows764位上配置编译及使用过程,只是没有把整个工程放到网上,最近把整个工程整理清理了下,把它放到了GitHub上.下面对这个工程的使用作几点说明: 1. ...
- 一步一步实现扫雷游戏(C语言实现)(三)
使用WIN32API连接窗口 此项目相关博文链接 一步一步实现扫雷游戏(C语言实现)(一) 一步一步实现扫雷游戏(C语言实现)(二) 一步一步实现扫雷游戏(C语言实现)(三) 一步一步实现扫雷游戏(C ...
- 一步一步学Silverlight 2系列(3):界面布局
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
最新文章
- 戴尔坐拥100亿现金 收购目标剑指何方?
- oracle+监控索引使用,ORACLE 监控索引的使用
- SQL Server创建存储过程
- java localhosty_GitHub - yxxxd/sorryJava: 给动图加字幕的sorry项目的java版本
- 神策数据加入猿团程序员大牛卡,创客大礼包助力开发。
- 前端实现搜索记录功能
- 微软开源Scalar,提升操作巨型Git仓库的速度
- 漂亮的不太像手机!三星Galaxy S11最新渲染图曝光
- Numpy库的学习(三)
- 微服务在微信的架构实践
- 2.Docker技术入门与实战 --- 核心概念与安装配置
- 一些shell脚本,sed替换
- mac版 SimHei添加教程
- 如何使用AForge调用本机摄像头
- 物联网应用技术有哪些?
- lumion拍摄视频基础
- python+vue 税务申报系统
- 虚拟机服务器 资料安全,绝密:三步教你轻松窃取VMware虚拟机及其数据漏洞预警 -电脑资料...
- Shade4PointLights
- 百信计算机管理员登录账号密码,192.168.0.1管理员密码是多少 管理员密码一般是啥...
热门文章
- linux系统微信怎么放桌面上,Linux桌面给软件添加快捷图标deepinUbuntu安装微信开发者工具...
- 虚拟机迁移Sphere vMotion
- Linux默认的系统管理账号是(),Linux系统管理用户账号详解
- ecosys m5021cdn_京瓷ECOSYS M5021cdn驱动
- 人脸识别摄像头与普通摄像头的区别
- java项目如何打包?
- Terrasolid Suite v015-v016 for Microstation CONNECT, V8i, V8 for Windows platforms 1CD
- java中的各种集合排序
- java 双三次线性插值_双线性及双三次插值
- 百度刷排名,刷流量,刷下拉软件【完全免费】胖虎图图-互动点击系统