admin管理员组

文章数量:1532174

2024年6月6日发(作者:)

通信与网络 

微信网页版的模拟登录方案 

张振扬 湖北工业大学 

摘要:本文通过抓取微信网页版的数据包,从登录、初始化、消息更新、发送消息四个部分,系统的分析了微信网页版的整个会话流程 

为进一步开发微信辅助工具提供了思路。 

关键词:微信模拟登录聊天机器人 

1引言 

::

200:window.QRI ogin.uuid=”XXX”;其中,uuid是通 

澉信是由腾讯开发的即时通讯软件。截iL到2017年,微信 

的月活跃用户超过9.8亿,日活跃l片j户也达到了q.O2亿。与以 

往QQ主要面向年轻群体不同,微信赢得了所有年龄层,又因为 

它功能全面却不失简洁,被誉为世界上最强大的应用程序之…。 

现如今,通过微信开展的事务越来越多,除了同事间交流、 

通知、请示、汇报,员工还被要求利用微信维系客户关系、提供 

咨询服务以及产品的营销推广 以咨询服务为例.传统的现场 

咨询、电话咨询都是即时、一对-,N务,而微信上时常会有多人 

间时咨询,又由于“最晚到的消息排列在最前”的设计,回复时 

效无法保证。 

越来越多人希望能将重复、琐碎的工作交给~一蜂辅助工具 

去做。本文以微信网页版为研究对象,分析并模拟徽信网页版 

的登录、运行过程,乃开发基于微信的辅助T具提供思路。 

2微信网页版的会话流程 

作为一款即时通讯软件,我们可以将微信网页版的整个会 

活流程划分为“登录”一“初始化”~“消息更新”一“矬送消息” 

四 尚5分。#中登录部分分为“获取U[JID”一“棼澎 :镶码”一“等 

副扫描:二维码”~“获职跫最参数”四个步骤;拐 为“顿 

取初始化信息”一“开启微信状态通知”一“获取好友矧最”一“获 

取群组列表”四个步骤;消息更新部分分为“检查消廖 ”一“获 

取最新消息”。 

3模拟登录 

微信网页版只能通过手机APP扫描二维码这种:芍式登 

录。用』’打开网 版馓信地9h(https。,/ V;X.qq. j 丁,网炙 

茸先向服务器(https:,</Ic'gin。wx.qq.eoffl, 一 l 送一个 

Get请求,具体请求参数如表1: 

表1 

参数名 值 备注 

appid wx782c26e4c19acffb 固定值 

redirect

https%3A%2F%2Fwx. 

Url 

qq.com%2Fcgi—bmo

bin%2Fwebwxnewl

/ 0,2Fmmwebwx一 

oginpage 

固定值 

I fun new 固定值 

l lang zh_CN 简体中文 

l 一 1514563500553 时I司戳 

微信服务器随之返回如下报文:window.QRLogin.code 

数码世界R128 

用唯一识别码(Universally Unique ldentiiter)的缩写,用 

于区分每一次登录,而uuid的值还被用干显永二维码.:: 维 

码的URL格式为https://login.weixin.qq.COrn/qreode ̄ 

XXX。 

在用户使用扫描二维码并点击确认登录之前,微信网页 

版每间隔一段时间,都会向服务器发送一个get请求,URL 

为https://!ogin.WX.qq.corn/cgi-bin/ramwebwx—bin/ 

!ogin,具体参数如表2: 

表2请求=维码 

参数名 值 备注 

logtr]icon true 

UU1a 曲面扳同的uuid 

tip 0代表已扫描, 代表未扫描 

r 时间戳取反 

时间戳 

如果服务器返回:W[t-idow.code=2()i;代表用户已经扫 

描二维码,但尚未在手机上 认登录,如果返回:window. 

code=408;代表用户长时I司没有扫描 一旦用户在手机客户端 

上点击确认登录,服务器端将返回如下数据: 

window.code=200:Window.redn ect_uri: htt.ps:// 

WE.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpa 

ge?ticket=xxx&uuid=xxx&fang=zh—CN&scan=xxx”; 

此时 客户端会继续请求刚才暇务端返回的URL,并得 

到如下返回结果:<error><ret>0</ret><message></ 

message><skey>XXX< /SkeY><WxSid>×KX</ 

wXSid><wxUtt1>xXX</Wxuin><pass—ticket>xxx</ 

pass_ticket><isgrayscale>l</isgrayscale><./error>。 找 

们可以从中取得skey’wxsid

wxuin和pass—ticket四个参 

数的值

。 

4微信初始化 

前面的步骤仅仅完成了登录这一个过程,还需要继续获 

取用户的基本信息、好友、群组乃至公众号。客户端将继续访 

问如下URL:https://wx。qq.com/cgi-bin/mmwebwx— 

bin/webwxinit?r=xxx&pass_l:icket=xxx,其中r是时间 

戳,pass_ticket是前面获取到的值。在访问该URL时,还需 

信与网络 

要Post以下数据:{”BaseRequest”:{”Uin”:”XXXII tlSidII:11X 

XXit iiSkeyI 1IIXXXII IIDeviceID“:”XXX”}}a Uin即为wxuin, 

当发现有新的消息时,客户端会向服务器post一个请求, 

UR乙为https://wx.qq.com/cgi-bin/mmwebwx-bin/ 

Sid即为wxsid,DeviceID为e+15位随机数。服务器随即返 

webwxsync?sid=xxx&skey=xxx&pass—ticket=xxx, 同 

回一个JSON串,其中ContactList是联系人列表'但并不完整, 

User是当前用户的信息。 

时提交下列数据:{”BaseRequest”:{flUin”:XXX,”SidII IIXXX 

”Skey”:”XXXII IfDevicelD”:”XXX”}’I1SyncKey”:{IlCount”: 

然后,就要开启消息状态通知。访问如下 

8,”ListII:【{IlKey”:1,”Val":701532377},{ffKey”:2,”Val”:701533-- 

URL:https;//wx.qq.com/cgi-bin/mmwebwx-bin/ 

243},{llKeyIf 3,”Val":701533081},{lIKey”:l1,”Val”:701533192}, 

webwxstatusnotify?pass_ticket=xxx,并Post如下数 

{llKey”:201,”Val”:1514991006},{IIKeyI1:203,”Val”:1514988765 

据:{IIBaseRequest”:{ffUin”:0000000,”Sid”:”XXX”,”Sk 

ey”:”XXX”,”DeviceID”:”XXX” Code”:3,”FromUserN 

ame”:”XXX”

”ToUserName”:’’XXX”,。。ClientMsgId”:x 

xX}。其中FromUserName和ToUserName是自己的id。 

而ClientMsgld是时间戳。服务器随即返回如下数据: 

{BaseResponse:{Ret:0,ErrMsg:””},MsglD:”XXX”} 

接着,需要继续获取好友列表和群列表。向https:∥ 

WX.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact 

发送如表3中的参数的Get请求: 

寰3 

参数名 值 备注 

larig zh_CN 

pass_ticket 

r 时间戳 

seq 0 

skey 

服务端将返回一个列表该列表即包括好友也包括公众号, 

还包括群组,它们之间通过ContactFlag参数区分,1为好友, 

2为群组,3为公众号。 

5消息更新 

要想保持消息的同步,就需要不断的向服务器发送Get 

请求检查最新消息,具体的URL为https://webpush2. 

weixin.qq.com/cgi-bin/mmwebwx—bin/synccheck,参 

数如表4: 

衰4 

参数名 值 备注 

r , 时间戳 

skey 前面获取 

sid 前面获取 

Um 前面获取 

deviceid 前面获取 

synckey 初始化时返回的Sync中的list列表 

时间戳 

服务器将返回如下数据:window.synccheck={retcode: 

”O”,selector:”0”},其中,retcode=0代表正常,retcode-1i00 

代表失败或微信已登出,selector=O代表正常,selcector=2 

代表新的消息,selcector=7代表进入或退出聊天窗口。 

},{IIKey”:1000,”Val”:1514973002},{lfKey”:1001,”Val”:151497 

3O74}】}’I’rr”:1132416953}。需要说明的是,rr为时间戳取反。 

需要说明的是,Ret=0代表返回成功,AddMsgCount后 

的数值代表新消息个数,AddMsgList为新消息的列表。 

6发送消息 

发送一条消息,实质上就是提交了一个post请求, 

URL为https://wx.qq.com/cgi-bin/mmwebwx-bin/ 

webwxsendmsg?pass_ticket=xxx,提交的数据为: Baser 

equest”:{IIUin”:XXX,”SidII IIXXX”,”Skey”:”XXX”,”DeviceID 

”XXX”}'f1Msg”:{llType”:1,”Content”:”XXX”,”FromUserNa 

me”:”XXXtI IfToUserName”:”filehelperII IILocallD”:“XXX”,“ 

ClientMsgld”:”XXX“}9IISceneII O}。其中,type为消息类型,1 

为文字消息,3为图片消息,Content为消息内容,LocalID为 

13位时间戳加上4位随机数。 

7总结 

移动互联网时代带来了更多机遇,它令人们更便捷、更快 

速的发送消息,但实际上也导致很多人疲于回复消息。通过对 

微信网页版整个会话流程的分析,可以根据实际需求,开发出 

各种实用的微信辅助工具,将有需要的人从繁琐、重复的工作 

中解放出来。 

作者简介 

张振扬(1992--),男,湖北工业大学,研究方向:网站开发,数据挖掘 

潮北武汉,2430068。 

钢 

Digital Space R129 

本文标签: 微信消息登录网页模拟