文档章节

模拟登陆web微信的流程和参数细节

l
 lykops
发布于 2017/08/12 02:31
字数 1107
阅读 19
收藏 0

这几天在用python3写了一个模拟登陆web微信,发送和接受信息的lykchat信息发送系统,解决zabbix发送告警信息的问题。

发现步骤不多,但需要的参数太多了
把流程和细节分享出来

第一步:登陆

1、get访问微信首页https://wx.qq.com

提供headers
用途:获取cookie
后续访问必须带headers、cookie等参数

2、get访问https://wx.qq.com/jslogin

get参数分别是
   appid:固定值,暂时为wx782c26e4c19acffb
    fun:值为new
    lang:语言,值为en_us
    redirect_uri:值为https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage
    _:值为当前时间戳
完整的URL例子https://wx2.qq.com/jslogin?redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&appid=wx782c26e4c19acffb&lang=en_US&_=1485065568&fun=new
用途:获取二维码uuid

3、get访问https://wx.qq.com/qrcode/{{uuid}}

例子:https://wx2.qq.com/qrcode/AfdK5U5qyw==
用途:下载和展示二维码

4、扫码和确认,访问https://wx.qq.com/cgi-bin/mmwebwx-bin/login

get参数
   loginicon:值必须为true
    uuid:值为{{uuid}}
    r:值为当前时间戳按位求反值
    _:值为当前时间戳
完整的URL例子:https://wx2.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=AacJ62nlRg==&tip=0&r=-974452&_=1485065779
用途:返回登陆状态,登陆成功之后的redirect_uri
返回状态码说明如下:
    200,扫码和确认成功
    201,扫码,未确认
    其他,未扫码或者其他原因

第二步、初始化页面和获取登陆信息

1、get访问{{redirect_uri}}

完整的URL例子:https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=A0k1PKCiAX8_8nyisAG0R9d5@qrticket_0&uuid=AacJ62nlRg==&lang=en_US&scan=1485065793
用途:返回登陆认证等信息,一个字典类型的json格式,下文用login_info表示

2、post访问https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r=【当前时间戳】

post参数为
    BaseRequest:通过1返回参数获取值
    例子:{"BaseRequest": {"DeviceID": "uKUD8e%2Bp7iXqNpbOuPTntL7OdbsfxEv5JdQjKtb7Mc%2FVQK2leE%2BRrNVkI5fQZZjB", "Sid": "xkQE8IoFPjwXEf2W", "Uin": "575635712", "Skey": "@crypt_2b05caf0_2290c785d1bc5646d2ff0ff771ec3324", "isgrayscale": "1"}}
用途:返回微信用户信息、第一页好友信息、和BaseRequest、最新聊天信息等等

第三步、获取好友信息

get访问https://wx.qq.com/webwxgetcontact
get参数
    r:值为当前时间戳*1000
    seq:值为0
    skey:值为login_info[Skey]
完整的URL例子:https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact?r=1485065800&seq=0&skey=@crypt_2b05caf0_2290c785d1bc5646d2ff0ff771ec3324
用途:返回所有的好友信息,字典json格式
有用的好友信息字段说明:
    Sex:
        1表示男
        2表示女
        0为其他【没有设置性别的好友、公众号、群、系统账号等等】
    UserName,微信系统为每个微信号分配一个唯一号码
        以@@开头的表示群、字母或者数字开头表示系统账号
        以单@开头的表示公众号、好友等,好友的字符数多,公众号等字符数少
        不已@开头的,表示微信通知用的,例如文件传输助手filehelper
    NickName,个人设置的昵称,重复可能性很大
    Alias,微信号,如果没有设置为空,不会出现重复

第四步、接受和发送新信息

1、定时检查是否有新信息

    get访问https://{{sync_url}}/synccheck
    get参数是:
        'r'        : 当前时间戳*1000
        'skey'     : login_info[skey]
        'sid'      : login_info[sid]
        'uin'      : login_info[uin]
        'deviceid' : login_info[deviceid]
        'synckey'  : login_info[synckey]
        '_'        : 当前时间戳*1000
    完整的URL例子:https://webpush.wx2.qq.com/cgi-bin/mmwebwx-bin/synccheck?deviceid=e565817597249768&synckey=List_%5B%7B%27Key%27%3A+1%2C+%27Val%27%3A+645531166%7D%2C+%7B%27Key%27%3A+2%2C+%27Val%27%3A+645531276%7D%2C+%7B%27Key%27%3A+3%2C+%27Val%27%3A+645531125%7D%2C+%7B%27Key%27%3A+1000%2C+%27Val%27%3A+1485058018%7D%5D%7CCount_4&skey=%40crypt_2b05caf0_2290c785d1bc5646d2ff0ff771ec3324&sid=xkQE8IoFPjwXEf2W&r=1485065802608&_=1485065802608&uin=575635712    
    用途:返回最新信息数,0表示没有新消息

2、获取新信息内容

post访问https://wx.qq.com/webwxsync?sid=login_info[sid]&skey=login_info[skey]&lang=en_US&pass_ticket=login_info[pass_ticket]
    post参数为
        'BaseRequest' : login_info[BaseRequest]
        'SyncKey'     : login_info[SyncKey]
        'rr'          : 当前时间戳按位求反值
        例子:{"rr": -1485065809, "BaseRequest": {"Ret": 0, "ErrMsg": ""}, "SyncKey": {"List": [{"Key": 1, "Val": 645531166}, {"Key": 2, "Val": 645531278}, {"Key": 3, "Val": 645531125}, {"Key": 11, "Val": 645531260}, {"Key": 13, "Val": 645524153}, {"Key": 201, "Val": 1485065810}, {"Key": 203, "Val": 1485064747}, {"Key": 1000, "Val": 1485058018}, {"Key": 1001, "Val": 1485057992}, {"Key": 1002, "Val": 1485058221}, {"Key": 1004, "Val": 1484911834}], "Count": 11}}
    完整的URL例子:https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxsync?sid=xkQE8IoFPjwXEf2W&skey=@crypt_2b05caf0_2290c785d1bc5646d2ff0ff771ec3324&lang=en_US&pass_ticket=uKUD8e%2Bp7iXqNpbOuPTntL7OdbsfxEv5JdQjKtb7Mc%2FVQK2leE%2BRrNVkI5fQZZjB
    用途:返回最新信息列表
    注意:群信息的发送者放在Content开头部分

3、发送信息

post访问https://wx.qq.com/webwxsendmsg
post参数
        'BaseRequest': self.base_request,
        'Msg': {
            'Type': login_info[BaseRequest],
            'Content': content,
            'FromUserName': 自己的username,
            'ToUserName': 发送的username,
            'LocalID': int(time.time() * 1000 * 1000 * 10),
            'ClientMsgId': int(time.time() * 1000 * 1000 * 10),
            },
        'Scene' : 0
    返回发送结果json字典


有错误之处,请指教


lykchat信息发送系统工作流程图


lykchat信息发送系统流程图

本文转载自:http://blog.csdn.net/liyingke112/article/details/54668452

l
粉丝 2
博文 297
码字总数 7445
作品 2
深圳
运维
私信 提问
信息发送系统--lykchat

lykchat信息发送系统是Python3开发的,通过模拟微信网页端,基于个人微信号,为系统管理人员提供信息发送工具。 实现的功能有用户登录管理、微信登陆管理和微信信息发送功能。 特点 1、简单高...

lykops
2017/04/05
2.2K
2
仿写H5牛牛游戏后端Websocket-demo程序

【理解需求】 提供一个”DEMO的DEMO”供理解需求 物料: .net 4.0框架 两个微信号 微信多开器: http://t.cn/RONC3AY 微信PC版本:自行搜索下载 DEMO的DEMO:http://t.cn/RONpcwE 系统网址:http...

zb1507813131999
2017/10/13
112
0
PHP微信模拟登陆后如何实现模拟下发图文

PHP微信模拟登陆后如何实现模拟下发图文,我的图片已经上传到微信公众平台了,而且得到了mediaid,怎么实现下发图文呢?需要的参数都有哪些,他的type是什么?求解

哈哈乖乖
2014/01/13
300
1
《CURL技术知识教程》系列分享专栏

《CURL技术知识教程》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201737.html 文章 PHP采集相关教程之一 CURL函数库 php中通过curl模拟登陆discuz论坛的实现...

开元中国2015
2018/11/06
49
0
微信授权问题

H5网站使用getopenid对用户进行授权登陆,具体流程为用户尝试访问页面a,先跳转至微信授权页进行登陆,再跳转回a页面。为了完成该功能,只能将a页面的地址以state的方式传回给微信,然后在c...

开源中国刘德华
2017/07/03
142
0

没有更多内容

加载失败,请刷新页面

加载更多

领域驱动中的“贫血症和失忆症”

贫血症严重危害着人类健康,并且伴随有危险的副作用。当贫血领域对象被首次提出来时,它并不是一个博得赞美的词汇,它描述的是一个缺少内在行为领域对象。奇怪的是,人们对于贫血领域对象的态...

还仙
17分钟前
4
0
条码打印软件中标签预览正常打印无反应怎么解决

在使用条码打印软件制作标签时,有客户反馈,标签打印预览正常的,但是打印无反应,咨询是怎么回事?今天针对这个情况,可以参考以下方法进行解决。 一、预览正常情况下,打印没反应 (1)在条码...

中琅软件
26分钟前
4
0
判断字符串的时候

判断字符串的时候一定把常量房前边, //报警程度 String leve = vo.getDeviceAlertDeal().getWarnLevel(); if(("0").equals(leve)) { row.add("无报警"); }else if(("1").equals(leve)) { ro......

简小姐
27分钟前
5
0
Linux maven3.6.2 install

PS:安装 maven 之前请先安装 jdk 1.安装 wget 命令(安装过就不用了) yum -y install wget 2.寻找需要的 maven 版本 https://maven.apache.org/download.cgi 3.进入 /var/local 文件夹 cd...

东方神祇
29分钟前
4
0
Tomcat源码分析二:先看看Tomcat的整体架构

Tomcat源码分析二:先看看Tomcat的整体架构 Tomcat架构图 我们先来看一张比较经典的Tomcat架构图: 从这张图中,我们可以看出Tomcat中含有Server、Service、Connector、Container等组件,接下...

flygrk
32分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部