最后更新:2022-04-07 23:03
这篇文章是魏博特别报导的一部分许多个人渴望建立自己的方案。登录、启动、阅读联系名单、发送微信、接收微信等等。实际上,许多人在网上这样做了。HTPANAlyzer是我的主要工具。我认为这是分析http/https协议的最佳工具。比铁沙和小提琴更清晰建议对http/https议定书的内容进行审查和利用。事实上,分析协议 和自己写代码 很简单。
以下是自行开发的接收和发送微信应用程序的基本程序:
1. 获取会话 UUID
邮件的网络版本要小心, 不使用用户名和密码登录, 而是使用扫描二维登录, 服务器必须先提供单会话 ID 来识别当前登录 。
使用get方法,通过请求地址:https://login.weixin.qq.com/jslogin?appid=wx782c26e4c19acffb&fun=new&lang=zh_CN&_=时间戳
这些标记的时间印记是林威治目前标准时间的毫秒。
获取后返回: window.QR Login.Code = 200; window.QR Login.uid = 'XX'
我们需要的是XXxx
2、获取登录二维码
这篇文章是我们2011年埃及抗议活动特别报导的一部分。
这就是我们刚刚得到的:XX。这个网站显示了两个维度的数字。
3. 考虑是否扫描二维日志。
在看到二维代码后, 用户必须用手机微信扫描二维代码 。 (有人会问, “ 为什么微型字母设计得这么精细? ” 这想法很奇怪。 我经常使用计算机, 因为我的手机不在那里。 它是为了安全 。
使用get方法,查询地址:https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login?uuid=XXXXXX&tip=1&_=时间戳
以下是我们刚刚获得的 XX 号, 以及时间戳。 初始获取时提示的数量应该为 1, 而这个数量应该为每次调查修改 。
如果服务器返回: window.Code = 201, 表示用户此时已在手机末尾被扫描, 但尚未点击验证, 并继续使用上述地址查询, 但提示为零 ;
如果服务器返回:
window.code=200
window.redirect_uri='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
这表明用户已经验证了目前移动电话上的登录, 窗口 。 redirect_ uri = 此地址应保存并稍后访问 。
如果服务器返回: window.Code = 408, 表示它正在等待加班, 请使用上面的查询地址, 但提示 = 1 。
4. 访问 viin、 sid、 过关票和密钥登录地址
用get方法,访问在上一步骤获得访问地址,并在参数后面加上:&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>
注意所有的 wxin, wxsid, skey, 和过锁值 。
5、微信初始化
这是一个关键阶段,我为此努力工作。
要使用POST方法,访问地址:https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r=时间戳&lang=ch_ZN&pass_ticket=XXXXXX
Pass_ ticket 是一长串字符 我们得到它, 与时间邮票不同, 时间邮票不需要解释。
一个json字符串就是POST的意义所在。{'BaseRequest':{'Uin':'XXXXXXXX','Sid':'XXXXXXXX','Skey':XXXXXXXXXXXXX','DeviceID':'e123456789012345'}}
在以上第4步中获取的字符串对应于 uin, sid, 和 skey, 而设备ID 是e 之后的一个随机整数 15 字节 。
请在应用程序中使用 UTF8 编码 。
POST 成功从服务器上返回一个大 JSON 字符串, 其格式如下 :
{
'BaseResponse': {
'Ret': 0,
'ErrMsg': ''
},
'Count': 8,
'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
}
这其中,用户内部是他自己的信息。用户名是一个假名 。昵称是一个名符其实的代名词。应当指出,用户名每次都有变化。。。也就是说,作为一个身份,获得独特和一致的身份是不可行的。无语。。。同步键通常有四个字符长。为了在这里记录钥匙和Val的名字每次返回时,信息都得到利用。让我们从计数和联系名单开始
6、获取好友列表
com/cgi-bin/mmwebwxbin/webwgetconfact?r=时间戳。
POST 内容为空。 成功返回 JSON 格式的所有联系人信息。 格式相似 :
{
'BaseResponse': {
'Ret': 0,
'ErrMsg': ''
},
'MemberCount': 21,
'MemberList': [
{
'Uin': 0,
'UserName': xxx,
'NickName': 'Urinx',
'HeadImgUrl': xxx,
'ContactFlag': 3,
'MemberCount': 0,
'MemberList': [],
'RemarkName': '',
'HideInputBarFlag': 0,
'Sex': 0,
'Signature': 'xxxx',
'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
}
例如,AmberCount展示了联系人的总数,内容更加明显。
7. 启用电子邮件状况通知。
com/cgi-bin/mmwebwxbin/webwxstatnony 。
POST 的内容是 JSON 字符串, 格式如下:
{
BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx },
Code: 3,
自定义身份, 来自用户Name :
您的代号, 用户名 :
客户MsgID:日期和时间戳
}
8. 心胸包包,与服务器同步,获得状态
完成这些程序后,用户可以开始发送和接收微型邮件的周期,这些微型邮件可用于以线性方式发送心跳包。
使用get方法,设置超时为60秒,@mmwebwx-bin/mcgi-bin/synccheck?sid=XXXXXX&uin=XXXXXX&synckey=XXXXXX&r=时间戳&skey=XXXXXX&deviceid=XXXXXX&_=时间戳
其他设置不言自明。 此处的同步密钥必须声明在 json 字符串中有许多关键信息, 这些关键信息必须从初始步骤、 键值(_val) 中合并, 并分开, 如下文所示:
1_652651920|2_652651939|3_652651904|1000_0
服务器返回以下内容 : window. == ==
重新编码成功为零,选择2和6显示新的数据。 4 关于公共编号的新数据。
9、读取新信息
检测到有信息以后,用POST方法,访问:https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxsync?sid=XXXXXX&skey=XXXXXX
POST的内容:
“基础请求 ” : “ DeviceID ” :, “ sid ” : “ 关键 ”, “ Uin ”,, “ SyncKey ” : 计数 : 4, “ List ” : “ Key” : 1, “ Val” : 65265 3204, 键 : 2, “ Val” : 652653674, 键: 3, “ Val” : 652653544, 键: 1 00, “ Val ” :
请注意同步键格式,并参考前述指示。
当请求成功时, 服务器会发送一个 JSON 字符串, 其中 AddMsgCount 显示有多少信息可用, AddMsgList 包含一系列新消息, MgType 指定了信息类型, 而内容是信息的内容 。
应当指出,归还的信息将包括一个新的同步键。新的密钥将用于下一次获取信息,以更新此信息。
10、发送信息
如果使用 POST 方法, 这个功能更容易操作 : https://wx2. I'm not sure, qq.
POST仍是一个json格式,如下所示:
“ Mg” : “ 字元 ” : 1, “ 类型 ” : “ 测试信息 ”, “ 用户名称 ” : “ XX ”, “ 用户名称 ” : “ XX ”, “ 本地ID ” : “ 时戳 ”, “ ClietMsgID ” : “ 时戳 ”, “ 基准请求 ” : “ XX ”, “ id” : “ XX ”, “ 键 ”
字体是信息内容,本地ID和客户MsgID使用目前的时间戳。
这是基本的微信程序。 您可以以此为起点, 自行创建更相关的材料 。
本文由 在线网速测试 整理编辑,转载请注明出处。