第一步:登錄
一、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
redirect_uri:值爲
https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage
_:值爲當前時間戳
用途:獲取二維碼uuid
三、get訪問
https://wx.qq.com/qrcode/{{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表示沒有新消息
2)、獲取新信息內容,post訪問
https://wx.qq.com/webwxsync?sid=login_info[sid]&skey=login_info[skey]&lang=en_US&pass_ticket=login_info[pass_ticket]
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