经过HTTP协议实时获取微信聊天记录

第一步:登录
一、get访问微信首页 https://wx.qq.com
提供session、headers
用途:获取cookie
后续访问必须带session、headers、cookie这三个参数,并保持不变
二、get访问 https://wx.qq.com/jslogin
get参数分别是
appid:值为自定义,格式为wx782c26e4c19acffb
fun:值为new
lang:值为en_us
_:值为当前时间戳
用途:获取二维码uuid
用途:下载和展现二维码
四、扫码和确认,访问 https://wx.qq.com/cgi-bin/mmwebwx-bin/login
get参数
loginicon:值必须为true
uuid:值为{{uuid}}
r:值为当前时间戳/1524
_:值为当前时间戳
用途:返回登录状态,登录成功以后的redirect_uri
返回状态码说明以下:
200,扫码和确认成功
201,扫码,未确认
其余,未扫码或者其余缘由
 
第二步、初始化页面和获取登录信息
一、get访问{{redirect_uri}}
用途:返回登录认证等信息,一个字典类型的json格式,下文用login_info表示
二、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: “”}
    …
]web

参数说明:List>UserName就是对应群组的id,群组id是 webwxgetcontact返回的id前缀是@@的。
注意:这个接口 webwxgetcontact你多是没法获取群组信息的,究其缘由是由于你并无将群聊加入通信录,只要在微信上,点开你要监听的群组,而后开启将群组加入通信录就能够了。
 
第四步、接受和发送新信息
一、接受信息
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开头部分
二、发送信息
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
相关文章
相关标签/搜索