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