【轉】【徹底開源】微信客戶端.NET版

【轉】【徹底開源】微信客戶端.NET版html

目錄git

說明github

前兩天比較閒,研究了一下web版微信。由於以前看過一篇博客講微信web協議的,後來嘗試分析了一下,半途中發現其實沒什麼意義,但又不想半途而廢,因此最後作出了一個這樣子的demo。功能比較少,跟官方客戶端功能差很少(其實要差一些:))。大概原理就是使用WebRequest請求數據,demo中代碼寫得比較亂,可是關鍵地方都有註釋。先看一下截圖:web

  

 

代碼已經上傳到github,有須要的能夠看一下:chrome

源碼下載json

 

功能瀏覽器

能作:服務器

  • 二維碼登陸;
  • 加載最近聯繫人;
  • 加載全部好友;
  • 聊天;
  • 查看好友信息。

不能作:微信

  • 不能收發複雜消息(實際上除了字符串以外都不能,表情我沒有解析,你若是發送[擁抱],別人仍是能收到正確的表情);
  • 不能看朋友圈;
  • 懶得寫了,其餘功能都不能。

 

原理步驟cookie

打開 wx.qq.com ,按F12,而後手機掃描二維碼登陸,一切過程都能看到:

過程大概以下:

  1. 訪問url獲取回話ID;
  2. 根據會話ID獲取二維碼;
  3. 顯示二維碼;
  4. 循環判斷二維碼是否已被掃描(若是已經掃描,是否已點擊「登陸」);
  5. 若是用戶點擊了手機上的「登陸」,服務器會返回一個特定的url,訪問該url,服務器會返回登陸相關的cookie(保存cookie到本地);
  6. 初始化微信(初始化的時候,會返回一部分最近聯繫人);
  7. 加載所有好友;
  8. 根據須要加載好友頭像等等;
  9. 循環判斷服務器上是否有數據更新(好比收到了別人的消息);
  10. 若是有更新,則同步數據;
  11. 返回第9步。

每步須要的具體url我就不詳說了,網上有。我代碼中也有(只是有點爛)。

 

一些參考

源碼中用到了一些開源代碼和一些工具:

  • Webkit.NET(用於聊天框、自帶的Webbrowser兼容不行);
  • json.net(解析服務器返回的json數據)
  • chrome(瀏覽器 按F12 你們都懂的)

注:登陸後一段時間,數據同步常常出現1205錯誤,致使接收不到別人發過來的消息,該錯誤暫時還未解決,下次找到緣由了再更新。

 

全部源碼均遵循MIT協議,開源有益,多謝點贊!

相關文章
相關標籤/搜索