瀏覽器廠商持續收緊隱私保護,User-Agent 被逐步簡化與凍結,Client Hints 成為新的高熵指紋訊號。本文說明 UA Reduction、Client Hints 的原理、指紋一致性為何重要,以及多帳號環境管理如何讓 UA、CH 與系統參數保持自洽。
過去幾年,主流瀏覽器不約而同地收緊隱私策略:Safari 上線 ITP、Firefox 推出 Total Cookie Protection、Chrome 正式推進 User-Agent 凍結(UA Reduction)。很多人到現在還在「改個 UA」就覺得能偽裝裝置,卻不知道 UA 已經被大幅簡化、逐漸失去細節資訊——真正接棒成為裝置識別關鍵訊號的,是 Client Hints(CH)。
這篇文章不教任何「繞過偵測」的手段,只從技術原理出發,把三件事講清楚:UA 為什麼要凍結?Client Hints 到底是什麼、為什麼它是高熵指紋訊號?所謂「指紋一致性」為什麼才是關鍵?這能幫你理解現代瀏覽器環境管理(尤其在做多帳號隔離時)為什麼要把參數當成一個整體來配置,而不是零散地填幾個欄位。
一、UA 字串為什麼會「不夠用」?
很長一段時間裡,User-Agent 是網站識別瀏覽器和裝置的最主要依據——它會暴露瀏覽器品牌、版本、作業系統、裝置架構等資訊。但 UA 字串太長、太穩定,容易被拿來為使用者建立指紋,所以 Chrome 明確宣布要 逐步簡化 UA:只保留最基礎的大版本號,把更多「細節能力」遷移到新機制裡,這就是 Client Hints。
UA 凍結帶來的直接後果是:光偽造一個 UA,已經不夠可信。系統不再只相信 UA,而是會去看 UA 之外的那些欄位是否和 UA 對得上。最典型的「露餡」訊號就是參數互相矛盾,例如:
- UA 寫的是 macOS 14,但平台版本欄位卻是 macOS 13;
- UA 宣稱是行動裝置,但行動端標記仍是
?0; - 硬體架構顯示 arm64,但
navigator.hardwareConcurrency之類的值看起來像 x86。
這類矛盾,在裝置識別體系裡很容易被判斷為「這不像是一台真實裝置產生的資料」。理解這一點,就能明白為什麼「只改 UA」在 UA 凍結時代已經行不通了。
二、Client Hints 是什麼?為什麼說它是高熵指紋

Client Hints(客戶端提示,簡稱 CH)是瀏覽器在 HTTP 請求或 JS 環境中,按需求向伺服器提供的一組裝置能力資訊。它和 UA 最大的不同有兩點:
-
包含高熵欄位(High Entropy Values)。 所謂高熵,是指這些資訊組合起來具有很強的辨識度、不容易被猜到——例如具體的平台版本、完整的品牌與版本清單、裝置架構等。真實瀏覽器是「按需回傳」這些欄位,而不是一次全部給出。
-
CH 不會被單獨拿來判斷,而是與其他指紋協同檢查。 真實的裝置識別體系通常會一起查看:CH 與 UA 是否一致、CH 與傳輸層的指紋(例如 TLS 指紋 JA3/JA4)是否來自同一種瀏覽器、CH 與 JS 環境裡的
navigator.platform、並行數、裝置像素比(DPR)是否連貫,以及 CH 與作業系統平台特徵是否匹配。
所以這裡有一個很關鍵的概念:難的不是偽造某一個欄位,而是讓所有欄位像是出自同一台真實裝置。 單獨看某個欄位,幾乎都可以更改;但要讓品牌、平台版本、UA、DPR、記憶體、架構、TLS 指紋……全部自洽成一套「說得通」的裝置画像,才是真正困難的地方。這也是很多所謂「欄位填得很完整」的方案仍然一眼就顯得不自然的原因。
三、常見的指紋「露餡」錯誤有哪些?
明白了「一致性」才是關鍵,就容易看懂許多參數配置為什麼會出錯。常見錯誤包括:
- CH 與 UA 對不上(最常見):UA 寫著 macOS 14.1,CH 卻回傳一個實際不存在的平台版本;
- 行動 UA 但行動標記是
?0:真實行動裝置這裡通常應該是?1; - 完整版本清單推導錯誤:例如瀏覽器主版本是 120,完整版本特徵卻像舊的 115;
- DPR、記憶體等值與真實裝置矛盾:例如 Apple 裝置顯示異常偏低的像素比,或一台普通 Windows 電腦顯示只有 1GB 記憶體;
- 忽視瀏覽器本身的差異:例如給本來不支援某欄位的瀏覽器硬塞進這個欄位,或在某個核心上回傳該核心根本不會有的欄位。
這些在裝置識別體系裡都很顯眼,本質都是「沒有把環境當成一個自洽的整體來配置」。
四、那「正確的配置」到底是指什麼?
與其說是在「填欄位」,不如說是在 維護一套自洽的環境画像。通常需要做到以下幾點:
- CH 與 UA 綁定:依照瀏覽器核心和版本的 真實規則 推導出對應的一套 CH(品牌、平台、版本都要和 UA 對齊),而不是隨手拼一個值;
- 遵循高熵欄位的回傳策略:預設回傳低熵資訊,高熵欄位依真實瀏覽器的行為按需回傳,不回傳目前瀏覽器根本不支援的欄位;
- 讓 JS 屬性、HTTP Header 與系統特徵彼此一致:DPR 與螢幕解析度一致、記憶體大小與平台類型匹配、行動標記與 UA 一致、架構資訊與整個系統邏輯一致;
- 與傳輸層指紋聯動:TLS/JA3/JA4 這類特徵也應該和宣告的瀏覽器版本相匹配。
一句話總結:真正的難點是讓 CH、UA、JS 環境、系統特徵一起組成一個「自洽的瀏覽器行為画像」,而不是拼欄位的數量。
五、這跟做多帳號環境管理有什麼關係?
看到這裡,做跨境電商、社群投放或獨立站營運的人可能會問:這套技術原理,和「給不同業務帳號建立獨立瀏覽器環境」有什麼關係?關係就在於——環境管理的前提是每個環境自身都要自洽。
- 帳號和地區多的時候,與其每個環境都手動湊 UA、作業系統、解析度這些參數,不如讓工具依照你選定的系統與核心版本,自動產生一套彼此對齊的參數,減少「東改一個、西改一個,最後互相矛盾」的返工。
- 不同地區、不同平台的業務帳號,應該各自擁有 相互獨立且參數各自自洽的環境,避免所有帳號共用一套「模板化參數」,結果在裝置層面高度雷同,反而顯得不自然。
- 當你切換代理到不同地區時,如果環境裡的系統版本、裝置型號等特徵始終保持這套環境本身的連貫設定,會比「只換 IP、其他參數完全不變」更符合一台裝置真實使用時的規律。
這些正是多帳號瀏覽器環境管理工具要解決的「一致性」問題。PurpleMark(紫紋瀏覽器)在建立環境時,就提供作業系統、Chromium 核心版本、User-Agent、解析度、時區、語言、CPU/記憶體、Canvas、WebGL、TLS 等一組指紋與裝置參數的統一設定入口。你選定一個地區和帳號用途,就能依照一套方案產生環境,而不是每次登入時臨時拼參數。它真正管理的是「帳號、瀏覽器環境、網路配置」放在同一個工作區裡的 整體一致性 與可重複使用性,而不是讓你去研究怎麼騙過某一個偵測。
六、小結
UA 凍結標誌著瀏覽器指紋進入了新階段:決定裝置識別結果的,不再只是「有哪些欄位」,而是欄位之間是否自洽。 Client Hints 接棒 UA 成為高熵指紋訊號後,理解 CH 與 UA、系統特徵、傳輸指紋之間的聯動關係,比記住一堆欄位名稱更重要。
如果你只是維護幾個真實、合規的業務帳號,不必把精力放在對抗偵測上。更實際的做法,是使用 PurpleMark 這類環境管理工具,把每個帳號的地區、系統和瀏覽器參數配置得清楚、自洽、可重複使用,從源頭降低「環境參數前後矛盾」帶來的問題。
(提示:本文僅作瀏覽器指紋技術原理的科普。請始終在遵守各平台服務條款、使用真實合規帳號的前提下營運。)


