【轉】【徹底開源】微信客戶端.NET版html
目錄git
說明github
前兩天比較閒,研究了一下web版微信。由於以前看過一篇博客講微信web協議的,後來嘗試分析了一下,半途中發現其實沒什麼意義,但又不想半途而廢,因此最後作出了一個這樣子的demo。功能比較少,跟官方客戶端功能差很少(其實要差一些:))。大概原理就是使用WebRequest請求數據,demo中代碼寫得比較亂,可是關鍵地方都有註釋。先看一下截圖:web
代碼已經上傳到github,有須要的能夠看一下:chrome
源碼下載json
功能瀏覽器
能作:服務器
- 二維碼登陸;
- 加載最近聯繫人;
- 加載全部好友;
- 聊天;
- 查看好友信息。
不能作:微信
- 不能收發複雜消息(實際上除了字符串以外都不能,表情我沒有解析,你若是發送[擁抱],別人仍是能收到正確的表情);
- 不能看朋友圈;
- 懶得寫了,其餘功能都不能。
原理步驟cookie
打開 wx.qq.com ,按F12,而後手機掃描二維碼登陸,一切過程都能看到:
過程大概以下:
- 訪問url獲取回話ID;
- 根據會話ID獲取二維碼;
- 顯示二維碼;
- 循環判斷二維碼是否已被掃描(若是已經掃描,是否已點擊「登陸」);
- 若是用戶點擊了手機上的「登陸」,服務器會返回一個特定的url,訪問該url,服務器會返回登陸相關的cookie(保存cookie到本地);
- 初始化微信(初始化的時候,會返回一部分最近聯繫人);
- 加載所有好友;
- 根據須要加載好友頭像等等;
- 循環判斷服務器上是否有數據更新(好比收到了別人的消息);
- 若是有更新,則同步數據;
- 返回第9步。
每步須要的具體url我就不詳說了,網上有。我代碼中也有(只是有點爛)。
一些參考
源碼中用到了一些開源代碼和一些工具:
- Webkit.NET(用於聊天框、自帶的Webbrowser兼容不行);
- json.net(解析服務器返回的json數據)
- chrome(瀏覽器 按F12 你們都懂的)
注:登陸後一段時間,數據同步常常出現1205錯誤,致使接收不到別人發過來的消息,該錯誤暫時還未解決,下次找到緣由了再更新。
全部源碼均遵循MIT協議,開源有益,多謝點贊!