WeChatプロトコルの詳しい説明

Y2J
リリース: 2017-05-06 10:27:26
オリジナル
16832 人が閲覧しました

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  <----+
       |              |               |               |      |              |    |
       +-------+------+               +-------^-------+      +-------+------+    |
               |                              |                      |           |
               |                              |                      +-----------+
               |                              |                      |
       +-------v------+               +-------+--------+     +-------v-------+
       |              | Confirm Login |                |     |               |
+------>    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

):

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

):

このステップでは、

を取得しますskey, wxsid, wxuin, pass_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
}
ログイン後にコピー

这一步中获取 SyncKey, User 后面的消息监听用。

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

APIwebwxstatusnotify
urlwx2.qq.com/cgi-bin/mmwebwx-bin/webwxstatusnotify
methodPOST
dataJSON
headerContent-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)

APIwebwxgetcontact
urlwx2.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact
methodPOST
dataJSON
headerContentType: 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)

APIsynccheck
urlwebpush2.weixin.qq.com/cgi-bin/mmwebwx-bin/synccheck
methodGET
dataJSON
headerContentType: 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)

APIwebwxsync
urlwx2.qq.com/cgi-bin/mmwebwx-bin/webwxsync?sid=xxx&skey=xxx&pass_ticket=xxx
methodPOST
dataJSON
headerContentType: 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)

APIwebwxsendmsg
urlwx2.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsg?pass_ticket=xxx
methodPOST
dataJSON
headerContentType: 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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート