Stories

Detail Return Return

利用Web微信(網頁版微信)接口實現個人微信API發送消息 - Stories Detail

摘要

微信官方是沒有提供個人微信接口的,市面上的接口基本都是通過不正規的方式去實現的,例如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

user avatar u_17400586 Avatar jilodream Avatar shuirong1997 Avatar xiaolei_599661330c0cb Avatar zero_dev Avatar haixiudezhusun Avatar autohometech Avatar esunr Avatar happy2332333 Avatar dengzhanyong Avatar dyzs Avatar soujer Avatar
Favorites 34 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.