tft每日頭條

 > 圖文

 > 企業微信的社群玩法

企業微信的社群玩法

圖文 更新时间:2024-06-27 15:50:03

編輯導語:企業微信在群發消息、批量添加好友等場景中,難以滿足企業訴求,所以,某些企業便對企業微信進行hook,以實現企業的批量處理需求。本文作者對hook的原理及方案進行了分析,一起來看一下吧。

企業微信的社群玩法(聊聊企業微信的hook)1

由于企業微信的限制策略,導緻在群發消息、批量添加好友等場景難以滿足企業訴求。在此背景下,某些企業便對企業微信進行hook,我們今天就來聊一下hook的原理及方案。

一、基本了解

首先我們要對企業微信(也是所有C/S架構)的數據傳輸有個基本了解:企業微信手機端、PC端按照一定規則将數據上報給服務端,同時也從服務端按照規則拉取最新數據到本地。企業微信通過開放的管理後台提供API接口給企業微信服務商,服務商通過接口和企業微信進行數據交互。

用發消息場景舉個例子:

  1. 企業微信賬号A,在手機客戶端上向客戶B(個人微信)發送一條消息,内容“我是周傑倫”
  2. 這條消息内容(連同發送者、接收者等信息)通過網絡上報到企業微信服務端
  3. 企業微信服務端做一系列動作,如判斷A和B是否是好友、B是否合法等等之後,将消息發送給客戶B
  4. 客戶B收到消息後,服務商通過API接口将這條消息拉取到自己的數據庫裡
  5. 同時,如果企業微信A在PC客戶端處于登陸狀态,企業微信服務端會将剛剛發送消息這件事告訴企業微信PC客戶端,在PC客戶端上也就能看到剛剛發送給客戶B的聊天記錄
二、如何hook

我們通常需要在設備上安裝一個客戶端軟件(我們稱其為小助手)用于hook企業微信的載體工具。

1)破解數據庫/内存:拿到想要的數據

安裝客戶端後,一般會在當前硬件設備硬盤上建立數據庫,用于存儲實時性比較強、數據量比較大的數據。通過破解數據庫我們便能拿到必要的數據,比如企業微信的外部聯系人列表即存儲在本地的sqllite數據庫裡。

2)破解函數

通過函數可以拿到想要的數據以及操縱企業微信(技術老師通常叫:截取和下發)。

如圖,在發消息場景下,我們通過破解點1,僞裝成企業微信用戶A調用“發送消息函數”原始數據,讓該函數幫助我們發送消息(下發)。

企業微信的社群玩法(聊聊企業微信的hook)2

(真實的發送消息場景,是一系列函數之間的調用,而不僅僅是一兩個函數)

三、hookid是什麼

hookid前面有定語,比如外部聯系人hookid、賬号hookid、群hookid、朋友圈hookid,在企業微信中,最常用的就是外部聯系人hookid。

外部聯系人hookid,即用于标定該外部聯系人的唯一id。假如2個企業微信賬号都和外部聯系人A是好友關系,那麼A在2個企業微信的好友列表裡,hookid是相同的。

hookid是什麼怎麼生成的?

hooid不是系統自動生成的,是從企業微信在本地的sqllite數據庫的外部聯系人表中獲取的某個字段。

企業微信的社群玩法(聊聊企業微信的hook)3

四、為什麼要綁定hookid?

還是拿群發舉例子,如果想要發消息,數據需要從scrm下發給企業微信,完成群發。

發消息需要指明消息的接收人是誰。但問題是,scrm的外部聯系人列表是從官方API接口獲取的,而我們最終隻能通過hook獲取的外部聯系人列表來完成群發,兩個列表的口徑并不一緻,這時就需要利用hookid來完成數據的綁定。

企業微信的社群玩法(聊聊企業微信的hook)4

五、如何綁定hookid

1)差異化同步流程

小助手客戶端從企業微信客戶端同步完成數據後,會通知小助手服務端。

觸發條件:登錄小助手客戶端,并從小助手中打開企業微信。

服務端接到小助手客戶端的同步完成通知,會從庫中獲取該企業微信賬戶已經綁定hookid的列表。

觸發條件:服務端獲得小助手同步完成的通知。

将已綁定的hookid下發給小助手。

觸發條件:拉取到完整的hookid列表。

下發方式:一次下發200個hookid,當所有hookid都給到小助手客戶端後,會告知小助手客戶端。

小助手将已綁定的hookid在本地數據庫打上标記。

觸發條件:被服務端告知,hookid已經同步完畢。

服務端向小助手客戶端下發指令:上報無hookid外部聯系人。

小助手上報服務端未綁定hookid的外部聯系人。

内容:外部聯系人頭像、昵稱、hookid。

方式:一次給200個外部聯系人信息,所有未綁定用戶都給到服務端後,會告知服務端。

服務端将官方數據和小助手客戶端上報數據,根據頭像和昵稱進行綁定。

2)增量同步邏輯

  • 服務端獲取未綁定hookid列表
  • 将未綁定hookid列表下發給小助手(頭像、昵稱等)
  • 小助手從自己的庫裡和服務端下發的列表進行比對,将比對結果相同的聯系人上報給服務端,上報完成後通知服務端
  • 觸發條件:比對完成後。如果沒有相同的,則?
  • 服務端将官方數據和小助手上報數據,根據頭像和昵稱進行綁定
  • 觸發條件:接受到小助手上報完成通知

3)備注綁定邏輯

  • 服務端為某個hookid生成一個備注内容,并下發給小助手
  • 小助手為用戶修改備注,修改後,企業微信内部會将新的備注上報給企業微信服務端
  • 數據同步模塊會定時從企業微信官方拉取到該用戶對應的備注内容
  • 服務端根據備注内容,找到該備注對應的hookid,進行綁定
  • 服務端通過官方接口,将備注還原

企業微信的社群玩法(聊聊企業微信的hook)5

最後,分享一張企業微信(hook)服務商的整圖:

企業微信的社群玩法(聊聊企業微信的hook)6

本文由 @Shanker 原創發布于人人都是産品經理,未經許可,禁止轉載

題圖來自 Unsplash,基于 CC0 協議

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved