2
头图

摘要

微信官方是没有提供个人微信接口的,市面上的接口基本都是通过不正规的方式去实现的,例如Web协议微信HOOKiPad协议Android协议。这些所谓的协议,要么是抓包HTTP协议,要么是通过HOOK技术实现的给予内存数据劫持实现的。

接口技术描述
Web协议基于网页版微信HTTP接口实现的
微信HOOK基于电脑版微信的内存劫持
iPad协议基于iPad版微信逆向API
Android协议基于Android微信Xposed框架HOOK

Web协议

在这么多协议中,Web协议的实现比较经济,技术要求也极低,因为有很多的现成的库。在前几年,都有很多著名的Web微信协议的Python库,例如itchat、Wxpy、WeixinBot,都是可以直接用的。

但是,早在2017年开始,微信网页版就已经住逐渐开始停止登录,以为了保障你的账号安全为由引导你使用电脑版微信,因此这些库可以说是不可用了。

但是,现在有了新的方法,那就是可以登录网页版微信了,既然可以登录,那么就可以获得一些关键的参数值,就可以使用这些参数值去请求这个Web微信的API。

具体请阅读这篇文章即可让你微信登录网页版:https://segmentfault.com/a/1190000044931999

发送消息的示例

import requests
import json
import random
import time

def generate_device_id():
    return "e" + "".join(str(random.randint(0, 9)) for _ in range(15))

url = "https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsg"

headers = {
    "Content-Type": "application/json;charset=UTF-8",
    'Cookie': 'web微信的Cookie', # 自己去抓包获取(无需完整的,只需要 psrf_qqopenid 前这一段)
    "Host": "wx2.qq.com",
    "Origin": "https://wx2.qq.com",
    "Referer": "https://wx2.qq.com/?target=t",
    "client-version": "2.0.0"
}

data = {
    "BaseRequest": {
        "Uin": "自己去抓包获取", #(一般是固定的,重新登录后不变)
        "Sid": "自己去抓包获取", #(重新登录后会变)
        "Skey": "自己去抓包获取",#(重新登录后会变)
        "DeviceID": generate_device_id()
    },
    "Msg": {
        "Type": 1,  # 消息类型,1表示文本消息
        "Content": 'hahaha123456',  # 消息内容
        "FromUserName": "自己去抓包获取",  # 发送用户(重新登录后会变)
        "ToUserName": "自己去抓包获取",  # 接收用户(重新登录后会变)
        "LocalID": str(int(time.time() * 1000)),  # 使用当前时间戳生成唯一 ID(自动生成)
        "ClientMsgId": str(int(time.time() * 1000)) + str(random.random())[2:6]  # 使用当前时间戳生成唯一 ClientMsgId(自动生成)
    }
}

response = requests.post(url, headers=headers, data=json.dumps(data))

print(response.text)

关键参数

Cookie:
Uin
Sid
Skey
DeviceID
FromUserName
ToUserName
LocalID
ClientMsgId

如何获取这些参数?

首先,登录Web微信后,F12打开控制台,清空请求记录,微信发送一条消息出去,查看下面截图这个请求记录,就可以抓到这些参数值。

然后Cookie是无需使用完整的,只需要 wxopenid=; 之前这一段即可。

使用感受

经过一个月使用,安全稳定可靠,只要你的Web微信不掉线,那么就可以用了,可以将你的Web微信挂在Windows服务器上,我试过7天不掉线。

本文作者

TANKING


TANKING
4.8k 声望516 粉丝

热爱分享,热爱创作,热爱研究。