第一步:登陆
1、get访问微信首页https://wx.qq.com
提供session、headers
用途:获取cookie
后续访问必须带session、headers、cookie这三个参数,并保持不变
get参数分别是
appid:值为自定义,格式为wx782c26e4c19acffb
fun:值为new
lang:值为en_us
_:值为当前时间戳
用途:获取二维码uuid
用途:下载和展示二维码
4、扫码和确认,访问https://wx.qq.com/cgi-bin/mmwebwx-bin/login
get参数
loginicon:值必须为true
uuid:值为{{uuid}}
r:值为当前时间戳/1524
_:值为当前时间戳
用途:返回登陆状态,登陆成功之后的redirect_uri
返回状态码说明如下:
200,扫码和确认成功
201,扫码,未确认
其他,未扫码或者其他原因
 
第二步、初始化页面和获取登陆信息
1、get访问{{redirect_uri}}
用途:返回登陆认证等信息,一个字典类型的json格式,下文用login_info表示
2、post访问https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r=【当前时间戳】
post参数为
BaseRequest:通过1返回参数获取值
例子:{"BaseRequest": {"DeviceID": "uKUD8e%2Bp7iXqNpbOuPTntL7OdbsfxEv5JdQjKtb7Mc%2FVQK2leE%2BRrNVkI5fQZZjB", "Sid": "xkQE8IoFPjwXEf2W", "Uin": "575635712", "Skey": "@crypt_2b05caf0_2290c785d1bc5646d2ff0ff771ec3324", "isgrayscale": "1"}}
用途:返回微信用户信息、第一页好友信息、和BaseRequest、最新聊天信息等等
 
 
第三步、获取好友信息
get参数
r:值为当前时间戳
seq:值为0
skey:值为login_info[Skey]
用途:返回所有的好友信息,字典json格式
有用的好友信息字段说明:
Sex:1表示男,2表示女,0为其他【公众号、群、系统账号等等】
UserName,微信系统为每个微信号分配一个唯一号码,开头@@表示群、字母或者数字开头表示系统账号,其他【公众号、好友等】以单@开头
NickName,个人设置的昵称,重复可能性很大
Alias,微信号,如果没有设置为空,不会出现重复
 
3.2获取群组信息(如果不想获取群组内的人员昵称、头像等参数,可以先不用研究)
post访问 https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxbatchgetcontact?type=ex&r=xxx&lang=zh_CN&pass_ticket=xxx
参数:

BaseRequest:
{
    DeviceID:”xxx”
    Sid:”xxx”
    Skey:”xxx”
    Uin:xxx
}
Count:4
List:
[
    0:{UserName: “xxx”, EncryChatRoomId: “”}
    1:{UserName: “xxx”, ChatRoomId: “”}
    …
]

参数说明:List>UserName就是对应群组的id,群组id是webwxgetcontact返回的id前缀是@@的。
注意:这个接口webwxgetcontact你可能是无法获取群组信息的,究其原因是因为你并没有将群聊加入通讯录,只要在微信上,点开你要监听的群组,然后开启将群组加入通讯录就可以了。
 
第四步、接受和发送新信息
1、接受信息
1)、定时检查是否有新信息
get参数是:
'r' : 当前时间戳*1000
'skey' : login_info[skey]
'sid' : login_info[sid]
'uin' : login_info[uin]
'deviceid' : login_info[deviceid]
'synckey' : login_info[synckey]
'_' : 当前时间戳*1000
用途:返回最新信息数,0表示没有新消息
post参数为
'BaseRequest' : login_info[BaseRequest]
'SyncKey' : login_info[SyncKey]
'rr' :~当前时间戳*1000
例子:{"rr": -1485065809, "BaseRequest": {"Ret": 0, "ErrMsg": ""}, "SyncKey": {"List": [{"Key": 1, "Val": 645531166}, {"Key": 2, "Val": 645531278}, {"Key": 3, "Val": 645531125}, {"Key": 11, "Val": 645531260}, {"Key": 13, "Val": 645524153}, {"Key": 201, "Val": 1485065810}, {"Key": 203, "Val": 1485064747}, {"Key": 1000, "Val": 1485058018}, {"Key": 1001, "Val": 1485057992}, {"Key": 1002, "Val": 1485058221}, {"Key": 1004, "Val": 1484911834}], "Count": 11}}
用途:返回最新信息列表
注意:群信息的发送者放在Content开头部分
2、发送信息
post参数
'BaseRequest': self.base_request,
'Msg': {
'Type': login_info[BaseRequest],
'Content': content,
'FromUserName': 自己的username,
'ToUserName': 发送的username,
'LocalID': login_info[msgid],
'ClientMsgId': login_info[msgid],
},
例子:{"Msg": {"Content": "啊啊啊啊", "ToUserName": "filehelper", "FromUserName": "@974141db55d51041ee1e0b8b6af5589776a5282910b9ac1e154693430a23f79f", "Type": "Test Message", "LocalID": 1485065800472, "ClientMsgId": 1485065800472}, "BaseRequest": {"Ret": 0, "ErrMsg": ""}}
返回发送结果json字典
需要代码或技术支持可以私聊我QQ:969061664

通过HTTP协议实时获取微信聊天记录的更多相关文章

  1. Android开发——获取微信聊天记录(后台秘密发邮件)

    1. 首先先展示一下效果图: 2. Accessibility机制 Accessibility机制之前已经介绍过了,具体可以查看Accessibility机制实现模拟点击,需要简单的配置(如设置被监听 ...

  2. Xp根据数据库insert获取微信聊天记录

    https://mp.weixin.qq.com/s?__biz=MzIzNDA3MDgwNA==&mid=2649230245&idx=1&sn=3746423a481976 ...

  3. (转)获取安卓iOS上的微信聊天记录、通过Metasploit控制安卓

    在这篇文章中我们将讨论如何获取安卓.苹果设备中的微信聊天记录,并演示如何利用后门通过Metasploit对安卓设备进行控制.文章比较基础.可动手性强,有设备的童鞋不妨边阅读文章边操作,希望能激发大家对 ...

  4. 微信聊天记录查看器(程序+源码) - iOS版

    本文版权归cxun所有,如有转载请注明出处与本文链接,谢谢!原文地址:http://www.cnblogs.com/cxun/p/4338643.html Updates [2016.10.14]感谢 ...

  5. 移动安全初探:窃取微信聊天记录、Hacking Android with Metasploit

    在这篇文章中我们将讨论如何获取安卓.苹果设备中的微信聊天记录,并演示如何利用后门通过Metasploit对安卓设备进行控制.文章比较基础.可动手性强,有设备的童鞋不妨边阅读文章边操作,希望能激发大家对 ...

  6. 第七篇 :微信公众平台开发实战Java版之如何获取微信用户基本信息

    在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的.对于不同公众号,同一用户的openid不同). 公众号可通过本接口来根据O ...

  7. 微信公众号开发系列-获取微信OpenID

    在微信开发时候在做消息接口交互的时候须要使用带微信加密ID(OpenId),下面讲讲述2中类型方式获取微信OpenID.接收事件推送方式和网页授权获取用户基本信息方式获取. 1.通过接收被动消息方式获 ...

  8. php获取微信基础接口凭证Access_token

    php获取微信基础接口凭证Access_token的具体代码,供大家参考,具体内容如下 access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token.开发者需要进 ...

  9. geotrellis使用(二十二)实时获取点状目标对应的栅格数据值

    目录 前言 实现方法 总结 一.前言        其实这个功能之前已经实现,今天将其采用1.0版的方式进行了重构与完善,现将该内容进行总结.        其实这个功能很常见,比如google地球上 ...

随机推荐

  1. web项目的创建

    1) 创建Mave的webapp项目 2) 在Pom文件中添加servlet-api的依赖 <dependency> <groupId>javax.servlet</gr ...

  2. maven使用nexus3.3在windows下搭建私服

    1. 私服简介 私服是指私有服务器,是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构建.有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库:否则 ...

  3. swift bug 调试记(wsgi.input)

    第一次指定纠删码策略,修改了一部分swift代码后,执行PUT object,就被一个bug拦住.产生bug代码段如下: try: with ChunkReadTimeout(self.client_ ...

  4. [USACO09JAN]全流Total Flow

    题目描述 Farmer John always wants his cows to have enough water and thus has made a map of the N (1 < ...

  5. 交友app

    编辑注记:这是由译者 han_qi 翻译纽约客的一篇文章,从女性的角度描写了交友产品的用户体验及需求,值得广大产品经理深入研究,文章略长,但值得深读.原文<Overwhelmed and Cre ...

  6. ORACLE分区表删除分区数据

    --全删除 ALTER TABLE tableName DROP PARTITION partionName UPDATE GLOBAL INDEXES; --清数据 ALTER TABLE tabl ...

  7. 玲珑杯 ACM Round #10

    A 题意:给长度为n的序列染黑白色,要求连续的黑的格子数量<=a,连续的白的格子数量<=b,问方案总数,有多个询问 分析:递推 注意数据范围,是可以O(n)做的,所以可以直接递推 B 题意 ...

  8. Abstract factory抽象工厂--对象创建型

    意图: 提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类. 别名:Kit 补充: 抽象产品A : (产品A1 和产品 A2) 抽象产品B : ( 产品B1 和 产品B2) 一般情况 ...

  9. hdu 1247 Hat’s Words(从给的单词中找hat&#39;s word 并按字典序输出)

    1.在使用mp[key]的时候它会去找键值为key的项,假设没有,他会自己主动加入一个key的项,再把value赋值为对应的初始值(value是int的话赋值为0,string的话赋值为空).所以假设 ...

  10. squid配置透明代理

    搞了半个月的squid普通代理和透明代理最终差点儿相同了!! squid配置透明代理主要有两步.见图: 第一个基本的步骤:设置client默认网关,让默认网关指向squid代理server water ...