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
版权声明:本文标题:微信网页版的模拟登录方案_图文 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1717635299a593106.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论