検索
ホームページWeChat アプレットWeChatの開発WeChatプロトコルの詳しい説明

WeChat Web プロトコル分析 (WeChat Web バージョン wx2.qq.com)

1. ホームページを開き、ランダムな uuid を割り当てます。
2. uuid に基づいて QR コード画像を取得します。
3. WeChat クライアントで写真をスキャンし、クライアントでのログインを確認します。
4. ブラウザはインターフェースを呼び出し続けます。ログインが成功すると、ログインインターフェースを呼び出します。この時点で、連絡先リストを取得し、メッセージを送信できます
。次に、同期インターフェイスを継続的に呼び出します。 6. 同期インターフェースが戻った場合は、新しいメッセージを取得して、引き続き同期インターフェースを呼び出すことができます。
ソースコードアドレス: github.com/biezhi/wechat-robot

実行プロセス

       +--------------+     +---------------+   +---------------+
       |              |     |               |   |               |
       |   Get UUID   |     |  Get Contact  |   | Status Notify |
       |              |     |               |   |               |
       +-------+------+     +-------^-------+   +-------^-------+
               |                    |                   |
               |                    +-------+  +--------+
               |                            |  |
       +-------v------+               +-----+--+------+      +--------------+
       |              |               |               |      |              |
       |  Get QRCode  |               |  Weixin Init  +------>  Sync Check      Login     +---------------> New Login Page |     |  Weixin Sync  |
|      |              |               |                |     |               |
|      +------+-------+               +----------------+     +---------------+
|             |
|QRCode Scaned|
+-------------+

WebWechat API

1. UUIDの取得(getUUID参照)

API URLメソッドデータparamsappid Return data (
UUIDの取得
https://login.weixin.qq.com/jslogin
GET
URLエンコード
: w x782c26e4c19acffb 楽しい
: new lang
: zh_CN _
: Timestamp
String

):

window.QRLogin.code = 200; window.QRLogin.uuid = "xxx"
2. QR コードを表示します (メソッド showQrCode を参照)。

API urlmethodparamst
QRコードを表示
login.weixin.qq.com/qrcode/{uuid}
POST
: webwx
_ : タイムスタンプ
3. ログインを待機中 (メソッド waitForLogin を参照) これが WeChat 確認ログインです


APIurl methodparamstip 戻りデータ(文字列):
QR コードをスキャンしてログインします
login.weixin.qq.com/cgi-bin/mmwebwx-bin/login
GET
: 1: スキャンされていません 0 : スキャンしました uuid
: 取得したuuid _
: タイムスタンプ
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. ログインして

Cookie

を取得します(ログインメソッドを参照)

APIurlメソッドparamsチケットReturn data (
webwxnewloginpage
wx2.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage
GET
: xxx u uid
: xxx lang
: zh_CN scan
: xxx fun
: new
XML

):

<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>
このステップでは、

を取得しますskeywxsidwxuinpass_ticketXML の 5。初期化 (メソッド wxInit を参照)

APIwebwxiniturlwx2.qq.com/cgi-bin/mmwebwx-bin/webwxinitmeth od投稿dataheaderContent-Type: application/json; charset=UTF-8params{ Skey: xxx,
JSON
DeviceID: xxx,
}
}



返回数据(JSON):

{
    "BaseResponse": {
        "Ret": 0,
        "ErrMsg": ""
    },
    "Count": 11,
    "ContactList": [...],
    "SyncKey": {
        "Count": 4,
        "List": [
            {
                "Key": 1,
                "Val": 635705559
            },
            ...
        ]
    },
    "User": {
        "Uin": xxx,
        "UserName": xxx,
        "NickName": xxx,
        "HeadImgUrl": xxx,
        "RemarkName": "",
        "PYInitial": "",
        "PYQuanPin": "",
        "RemarkPYInitial": "",
        "RemarkPYQuanPin": "",
        "HideInputBarFlag": 0,
        "StarFriend": 0,
        "Sex": 1,
        "Signature": "Apt-get install B",
        "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
}

这一步中获取 SyncKeyUser 后面的消息监听用。

6. 开启微信状态通知(参考方法 wxStatusNotify)

API webwxstatusnotify
url wx2.qq.com/cgi-bin/mmwebwx-bin/webwxstatusnotify
method POST
data JSON
header Content-Type: application/json; charset=UTF-8
params
     BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx }, 
     Code: 3, 
     FromUserName: 自己的ID, 
     ToUserName: 自己的ID, 
     ClientMsgId: 时间戳 
}

返回数据(JSON):

{
    "BaseResponse": {
        "Ret": 0,
        "ErrMsg": ""
    },
    ...
}

7. 获取联系人列表(参考方法 getContact)

API webwxgetcontact
url wx2.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact
method POST
data JSON
header ContentType: application/json; charset=UTF-8
params
     BaseRequest: { 
         Uin: xxx, 
         Sid: xxx, 
         Skey: xxx, 
         DeviceID: xxx, 
     } 
}

返回数据(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,
            "Signature": "我是二蛋",
            "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": ""
        },
        ...
    ],
    "Seq": 0
}

8.消息检查(参考方法 syncCheck)

API synccheck
url webpush2.weixin.qq.com/cgi-bin/mmwebwx-bin/synccheck
method GET
data JSON
header ContentType: application/json; charset=UTF-8
params
     BaseRequest: { 
         Uin: xxx, 
         Sid: xxx, 
         Skey: xxx, 
         DeviceID: xxx, 
     } 
}

返回数据(String):

window.synccheck={retcode:"xxx",selector:"xxx"}

retcode:
    0 正常
    1100 失败/登出微信
selector:
    0 正常
    2 新的消息
    7 进入/离开聊天界面

9. 获取最新消息(参考方法 webwxsync)

API webwxsync
url wx2.qq.com/cgi-bin/mmwebwx-bin/webwxsync?sid=xxx&skey=xxx&pass_ticket=xxx
method POST
data JSON
header ContentType: application/json; charset=UTF-8
params
     BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx }, 
     SyncKey: xxx, 
     rr: 时间戳取反 
}

返回数据(JSON):

{
    &#39;BaseResponse&#39;: {&#39;ErrMsg&#39;: &#39;&#39;, &#39;Ret&#39;: 0},
    &#39;SyncKey&#39;: {
        &#39;Count&#39;: 7,
        &#39;List&#39;: [
            {&#39;Val&#39;: 636214192, &#39;Key&#39;: 1},
            ...
        ]
    },
    &#39;ContinueFlag&#39;: 0,
    &#39;AddMsgCount&#39;: 1,
    &#39;AddMsgList&#39;: [
        {
            &#39;FromUserName&#39;: &#39;&#39;,
            &#39;PlayLength&#39;: 0,
            &#39;RecommendInfo&#39;: {...},
            &#39;Content&#39;: "", 
            &#39;StatusNotifyUserName&#39;: &#39;&#39;,
            &#39;StatusNotifyCode&#39;: 5,
            &#39;Status&#39;: 3,
            &#39;VoiceLength&#39;: 0,
            &#39;ToUserName&#39;: &#39;&#39;,
            &#39;ForwardFlag&#39;: 0,
            &#39;AppMsgType&#39;: 0,
            &#39;AppInfo&#39;: {&#39;Type&#39;: 0, &#39;AppID&#39;: &#39;&#39;},
            &#39;Url&#39;: &#39;&#39;,
            &#39;ImgStatus&#39;: 1,
            &#39;MsgType&#39;: 51,
            &#39;ImgHeight&#39;: 0,
            &#39;MediaId&#39;: &#39;&#39;, 
            &#39;FileName&#39;: &#39;&#39;,
            &#39;FileSize&#39;: &#39;&#39;,
            ...
        },
        ...
    ],
    &#39;ModChatRoomMemberCount&#39;: 0,
    &#39;ModContactList&#39;: [],
    &#39;DelContactList&#39;: [],
    &#39;ModChatRoomMemberList&#39;: [],
    &#39;DelContactCount&#39;: 0,
    ...
}

10. 发送消息(参考方法 webwxsendmsg)

API webwxsendmsg
url wx2.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsg?pass_ticket=xxx
method POST
data JSON
header ContentType: application/json; charset=UTF-8
params
     BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx }, 
     Msg: { 
         Type: 1 文字消息, 
         Content: 要发送的消息, 
         FromUserName: 自己的ID, 
         ToUserName: 好友的ID, 
         LocalID: 与clientMsgId相同, 
         ClientMsgId: 时间戳左移4位随后补上4位随机数 
     } 
}

返回数据(JSON):

{
    "BaseResponse": {
        "Ret": 0,
        "ErrMsg": ""
    },
    ...
}

更多资料:
github.com/xiangzhai/qwx
github.com/Urinx/WeixinBot
www.07net01.com/2016/01/1201188.html
www.cnblogs.com/xiaozhi_5638/p/4923811.html

【相关推荐】

1. 微信公众号源码下载

2. 阿狸子订单系统源码下载

以上がWeChatプロトコルの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター