批量控制 100 台手機行為不重樣的科技底層邏輯

Field Note · DEV/0x

批量控制 100 台手機行為不重樣的科技底層邏輯

2026-02-15

100 台手機同時跑腳本,行為卻不能重複。別再用死流程加亂數硬幹了。用馬可夫鏈讓每台手機的操作都像真人,從滑動軌跡到停留時間都各自不同。這不是黑魔法,這是數學

在群控、行銷科技、自動化測試等領域,批量模擬多台手機進行人為操作,早已不是什麼新鮮事。特別是在 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%

馬可夫鏈怎麼「跑」出一段擬人行為?(實戰演示)

假設一台手機從「滑動中」這個狀態開始,每一步都依照矩陣機率決定下一步,它可能會這樣跑:

  1. 當前狀態:滑動中 → 根據矩陣,60% 繼續滑、20% 點主頁、10% 看貼文、10% 返回 → 這次運氣抽到「點主頁」

  2. 當前狀態:點主頁 → 30% 滑動、20% 留在主頁、40% 看貼文、10% 返回 → 抽到「看貼文」

  3. 當前狀態:看貼文 → 10% 滑動、20% 回主頁、50% 繼續看下一篇、20% 返回 → 抽到「返回首頁」

  4. 當前狀態:返回首頁 → 這裡是終點,100% 結束

關鍵洞察:每一段行為路徑,都是「當下擲骰子擲出來的」,但背後的機率分佈,決定了它「看起來像個正常人」

100 台手機用同一張矩陣跑,每一台的路徑都會不同,但都會有邏輯,不會出現「滑到一半突然開始打字留言然後秒刪」這種非人類操作

主程式只做一件事:讀取馬可夫鏈,然後執行

當你用馬可夫鏈定義好整體行為模型後,主程式的角色會變得極度純粹

它不需要再管該死的流程控制,只需要循環做兩件事:

  1. 根據當前狀態,查矩陣,抽出下一步
  2. 呼叫對應的操作模組(滑動、點擊、輸入文字、等待)

架構上的本質改變:你把「流程控制」從程式碼裡剝離出來,放進「數據(矩陣)」裡

這意味著:新增動作、調整行為權重、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 碰撞做分流,這一系列的進化,本質上只做了一件事:

把「自動化」從「流程控制」拉高到「機率建模 + 系統工程」的層次

別再寫那條一摸就斷的死流程腳本了

當你真正理解馬可夫鏈的威力,你會發現: 分散、隨機、多樣,本身就是一種控制