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参照)
UUIDの取得 | |
---|---|
https://login.weixin.qq.com/jslogin | |
GET | |
URLエンコード | |
appid | : w x782c26e4c19acffb 楽しい : new lang : zh_CN _ : Timestamp |
): window.QRLogin.code = 200; window.QRLogin.uuid = "xxx"
2. QR コードを表示します (メソッド showQrCode を参照)。
QRコードを表示 | |
---|---|
login.weixin.qq.com/qrcode/{uuid} | |
POST | |
t | : webwx _ : タイムスタンプ |
QR コードをスキャンしてログインします | |
---|---|
login.weixin.qq.com/cgi-bin/mmwebwx-bin/login | |
GET | |
tip | : 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を取得します(ログインメソッドを参照)
webwxnewloginpage | |
---|---|
wx2.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage | |
GET | |
チケット | : xxx u uid : xxx lang : zh_CN scan : xxx fun : new |
を取得しますskey
, wxsid
, wxuin
, pass_ticket
XML の 5。初期化 (メソッド wxInit を参照)
meth od | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
data | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
JSON | header | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
params | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Skey: xxx, | 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 } 这一步中获取 6. 开启微信状态通知(参考方法 wxStatusNotify)
返回数据(JSON): { "BaseResponse": { "Ret": 0, "ErrMsg": "" }, ... } 7. 获取联系人列表(参考方法 getContact)
返回数据(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)
返回数据(String): window.synccheck={retcode:"xxx",selector:"xxx"} retcode: 0 正常 1100 失败/登出微信 selector: 0 正常 2 新的消息 7 进入/离开聊天界面 9. 获取最新消息(参考方法 webwxsync)
返回数据(JSON): { 'BaseResponse': {'ErrMsg': '', 'Ret': 0}, 'SyncKey': { 'Count': 7, 'List': [ {'Val': 636214192, 'Key': 1}, ... ] }, 'ContinueFlag': 0, 'AddMsgCount': 1, 'AddMsgList': [ { 'FromUserName': '', 'PlayLength': 0, 'RecommendInfo': {...}, 'Content': "", 'StatusNotifyUserName': '', 'StatusNotifyCode': 5, 'Status': 3, 'VoiceLength': 0, 'ToUserName': '', 'ForwardFlag': 0, 'AppMsgType': 0, 'AppInfo': {'Type': 0, 'AppID': ''}, 'Url': '', 'ImgStatus': 1, 'MsgType': 51, 'ImgHeight': 0, 'MediaId': '', 'FileName': '', 'FileSize': '', ... }, ... ], 'ModChatRoomMemberCount': 0, 'ModContactList': [], 'DelContactList': [], 'ModChatRoomMemberList': [], 'DelContactCount': 0, ... } 10. 发送消息(参考方法 webwxsendmsg)
返回数据(JSON): { "BaseResponse": { "Ret": 0, "ErrMsg": "" }, ... } 更多资料: 【相关推荐】 1. 微信公众号源码下载 2. 阿狸子订单系统源码下载 |
以上がWeChatプロトコルの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ホットトピック









