摘要
微信官方是没有提供个人微信接口的,市面上的接口基本都是通过不正规的方式去实现的,例如Web协议
、微信HOOK
、iPad协议
、Android协议
。这些所谓的协议,要么是抓包HTTP协议,要么是通过HOOK技术实现的给予内存数据劫持实现的。
接口技术 | 描述 |
---|---|
Web协议 | 基于网页版微信HTTP接口实现的 |
微信HOOK | 基于电脑版微信的内存劫持 |
iPad协议 | 基于iPad版微信逆向API |
Android协议 | 基于Android微信Xposed框架HOOK |
Web协议
在这么多协议中,Web协议的实现比较经济,技术要求也极低,因为有很多的现成的库。在前几年,都有很多著名的Web微信协议的Python库,例如itchat、Wxpy、WeixinBot,都是可以直接用的。
但是,早在2017年开始,微信网页版就已经住逐渐开始停止登录,以为了保障你的账号安全为由引导你使用电脑版微信,因此这些库可以说是不可用了。
但是,现在有了新的方法,那就是可以登录网页版微信了,既然可以登录,那么就可以获得一些关键的参数值,就可以使用这些参数值去请求这个Web微信的API。
发送消息的示例
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微信不掉线,那么就可以用了
© 版权声明
本站所有资源均为互联网收集或用户投稿,仅供研究学习,切勿商用以及违法使用。如若本站内容侵犯了您的权益,请及时联系我们予以删除!
THE END
暂无评论内容