更新记录

1.0.0(2022-04-02)

使用colorui


平台兼容性

Vue2 Vue3
×
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
app-vue × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

title: 微信网页版API接口详解 tags:

  • 网页微信API categories:
  • API date: 2022-03-31 22:34:27

网页版微信提供的API接口

1、获取uuid

  • 说明:用于获取显示二维码以及登录所需的uuid,标识获取二维码和扫码的为同一个用户

  • 请求方式:GET

  • 地址https://login.wx.qq.com/jslogin

  • get参数 参数 示例值 说明
    appid wx782c26e4c19acffb 固定值
    fun new 固定值
    lang zh_CN 表示中文字符集
  • 返回:

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

    注:这里的appid就是在微信开放平台注册的应用的AppID。网页版微信有两个AppID,早期的是wx782c26e4c19acffb,在微信客户端上显示为应用名称为Web微信;现在用的是wxeb7ec651dd0aefa9,显示名称为微信网页版

2、生成登陆二维码

  • 说明:展示一张用于登陆的二维码图片,地址里的{uuid}传第一步所获取的uuid
  • 请求方式:GET
  • 地址https://login.wx.qq.com/qrcode/{uuid}
  • get参数 参数 示例值 说明
    t webwx 固定值(亲测可以留空)
  • 返回:二维码的二进制流,浏览器打开会直接显示一张二维码图片

3、轮询二维码扫描登录接口

  • 说明:尝试登录。若此时用户手机已完成扫码并点击登录,则返回一个真正用于登录的url地址。否则接口大概10s后返回未扫码或未登录的状态码
  • 请求方式:GET
  • 地址https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login
  • get参数 参数 示例值 说明
    tip 1 1:未扫描 0:一扫描
    uuid xxx 第一步所获取的uuid
  • 返回:redirect_uri的值可以直接用于下一步的“登录并获取公参”请求
    window.code=xxx;
    xxx:
    408 登陆超时
    201 扫描成功
    200 确认登录
    当返回200时,还会有如下内容
    window.redirect_uri="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=xxx&uuid=xxx&lang=xxx&scan=xxx";

4、登录并获取公参

  • 说明:访问后可获取一组公参,用于之后访问所有的接口。这也意味着如果这部分数据泄露,代表其他人可以在这段时间内随意操作你的微信(仅限于网页版支持的操作)
  • 请求方式:GET
  • 地址https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage
  • get参数 参数 示例值
    params ticket: xxx
    uuid: xxx
    lang: zh_CN 语言
    scan: xxx
    fun: new 必填
  • 返回:获取并存储该返回值中的四个参数skey、wxsid、wxuin、pass_ticket,以及所返回Cookie中的webwx_data_ticket,webwx_auth_ticket
    <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>

    skey wxsid wxuin pass_ticket webwx_data_ticket webwx_auth_ticket 保存全局跟本地,下次打开直接使用,不用扫码登陆。

5、微信初始化

  • 说明:初始化微信首页栏的联系人、公众号等(不是通讯录里的联系人),初始化登录者自己的信息(包括昵称等),初始化同步消息所用的SycnKey
  • 请求方式:POST
  • 类型:JSON
  • 请求头:ContentType: application/json; charset=UTF-8
  • 地址https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxinit
  • get参数 参数 示例值 说明
    pass_ticket qg%2BL%2BfjNnoHyqYsL3xj0KoNi5nqchsInPWWSxDwqCJ8%3D 公参中的值
  • post参数json
    {
    BaseRequest: {
        Uin: 211722515,
        Sid: +urBrYI292xoIknf,
        Skey: @crypt_8b4f09cc_a5871dc10130a48703b9afd5602152e4,
        DeviceID: e545297464380306
        //上边的DeviceID是设备id(自行生成跟保存),每次登录过程中保持一致。
    }
    }
  • 返回json
    {
    "BaseResponse": {
        "Ret": 0,
        "ErrMsg": ""
    },
    "Count": 11,
    "ContactList": [{//微信首页的联系人,不是保存在通讯录中的联系人
        "Uin": 0,
        "UserName": "filehelper",
        "NickName": "文件传输助手",
        "HeadImgUrl": "/cgi-bin/mmwebwx-bin/webwxgeticon?seq=680769514&username=filehelper&skey=@crypt_8b4f09cc_a5871dc10130a48703b9afd5602152e4",
        "ContactFlag": 1,
        "MemberCount": 0,
        "MemberList": [],
        "RemarkName": "",
        "HideInputBarFlag": 0,
        "Sex": 0,
        "Signature": "",
        "VerifyFlag": 0,
        "OwnerUin": 0,
        "PYInitial": "WJCSZS",
        "PYQuanPin": "wenjianchuanshuzhushou",
        "RemarkPYInitial": "",
        "RemarkPYQuanPin": "",
        "StarFriend": 0,
        "AppAccountFlag": 0,
        "Statues": 0,
        "AttrStatus": 0,
        "Province": "",
        "City": "",
        "Alias": "",
        "SnsFlag": 0,
        "UniFriend": 0,
        "DisplayName": "",
        "ChatRoomId": 0,
        "KeyWord": "fil",
        "EncryChatRoomId": "",
        "IsOwner": 0
    }, 
        //......此处省略剩下的10个联系人信息
    ],
    "SyncKey": {//同步消息时用的syncKey,用于之后轮询消息的接口
        "Count": 4,
        "List": [
            {
                "Key": 1,
                "Val": 635705559
            },
            //...此处省略剩下的3条信息
        ]
    },
    "User": {//登录者的信息
        "Uin": xxx,
        "UserName": xxx,//微信随机码,每个联系人和群都有,每次登录由微信端随机分配
        "NickName": xxx,
        "HeadImgUrl": xxx,
        "RemarkName": "",
        "PYInitial": "",
        "PYQuanPin": "",
        "RemarkPYInitial": "",
        "RemarkPYQuanPin": "",
        "HideInputBarFlag": 0,
        "StarFriend": 0,
        "Sex": 1,
        "Signature": "这里是签名",
        "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
    }

    6、获取联系人列表

  • 说明:获取手机通讯录中的所有联系人(包括人、群、公众号等)
  • 请求方式:POST
  • 类型:JSON
  • 请求头:ContentType: application/json; charset=UTF-8
  • 地址https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact
  • get参数 参数 示例值 说明
    pass_ticket qg%2BL%2BfjNnoHyqYsL3xj0KoNi5nqchsInPWWSxDwqCJ8%3D 公参中的值
    skey @crypt_8b4f09cc_1b827f84b1535b6be801f00427499050 公参中的值
  • post参数json
    {
    BaseRequest: {
        Uin: 211722515,
        Sid: +urBrYI292xoIknf,
        Skey: @crypt_8b4f09cc_a5871dc10130a48703b9afd5602152e4,
        DeviceID: e545297464380306
        //上边的DeviceID是设备id(自行生成跟保存),每次登录过程中保持一致。
    }
    }
  • 返回json
    {
    "BaseResponse": {
        "Ret": 0,
        "ErrMsg": ""
    },
    "MemberCount": 334,
    "MemberList": [
        {
            "Uin": 0,
            "UserName": xxx,//微信随机码,潜规则:前面@为联系人,@@为群
            "NickName": "Urinx",//联系人的微信昵称
            "HeadImgUrl": xxx,
            "ContactFlag": 3,
            "MemberCount": 0,//如果是群,该字段表示成员数量
            "MemberList": [],//群成员列表
            "RemarkName": "",//备注名称,如果空则说明没有给他备注
            "HideInputBarFlag": 0,
            "Sex": 0,//性别,1为男,2为女
            "Signature": "你好,我们是地球三体组织。在这里,你将感受到不一样的思维模式,以及颠覆常规的世界观。而我们的目标,就是以三体人的智慧,引领人类未来科学技术500年。",//签名
            "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": "",//如果是群,该字段表示群的id,不同于微信随机码@@那个
            "IsOwner": 0
        },
        ...
    ],
    "Seq": 0
    }

    VerifyFlag == 0 是联系人,其他自行分析。

7、消息检查

  • 说明:同步消息检查。这里只做检查不做同步,如果检查出有新消息,再掉具体同步的接口。
  • 请求方式:GET
  • 地址https://webpush2.weixin.qq.com/cgi-bin/mmwebwx-bin/synccheck
  • get参数 参数 示例值 说明
    deviceid e545297464380306 公参中的值
    sid @crypt_8b4f09cc_1b827f84b1535b6be801f00427499050 公参中的值
    skey +FhlgkGS3wD/GKQw 公参中的值
    synckey 1_700722177|2_700724323|3_700724315|1000_1520925834 微信初始化后获取的4个key,这些key会随着每次获取最新消息(参见9)后的返回值更新,其目的在于每次同步消息后记录一个当前同步的状态。
    uin 211722515 公参中的值
    r 1648736166 时间戳
  • 返回:
    window.synccheck={retcode:"xxx",selector:"xxx"}
    retcode:
    0 正常
    -14 ticket错误
    1 传入参数错误
    1100 失败/登出微信
    1101 未检测到登录
    1102 cookie值无效
    1203 当前登录环境异常,为了安全起见请不要在web端进行登录
    1205 操作频繁
    selector:
    0 正常
    2 有新消息
    4 有人修改了自己的昵称或你修改了别人的备注
    6 存在删除或者新增的好友信息
    7 进入/离开聊天界面

8、获取最新消息

  • 说明:当同步检查接口显示有新消息时,调用该接口获取具体的新消息。此处的新消息为广义的,包括消息,修改群名,群内成员变化,加好友等。
  • 请求方式:POST
  • 类型:JSON
  • 请求头:ContentType: application/json; charset=UTF-8
  • 地址https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsync
  • get参数 参数 示例值 说明
    sid @crypt_8b4f09cc_1b827f84b1535b6be801f00427499050 公参中的值
    skey +FhlgkGS3wD/GKQw 公参中的值
    pass_ticket yp5RfCpb%2FsNVex0Uepn1BWXNCYCqTfqe8NOYzan%2B4Y4%3D 公参中的值
  • post参数json
    {
    "BaseRequest": {
        "Uin": 211722515,
        "Sid": "+FhlgkGS3wD/GKQw",
        "Skey": "@crypt_8b4f09cc_1b827f84b1535b6be801f00427499050",
        "DeviceID": "e304534670317808"
    },
    "SyncKey": {
        "Count": 4,
        "List": [{
            "Key": 1,
            "Val": 700722177
        }, {
            "Key": 2,
            "Val": 700724323
        }, {
            "Key": 3,
            "Val": 700724315
        }, {
            "Key": 1000,
            "Val": 1520925834
        }]
    },
     rr: -1648736166//时间戳取反
    }
  • 返回:主要有AddMsgList,ModContactList,DelContactList,新一轮消息同步的synckey
    {
    "BaseResponse": {
        "Ret": 0,
        "ErrMsg": ""
    },
    "AddMsgCount": 1, //新增信息
    "AddMsgList": [{
        "MsgId": "320984672637990367", //服务端返回的消息id,可用于撤回接口参数。如果是图片,该参数还可以作为调用微信获取图片接口的参数之一。
        "FromUserName": "@abf90232027117affa7f0c0df3d1bf20", //发消息的人
        "ToUserName": "@abf90232027117affa7f0c0df3d1bf20", //发给谁
        "MsgType": 51, //消息类型,1为文字,3为图片,34为语音...,具体请自行测试分析
        "Content": "",
        "Status": 3,
        "ImgStatus": 1,
        "CreateTime": 1520927383,
        "VoiceLength": 0,
        "PlayLength": 0,
        "FileName": "",
        "FileSize": "",
        "MediaId": "",
        "Url": "",
        "AppMsgType": 0,
        "StatusNotifyCode": 4,
        "ForwardFlag": 0,
        "AppInfo": {
            "AppID": "",
            "Type": 0
        },
        "HasProductId": 0,
        "Ticket": "",
        "ImgHeight": 0,
        "ImgWidth": 0,
        "SubMsgType": 0,
        "NewMsgId": 320984672637990367,
        "OriContent": "",
        "EncryFileName": ""
    }],
    "ModContactCount": 0, //联系人修改
    "ModContactList": [],
    "DelContactCount": 0, //联系人删除
    "DelContactList": [],
    "ModChatRoomMemberCount": 0, //群内成员变动
    "ModChatRoomMemberList": [],"ContinueFlag": 0,
    "SyncKey": { //新一轮消息更新用这些SyncKey
        "Count": 7,
        "List": [{
            "Key": 1,
            "Val": 700722177
        }, {
            "Key": 2,
            "Val": 700724325
        }, {
            "Key": 3,
            "Val": 700724315
        }, {
            "Key": 11,
            "Val": 700724093
        }, {
            "Key": 201,
            "Val": 1520927383
        }, {
            "Key": 1000,
            "Val": 1520925834
        }, {
            "Key": 1001,
            "Val": 1520917874
        }]
    },
    "SKey": "",
    "SyncCheckKey": { //新一轮消息同步用这些Key
        "Count": 7,
        "List": [{
            "Key": 1,
            "Val": 700722177
        }, {
            "Key": 2,
            "Val": 700724325
        }, {
            "Key": 3,
            "Val": 700724315
        }, {
            "Key": 11,
            "Val": 700724093
        }, {
            "Key": 201,
            "Val": 1520927383
        }, {
            "Key": 1000,
            "Val": 1520925834
        }, {
            "Key": 1001,
            "Val": 1520917874
        }]
    }
    }

9、发送消息

  • 说明:发送文本消息(包括表情),不能发送图片或文件。
  • 请求方式:POST
  • 类型:JSON
  • 请求头:ContentType: application/json; charset=UTF-8
  • 地址https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsg
  • get参数 参数 示例值 说明
    pass_ticket yp5RfCpb%2FsNVex0Uepn1BWXNCYCqTfqe8NOYzan%2B4Y4%3D 公参中的值
  • post参数json
    {
    "BaseRequest": {
        "Uin": 211722515,
        "Sid": "+FhlgkGS3wD/GKQw",
        "Skey": "@crypt_8b4f09cc_1b827f84b1535b6be801f00427499050",
        "DeviceID": "e107694022625701"
    },
    "Msg": {
        "Type": 1,
        "Content": "呵呵",
        "FromUserName": "@abf90232027117affa7f0c0df3d1bf20",
        "ToUserName": "filehelper",
        "LocalID": "15209344559450477", //时间戳左移4位随后补上4位随机数
        "ClientMsgId": "15209344559450477",
        //"MediaId": "" //如果是图片才传这个值
    },
    "Scene": 0
    }
  • 返回:
    {
    "BaseResponse": {
        "Ret": 0,
        "ErrMsg": ""
    },
    "MsgID": "7615282929538795099", //服务端返回的消息id,可用于撤回等接口的参数
    "LocalID": "15209344559450477" //本地的消息id,是你自己发请求时的参数
    }

10、获取消息图片

  • 说明:调用改接口显示消息里面的图片

  • 请求方式:GET

  • 地址https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetmsgimg

  • get参数 参数 示例值 说明
    MsgID 3176600141007621447 服务端返回的消息ID
    type slave 略缩图,留空加载原图
    skey @crypt_8b4f09cc_1b827f84b1535b6be801f00427499050 公参中的值
  • 返回:二维码的二进制流,浏览器打开会直接显示一张二维码图片

11、获取消息语音

  • 说明:调用改接口显示消息里面的语音音频

  • 请求方式:GET

  • 地址https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetvoice

  • get参数 参数 示例值 说明
    MsgID 3176600141007621447 服务端返回的消息ID
    skey @crypt_8b4f09cc_1b827f84b1535b6be801f00427499050 公参中的值
  • 返回:二维码的二进制流,浏览器打开会直接播放语音

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问