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| +-------------+
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"
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. ログインして
Cookiewebwxnewloginpage | |
---|---|
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 サイトの他の関連記事を参照してください。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
function_exists() はカスタム関数を決定できません
Function test () {return true;} if (function_exists ('test')) {echo "テストは関数です";
から 2024-04-29 11:01:01
0
2
1986
Google Chromeのモバイル版を表示する方法
こんにちは、先生、Google Chrome をモバイル版に変更するにはどうすればよいですか?
から 2024-04-23 00:22:19
0
10
2148
親ウィンドウには出力がありません
document.onclick = function(){ window.opener.document.write('私は子ウィンドウの出力です');
から 2024-04-18 23:52:34
0
1
1706
関連トピック
詳細>
|