WEB微信协议详注(待续)

当初写微信机器人也是为了个红包,虽然红包拿到了,过程还是蛮有意思的,下面给下详细说明。

微信入口主要有两个(wx和wx2),wx老号   wx2新号,我微信是老号了,为了测试方便采用的是老号入口。

1.入口抓包,获取uuid

开启浏览器F12功能,对https://wx.qq.com抓包,拿到我们需要的入口地址,获取uuid

参数说明:appid                  固定值

redirect_uri         固定值

fun                      固定值

lang                    固定值

_                          标准时间戳

返回:

window.QRLogin.code = 200; window.QRLogin.uuid = "wZ1Pov3CSw==";

这一步拿到uuid,进而uuid拿到登陆用户头像

2.获取二维码

参数说明:

https://login.weixin.qq.com/qrcode/+uuid      其中uuid为上一步获取

此处需注意返回的二维码是jpg图像,在delpgi处理的时候转换处理

3.获取登陆用户头像          

参数说明:

loginicon:true                            固定值

  1. uuid:wb1sJ27NXA==                上一步拿到的uuid
  2. tip:1                                           固定值
  3. r:-1747051986                          可选,没明白这个是什么
  4. _:1522165474425                      时间戳

返回:

window.code=201;window.userAvatar = 'data:img/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDABQODxIPD.......

window.code=200;

window.redirect_uri="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=Af-yYTSZi- [email protected]_0&uuid=wb1sJ27NXA==&lang=zh_CN&scan=1522165494";

window.code    登陆状态

201   扫码成功     ,此时可获取登陆用户头像,但是base64编码字符串

200   登陆成功     ,此时需获取ticket,sacn,下一步需要ticket和scan

408   超时

头像处理:

4.获取skey, wxsid, wxuin, pass_ticket

 

这一步最关键的是要注意返回的cookie信息,得保存cookie信息,后面取好友头像都需要;且需获取skey, wxsid, wxuin, pass_ticket留着下一步用,其中wxsid等同sid,wxuin等同uin

delphi中获取cookie:

5.WEB微信初始化  并且获取最近联系人信息

参数说明:

r        时间戳

DeviceID:"e556747131131712"                                                                 e开头后面为15位随机数

              1. Sid:"SnROJhZtphzwfrVN"                                                                          上一步获取的wxsid
              2. Skey:"@crypt_3644f5c5_cda37df8947228dea79115d5353586db"           之前获取的skey
              3. Uin:"1152509820"                                                                                      上一步中的wxuin

返回:

此处可获取登陆用户的个人信息,其中UserName需保存留做下一步微信初始化;

此处需特别注意synckey这个json串,这个必须得处理,是后面心跳同步必须的参数。且synckey还得处理为这种形式:1_669512273|2_669514056|3_669513917|1000_1521781562。

6.开启微信状态通知

参数说明:

              1. ClientMsgId:1522165487663                                                        时间戳
              2. Code:3                                                                                            固定值
              3. FromUserName:"@e89318a6092d99a68ca4884bd194c221"        上一步中的username
              4. ToUserName:"@e89318a6092d99a68ca4884bd194c221"

7.获取全部好友列表

参数说明:

            1. pass_ticket:w%2FAWW%2BCIv6aHWOjucFm%2BS3z2GB7i8cq%2B0GqzGAXZXHCdYzHUEUA96EHdGExvR4rx
            2. r:1522165488107
            3. seq:0                                                              固定值
            4. skey:@crypt_3644f5c5_cda37df8947228dea79115d5353586db

            返回:

            MemberList中包括了好友的一些基本信息,包括好友头像。

            8.获取好友头像

            其中url可以从上一步中的好友列表中获取到,也可以从微信初始化返回串中获取到,只是前者是部分好友,后者是全部好友;但这一步需要提交cookie,具体所需cookie见图

            关于头像格式问题,我好友里面有2种格式jgp和png ,其余的没有,至于上面说的4种格式,是百度的。这一步需要格式转换,当然也可以替换成我们所想看见的头像,比如这样:

            9.开启心跳检测,检测是否有新消息

            这一步中以json提交的参数中最重要的就是synckey,在微信初始化获取的返回值中,url中得处理成1_669514562|2_669515616|3_669515447|1000_1522139642这个样子,但提交的参数中得以json串的形式提交。

            返回:

            window.synccheck={retcode:"0",selector:"2"}

            retcode: 0正常

            1100失败/登出微信

            selector: 0正常

            2新的消息

            心跳同步中有一机制:第一次提交返回都是2,此时需要再次提交,提交所需的synckey来源于第一次提交后返回的synckey,只有这样才能正确同步。

            10.

            获取心跳检测后新消息

            Request URL:https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsync?sid=eUHDYUDwG/zBTQI5&[email protected]_3644f5c5_fb23dd323ac02e87c4837e7fbb149a81&pass_ticket=fSIBCYjascLrYzTOgnZaQcXSHcMZ3kc0ZCTrx7DQD2oAFdV%252FggeRCPk%252BFnNhCVrL

            Request Method:POST

            sid:eUHDYUDwG/zBTQI5

            skey:@crypt_3644f5c5_fb23dd323ac02e87c4837e7fbb149a81

            pass_ticket:fSIBCYjascLrYzTOgnZaQcXSHcMZ3kc0ZCTrx7DQD2oAFdV%2FggeRCPk%2BFnNhCVrL

            这一步提交需要以json方式且需提交cookie,成功后返回新的消息内容和最为重要的synckey信息。

            -------------------------------------------------------我是分割线------------------------------------------------------------------------

            放2张成功同步心跳的

原文地址:http://blog.51cto.com/hji116/2091858

时间: 2024-08-29 16:53:29

WEB微信协议详注(待续)的相关文章

WEB微信协议详注(续)

先放一张效果图 以上的基础都是建立在正确同步心跳之上:呵呵,界面做的很丑哈,不过关键是功能实现了. 再次强调一次: 同步中所用的synckey 第一次所需的synckey是在微信初始化时返回的字串中,在开启同步心跳的时候第一次提交的synckey就是来源于此: 第一次同步心跳后返回的状态是2,这时候需要去提取一次新消息(即使没新消息也得去提取),这步关键是获取服务器 返回的synckey:如果有新消息,返回状态依然是2,但返回的synckey就是服务器上的synckey:如果没有新消息,返回 状

ASP.NET中Web.Config配置文件详解与应用

1.首先是Web.Config配置文件详解的参数含义(具体内容都在以下代码中有注释-我从网上找到的) 1 <?xml version="1.0" encoding="utf-8"?> 2 3 <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置.可以使用 Visual Studio 中 4 的“网站”->“Asp.Net 配置”选项. 5 6 设置和注释的完整列表在 machine.config.comm

HTTP协议详解以及URL具体访问过程

1.简介 1.1.HTTP协议是什么? 即超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准.从网络参考模型来看,它是属于应用层.它规定了计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器. 简单的来说,它就是基于应用层一个规范一个标准!通讯双发都需要遵守这一准则,这就是http协议! 1.2.http简史

[转]Web.config配置文件详解(新手必看)

本文转自:http://www.cnblogs.com/gaoweipeng/archive/2009/05/17/1458762.html 花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. <?xml version="1.0"?> <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置.可以

.Net中Web.config 配置详解

花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. <?xml version="1.0"?> <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置.可以使用 Visual Studio 中的“网站”->“Asp.Net 配置”选项. 设置和注释的完整列表在 machine.config.

HTTP协议详解

HTTP协议详解 转载(http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html) 当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等. 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容较多,希望大家耐心看.也希望对大家的开发工作或者测试工作有所帮助.使用Fidd

HTTP协议详解(真的很经典)

引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出.HTTP协议的主要特点可概括如下:1.支持客户/服务器模式.2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径.请求方法常用的有GET.HEAD.POS

HTTP协议详解 (转)

转自 http://blog.csdn.net/gueter/article/details/1524447 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出.HTTP协议的主要特点可概括如下:1.支持客户/服务

IP协议详解

IP协议详解 前言 本屌今天可算是累坏了,一大早起来本来寻思赶快centOS虚拟机玩玩吧,那天刚装了系统,本来的虚拟机没了,今天想着先把centOS装上,结果给个系统不停的给我扯淡啊,显示虚拟机上不去网,好不容易上去网了,ping不通主机,主机ping不通虚拟机,各种办法都试了,最后我吧VMware8那块网卡禁用了,卧槽!!啥都好了,本屌一直鼓捣到晚上八点,从早晨10点多.服了我自己了. 引入 在前面的学习中,我们简单地IP接力和IP地址后,咱们今天具体的说说IP协议的具体细节和设计哲学. IP