字體指紋是甚麼?網站如何透過字體列表識別瀏覽器環境
環境和代理換了一批又一批,頁面排版仍有些微出入:同一個網站,這台環境的按鈕文字比那台闊兩個像素。排版差異的來源之一是字體:每部機器裝了甚麼字體,網頁一測就大致有數,字體列表由此成為瀏覽器指紋的一類參數。本文講三件事:網站怎樣測字體、檢測結果可信到甚麼程度、字體列表三檔(真實/隨機/自訂)分別適合甚麼情況。字體在整體指紋中的位置,MostMate 的指紋設定將它列為基礎參數之一,產品全貌見MostMate 是甚麼。
甚麼是字體指紋:網站在猜你裝了哪些字體
字體指紋的做法,是網站用一組測試推斷「本機能否顯示某個字體」,過程中不會把你的字體檔案打包上載。作業系統出廠自帶一批字體,用戶和軟件再往裏加:裝 Office 會多出一批,中文版 Windows 還自帶宋體和微軟雅黑。兩部機器的字體集合多半不同,這份差異就是資訊。EFF 在 2010 年的追蹤研究中已把字體列入可識別參數,此後這類檢測一直存在於主流網站。
它與其他指紋參數的分別在於變化頻率:Canvas、WebGL 由硬件和渲染引擎決定,通常幾個月才變一次;字體列表跟着軟件安裝走,裝一個新辦公軟件、刪一個字體檔案,列表就會變。變得快的參數,露餡也快。一次軟件安裝就足以令列表偏離原本的模樣。
網站怎樣測字體:三種方法,測的都是「有沒有」
網站無法直接讀取系統字體清單,只能間接推斷,常見方法有三種:
- 闊度差分法。頁面裏放一段固定文字,先用後備字體(如 monospace)量一次闊度,再指定目標字體量一次。兩次闊度相同,即目標字體不存在;闊度不同,即它存在。檢測腳本把上百個常見字體名輪一遍,就能拼出一份「存在/缺失」名單。
- Canvas 渲染對比。用 Canvas 把同一段文字以不同字體繪畫出來比較像素差異,順帶把渲染引擎的差異也帶了出來。
- Font Loading API。現代瀏覽器提供 document.fonts.check('12px "Segoe UI"') 這類介面,直接判斷某個字體是否可用,比量闊度省事。

三種方法測的都是「這個字體名在本機能否使用」,測不到字體檔案本身;實際檢測常混合使用,闊度差分做主力、Canvas 做交叉驗證。介面細節見 MDN 的 Document.fonts 文件,完整測試字體名單與判定邏輯可看 FingerprintJS 的字體檢測源碼。
檢測結果先天殘缺:你拿到的不是完整清單
這一節先糾正一個常見理解偏差。網站測不到你裝的全部字體,只能測它名單內的那部分。檢測結果實際是「常見字體名單 ∩ 你的本機」的交集。
後果有兩個。其一:兩部字體集合不同的機器,可能得到相同結果:甲機裝了字體 A 和 B,乙機裝了 A 和 C,檢測站只測 A 和 D,兩部都報「A 有、D 沒有」,雜湊值一樣。字體指紋相同不能反推設備相同,它只證明在測試名單範圍內表現一致。
其二:名單以外的部分完全隱形。一部裝了 300 個字體的設計工作站,和一部只裝了基本系統的機器,若測試名單只涵蓋 150 個常見字體,多出來的 150 個不會被看到。
對多帳號營運來說,殘缺的檢測結果是雙向的:單憑字體定不了身份,但風控會把字體和別的訊號交叉驗證,列表一旦與作業系統、語言設定對不上,就成了顯眼的異常。檢測工具顯示的字體數和雜湊值,按「同環境穩定、跨環境不同」來解讀即可,不必追求某個具體數值。
哪些因素在塑造你的字體列表
字體集合由四層東西疊加而成,每層都可能令兩部「看似一樣」的機器露出差異:
- 作業系統與版本。Windows、macOS、Linux 出廠字體集不同;同為 Windows,10 和 11 也有出入。這是字體列表與 UA 聲明的平台能互相印證的基礎。
- 系統語言與地區。中文版 Windows 自帶宋體、微軟雅黑,多數歐美機器上沒有;日文、韓文系統同理。字體列表往往搶先一步暴露環境的真實地區背景。
- 應用軟件綑綁。Office、Adobe、WPS 都會把自家字體塞進系統,做設計的機器和只跑瀏覽器的機器,字體集合差距很大。
- 瀏覽器引擎的後備規則。同一個字體名,Chromium 和 Firefox 的後備選擇不同,量出來的闊度也不同;環境內核版本變了,細節結果可能跟着變。

四層疊加解釋了一個常見現象:IP、時區、語言都換妥的環境,字體列表還帶着「老家」痕迹:聲稱英語美國環境,字體裏卻躺着微軟雅黑。交叉驗證時,這類錯位比單一參數異常更能說明問題。
一致性怎樣判斷:三條準則與三步自測
放進環境管理裏,字體參數要過三條準則:
- 單環境穩定。同一環境反覆檢測,字體數和雜湊值保持不變;環境使用期間別隨手裝軟件、刪字體。
- 環境間互異。聲稱來自不同地區的環境,字體列表應有可見差別;「美國人」和「德國人」兩個環境報出完全相同的字體雜湊,屬於可疑訊號。
- 與聲明資訊對得上。Windows 環境出現 macOS 獨有字體、英語環境帶一整排中文字體,都是顯眼的錯位。隨機化參數的風險在為何指紋隨機化反而危險一文有專門討論,字體是這個邏輯裏最典型的一項。隨機拼出來的字體組合在真實世界幾乎不存在。
三步自測:在 BrowserScan 或 Iphey 打開檢測結果頁,找到字體(Fonts)一項記下數值;同一環境重新整理兩三次確認穩定;開第二個環境跑同樣檢測,對比差異是否符合各自的人設。

MostMate 字體列表三檔怎樣選
MostMate 的指紋設定裏,字體列表提供真實、隨機、自訂三檔,對應三種使用狀態:
- 真實:環境直接使用宿主機當前的字體列表,檢測結果與手動打開瀏覽器一致。適合宿主機配置乾淨、人設與宿主系統地區一致的場合,例如本機是英文版 Windows、做的正是美國環境。
- 隨機:由環境生成一份字體組合,前提是隨機演算法按作業系統和語言的範圍來拼,集合在該人設的合理範圍內。適合批量建環境、不必逐一核對字體細節的日常鋪量。
- 自訂:手動剔選字體列表,適合目標平台風控嚴格、或人設與宿主機差異較大的環境,按人設補齊對應系統的字體集,配置時對照上一節三條準則逐項核對。
三檔入口都在環境建立表單的指紋設定區,配置後在指紋預覽面板的「字體列表」欄位確認當前值,再用檢測站複測一次。完整配置流程見MostMate 新手怎樣開始。
結語
字體指紋的本質,是網站用有限的測試名單推斷本機字體集合:測不到完整清單,卻足以在交叉驗證時暴露錯位。管理上抓三件事:單環境穩定、環境之間拉開差異、字體列表與聲稱的系統地區對得上。想由零開始跑通一套環境,可先下載 MostMate;指紋各項的一致性邏輯,多數能在MostMate 四大設計原則一文找到對應說明。
FAQ
字體指紋能單獨識別一部設備嗎?
不能。檢測結果受測試名單限制,兩部字體不同的機器可能得到相同結果。風控通常把字體與 UA、Canvas、語言等參數放在一起交叉驗證,字體單獨不構成身份依據。
不同瀏覽器的字體指紋會一樣嗎?
字體集合相同時大方向一致,但不同引擎的後備規則和渲染細節不同,闊度數值會有差別。同一部機器上 Chrome 和 Firefox 的檢測結果常有細節差異,這是引擎差異。
裝的字體越多越容易被識別嗎?
多出來的字體只有落入檢測名單才被看到。數量本身影響有限,稀有字體是例外,小眾設計字體一旦被測到,會令這份列表在統計上顯得少見。
清除 Cookie 能清掉字體指紋嗎?
不能。字體列表來自本機安裝情況,不屬於網站儲存的資料,清 Cookie、清快取對它沒有影響;要改變它,需在環境層面更換字體配置。
MOSTMATE
安全管理多帳戶,輕鬆簡單
從首個帳戶開始,利用 MostMate 建立更安全、更智能、更高效的多帳戶營運方式。
- 設定檔各自獨立,身分保持一致。
- AI 自動化 · 帳戶健康 · 團隊營運



