在群控、行銷科技、自動化測試等領域,批量模擬多台手機進行人為操作,早已不是什麼新鮮事。特別是在 Instagram、TikTok 這類平台進行養號或推廣行為時,腳本的行為真實性與差異化程度,直接決定帳號的生存時間與最終投報率
但讓 100 台手機的行為「不重樣」,背後可不是簡單的 Math.random() 能解決的
一般人的直覺解法:每個動作加個亂數不就好了? 真相:當操作流程一長,那坨亂數疊加出來的東西,不是「擬人」,是「隨機僵屍」,而且程式碼會變成沒人敢碰的義大利麵
今天這篇,我們來拆解一個更科學、更可維護的底層邏輯:用馬可夫鏈(Markov Chain)+ 碰撞分發,實現群控行為的高度擬人化與分散化
一般群控腳本怎麼做?為什麼它會爆炸?
大部分人寫自動化腳本,習慣用 「線性流程 + 細部參數隨機」 來模擬操作
邏輯長這樣:
- 每隔 3~8 秒滑動螢幕
- 每次滑動距離隨機 200~500 像素
- 20% 機率會點讚
- 5% 機率會留言
- 30% 機率點進主頁再回來
這種做法,短期有效,但有一個致命的場景邊界:當操作流程變長
想像一下,你要模擬一段完整的用戶行為:「滑動 → 點主頁 → 開啟某貼文 → 按讚 → 返回 → 搜尋關鍵字 → 追蹤帳號」
用線性流程寫會發生什麼事?
- 你要加一個新動作,可能得改好幾層巢狀判斷式
- 機率之間開始互相打架(你的 20% 點讚,是在「看貼文」之後的 20%,還是「滑到一半」的 20%?)
- 當控制的手機數量從 10 台變成 100 台、500 台,那個
if-else地獄會直接反噬你
核心盲點:用「死流程 + 亂數」試圖創造「活行為」,本質上就是拿線性思維去解非線性問題
什麼是馬可夫鏈?(用一句話講清楚)
馬可夫鏈(Markov Chain) 是一種統計模型,核心只有一句話:
下一步發生什麼,只取決於當前狀態,跟過去無關
這種「只看當下、不管過去」的特性,稱為無記憶性(Memoryless)
把這句話翻譯成人話:
- 你現在在滑 Instagram,下一步可能是:繼續滑、點進主頁、或離開 App
- 無論你 5 分鐘前看了誰的貼文、跟誰吵架,都不影響下一步的決策機率
- 這些「狀態到狀態之間的轉移機率」,就是馬可夫鏈的核心
這些轉移機率,可以整理成一張表,稱為馬可夫矩陣(Markov Matrix)
| 當前狀態 | 繼續滑動 | 點主頁 | 看貼文 | 返回首頁 |
|---|---|---|---|---|
| 滑動中 | 60% | 20% | 10% | 10% |
| 點主頁 | 30% | 20% | 40% | 10% |
| 看貼文 | 10% | 20% | 50% | 20% |
| 返回首頁 | 100% | 0% | 0% | 0% |
馬可夫鏈怎麼「跑」出一段擬人行為?(實戰演示)
假設一台手機從「滑動中」這個狀態開始,每一步都依照矩陣機率決定下一步,它可能會這樣跑:
-
當前狀態:滑動中 → 根據矩陣,60% 繼續滑、20% 點主頁、10% 看貼文、10% 返回 → 這次運氣抽到「點主頁」
-
當前狀態:點主頁 → 30% 滑動、20% 留在主頁、40% 看貼文、10% 返回 → 抽到「看貼文」
-
當前狀態:看貼文 → 10% 滑動、20% 回主頁、50% 繼續看下一篇、20% 返回 → 抽到「返回首頁」
-
當前狀態:返回首頁 → 這裡是終點,100% 結束
關鍵洞察:每一段行為路徑,都是「當下擲骰子擲出來的」,但背後的機率分佈,決定了它「看起來像個正常人」
100 台手機用同一張矩陣跑,每一台的路徑都會不同,但都會有邏輯,不會出現「滑到一半突然開始打字留言然後秒刪」這種非人類操作
主程式只做一件事:讀取馬可夫鏈,然後執行
當你用馬可夫鏈定義好整體行為模型後,主程式的角色會變得極度純粹
它不需要再管該死的流程控制,只需要循環做兩件事:
- 根據當前狀態,查矩陣,抽出下一步
- 呼叫對應的操作模組(滑動、點擊、輸入文字、等待)
架構上的本質改變:你把「流程控制」從程式碼裡剝離出來,放進「數據(矩陣)」裡
這意味著:新增動作、調整行為權重、A/B 測試不同行為模式,全部只要改矩陣,一行主程式都不用動
這是從「硬編碼流程」到「數據驅動行為」的降維升級
用 hash 碰撞實現「裝置層級的行為差異化」
馬可夫鏈解決了「單一行為路徑的隨機性」,但還有一個問題:100 台手機如果都用同一張矩陣,長期來看,行為分佈的「輪廓」還是太相似
這時我們引入第二層機制:用 hash 碰撞做分發
核心邏輯:
- 取得每台手機的硬體唯一值(設備 ID、MAC、UUID)
- 對其做哈希運算(SHA256)
- 根據 hash 值的特定幾位,分流到不同版本的馬可夫矩陣
舉例:
- hash 末位為
0–3→ 使用 A 類矩陣(保守型用戶:滑動多、互動少) - hash 末位為
4–7→ 使用 B 類矩陣(活躍型用戶:愛點讚、愛看主頁) - hash 末位為
8–f→ 使用 C 類矩陣(探索型用戶:愛搜尋、愛看留言)
這樣就能做到 「裝置層級的行為人設差異化」
即便 100 台手機同時開機啟動腳本,也會因為 hash 碰撞而走向完全不同的行為模式,這不是隨機,這是可控的分散
邊界補強:光有行為不夠,還要配上環境偽裝
腳本只控制「做什麼」,但平台風控系統看的遠不止這些
你還需要搭配:
- 模擬不同 IP、UA、GPS 位置、語言設定
- 偽造傳感器回報數值(加速度計、指南針、陀螺儀)
- 模擬輸入法延遲、觸控座標的微米級模糊化
行為模型是骨架,環境偽裝是皮膚,兩者合一,才能構成一個完整且難以識破的手機分身矩陣
分散、隨機、多樣,本身就是一種控制
從簡單的 setTimeout 滑動,到用馬可夫鏈控制 100 台手機各自走出不同路徑,再到 hash 碰撞做分流,這一系列的進化,本質上只做了一件事:
把「自動化」從「流程控制」拉高到「機率建模 + 系統工程」的層次
別再寫那條一摸就斷的死流程腳本了
當你真正理解馬可夫鏈的威力,你會發現: 分散、隨機、多樣,本身就是一種控制