微信协议详解

广告:宝塔Linux面板高效运维的服务器管理软件 点击【 https://www.bt.cn/p/uNLv1L 】立即购买

微信协议详解

微信web协议分析(微信网页版 wx2.qq.com)

1.打开首页,分配一个随机uuid,2.根据该uuid获取二维码图片。3.微信客户端扫描该图片,在客户端确认登录。4.浏览器不停的调用一个接口,如果返回登录成功,则调用登录接口5.此时可以获取联系人列表,可以发送消息。然后不断调用同步接口。6.如果同步接口有返回,则可以获取新消息,然后继续调用同步接口。

源码地址:github.com/biezhi/wechat-robot

执行流程
       +--------------+     +---------------+   +---------------+       |              |     |               |   |               |       |   Get UUID   |     |  Get Contact  |   | Status Notify |       |              |     |               |   |               |       +-------+------+     +-------^-------+   +-------^-------+               |                    |                   |               |                    +-------+  +--------+               |                            |  |       +-------v------+               +-----+--+------+      +--------------+       |              |               |               |      |              |       |  Get QRCode  |               |  Weixin Init  +------>  Sync Check  <----+       |              |               |               |      |              |    |       +-------+------+               +-------^-------+      +-------+------+    |               |                              |                      |           |               |                              |                      +-----------+               |                              |                      |       +-------v------+               +-------+--------+     +-------v-------+       |              | Confirm Login |                |     |               |+------>    Login     +---------------> New Login Page |     |  Weixin Sync  ||      |              |               |                |     |               ||      +------+-------+               +----------------+     +---------------+|             ||QRCode Scaned|+-------------+
登录后复制WebWechat API1. 获取UUID(参考方法 getUUID)API获取 UUIDurlhttps://login.weixin.qq.com/jsloginmethodGETdataURL Encodeparamsappid : wx782c26e4c19acffb fun : new lang: zh_CN _ : 时间戳

返回数据(String):

window.QRLogin.code = 200; window.QRLogin.uuid = "xxx"
登录后复制2. 显示二维码(参考方法 showQrCode)API显示二维码urllogin.weixin.qq.com/qrcode/{uuid}methodPOSTparamst : webwx <br/> _ : 时间戳3. 等待登录(参考方法 waitForLogin)这里是微信确认登录API二维码扫描登录urllogin.weixin.qq.com/cgi-bin/mmwebwx-bin/loginmethodGETparamstip : 1:未扫描 0:已扫描 uuid : 获取到的uuid _ : 时间戳

返回数据(String):

window.code=xxx;xxx:    408 登陆超时    201 扫描成功    200 确认登录当返回200时,还会有window.redirect_uri="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=xxx&uuid=xxx&lang=xxx&scan=xxx";
登录后复制4. 登录获取Cookie(参考方法 login)APIwebwxnewloginpageurlwx2.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpagemethodGETparamsticket : xxx uuid : xxx lang : zh_CN scan : xxx fun : new

返回数据(XML):

<error>    <ret>0</ret>    <message>OK</message>    <skey>xxx</skey>    <wxsid>xxx</wxsid>    <wxuin>xxx</wxuin>    <pass_ticket>xxx</pass_ticket>    <isgrayscale>1</isgrayscale></error>
登录后复制

在这一步获取xml中的 skey, wxsid, wxuin, pass_ticket

5. 微信初始化(参考方法 wxInit)APIwebwxiniturlwx2.qq.com/cgi-bin/mmwebwx-bin/webwxinitmethodPOSTdataJSONheaderContent-Type: application/json; charset=UTF-8params{ BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx, } }

返回数据(JSON):

{    "BaseResponse": {        "Ret": 0,        "ErrMsg": ""    },    "Count": 11,    "ContactList": [...],    "SyncKey": {        "Count": 4,        "List": [            {                "Key": 1,                "Val": 635705559            },            ...        ]    },    "User": {        "Uin": xxx,        "UserName": xxx,        "NickName": xxx,        "HeadImgUrl": xxx,        "RemarkName": "",        "PYInitial": "",        "PYQuanPin": "",        "RemarkPYInitial": "",        "RemarkPYQuanPin": "",        "HideInputBarFlag": 0,        "StarFriend": 0,        "Sex": 1,        "Signature": "Apt-get install B",        "AppAccountFlag": 0,        "VerifyFlag": 0,        "ContactFlag": 0,        "WebWxPluginSwitch": 0,        "HeadImgFlag": 1,        "SnsFlag": 17    },    "ChatSet": xxx,    "SKey": xxx,    "ClientVersion": 369297683,    "SystemTime": 1453124908,    "GrayScale": 1,    "InviteStartCount": 40,    "MPSubscribeMsgCount": 2,    "MPSubscribeMsgList": [...],    "ClickReportInterval": 600000}
登录后复制

这一步中获取 SyncKey, User 后面的消息监听用。

6. 开启微信状态通知(参考方法 wxStatusNotify)APIwebwxstatusnotifyurlwx2.qq.com/cgi-bin/mmwebwx-bin/webwxstatusnotifymethodPOSTdataJSONheaderContent-Type: application/json; charset=UTF-8params{ BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx }, Code: 3, FromUserName: 自己的ID, ToUserName: 自己的ID, ClientMsgId: 时间戳 }

返回数据(JSON):

{    "BaseResponse": {        "Ret": 0,        "ErrMsg": ""    },    ...}
登录后复制7. 获取联系人列表(参考方法 getContact)APIwebwxgetcontacturlwx2.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontactmethodPOSTdataJSONheaderContentType: application/json; charset=UTF-8params{ BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx, } }

返回数据(JSON):

{    "BaseResponse": {        "Ret": 0,        "ErrMsg": ""    },    "MemberCount": 334,    "MemberList": [        {            "Uin": 0,            "UserName": xxx,            "NickName": "Urinx",            "HeadImgUrl": xxx,            "ContactFlag": 3,            "MemberCount": 0,            "MemberList": [],            "RemarkName": "",            "HideInputBarFlag": 0,            "Sex": 0,            "Signature": "我是二蛋",            "VerifyFlag": 8,            "OwnerUin": 0,            "PYInitial": "URINX",            "PYQuanPin": "Urinx",            "RemarkPYInitial": "",            "RemarkPYQuanPin": "",            "StarFriend": 0,            "AppAccountFlag": 0,            "Statues": 0,            "AttrStatus": 0,            "Province": "",            "City": "",            "Alias": "Urinxs",            "SnsFlag": 0,            "UniFriend": 0,            "DisplayName": "",            "ChatRoomId": 0,            "KeyWord": "gh_",            "EncryChatRoomId": ""        },        ...    ],    "Seq": 0}
登录后复制8.消息检查(参考方法 syncCheck)APIsynccheckurlwebpush2.weixin.qq.com/cgi-bin/mmwebwx-bin/synccheckmethodGETdataJSONheaderContentType: application/json; charset=UTF-8params{ BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx, } }

返回数据(String):

window.synccheck={retcode:"xxx",selector:"xxx"}retcode:    0 正常    1100 失败/登出微信selector:    0 正常    2 新的消息    7 进入/离开聊天界面
登录后复制9. 获取最新消息(参考方法 webwxsync)APIwebwxsyncurlwx2.qq.com/cgi-bin/mmwebwx-bin/webwxsync?sid=xxx&skey=xxx&pass_ticket=xxxmethodPOSTdataJSONheaderContentType: application/json; charset=UTF-8params{ BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx }, SyncKey: xxx, rr: 时间戳取反 }

返回数据(JSON):

{    'BaseResponse': {'ErrMsg': '', 'Ret': 0},    'SyncKey': {        'Count': 7,        'List': [            {'Val': 636214192, 'Key': 1},            ...        ]    },    'ContinueFlag': 0,    'AddMsgCount': 1,    'AddMsgList': [        {            'FromUserName': '',            'PlayLength': 0,            'RecommendInfo': {...},            'Content': "",             'StatusNotifyUserName': '',            'StatusNotifyCode': 5,            'Status': 3,            'VoiceLength': 0,            'ToUserName': '',            'ForwardFlag': 0,            'AppMsgType': 0,            'AppInfo': {'Type': 0, 'AppID': ''},            'Url': '',            'ImgStatus': 1,            'MsgType': 51,            'ImgHeight': 0,            'MediaId': '',             'FileName': '',            'FileSize': '',            ...        },        ...    ],    'ModChatRoomMemberCount': 0,    'ModContactList': [],    'DelContactList': [],    'ModChatRoomMemberList': [],    'DelContactCount': 0,    ...}
登录后复制10. 发送消息(参考方法 webwxsendmsg)APIwebwxsendmsgurlwx2.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsg?pass_ticket=xxxmethodPOSTdataJSONheaderContentType: application/json; charset=UTF-8params{ BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx }, Msg: { Type: 1 文字消息, Content: 要发送的消息, FromUserName: 自己的ID, ToUserName: 好友的ID, LocalID: 与clientMsgId相同, ClientMsgId: 时间戳左移4位随后补上4位随机数 } }

返回数据(JSON):

{    "BaseResponse": {        "Ret": 0,        "ErrMsg": ""    },    ...}
登录后复制

更多资料:github.com/xiangzhai/qwxgithub.com/Urinx/WeixinBotwww.07net01.com/2016/01/1201188.htmlwww.cnblogs.com/xiaozhi_5638/p/4923811.html

【相关推荐】

1. 微信公众号源码下载

2. 阿狸子订单系统源码下载

以上就是微信协议详解的详细内容,更多请关注9543建站博客其它相关文章!

广告:SSL证书一年128.66元起,点击购买~~~

9543建站博客
一个专注于网站开发、微信开发的技术类纯净博客。
作者头像
admin创始人

肥猫,知名SEO博客站长,14年SEO经验。

上一篇:frontpage是php还是asp
下一篇:手把手教你使用CSS制作逼真的水波纹效果(附代码)

发表评论

关闭广告
关闭广告