過去十餘年間,Cookie一直是網站追蹤使用者的主要手段。然而,隨著隱私意識的覺醒與法規的日趨嚴格,使用者開始學會定期清除Cookie,瀏覽器也紛紛推出阻擋第三方Cookie的功能。在這樣的背景下,一種更為隱蔽、更難以防範的追蹤技術應運而生,那就是瀏覽器指紋(Browser Fingerprinting)。與Cookie不同,瀏覽器指紋不需要在使用者的設備上儲存任何資料,它透過收集瀏覽器與設備的各種特徵,如同採集一個人的生物特徵一般,建立起獨一無二的數位身分檔案。這種技術的存在,讓許多人以為只要不接受Cookie、使用無痕模式就能保護隱私的想法,變得不再可靠。
瀏覽器指紋技術如同一把雙面刃。對於廣告商與數據分析業者而言,它是突破隱私保護機制的利器,能夠在使用者毫不知情的情況下進行跨站追蹤與行為分析。但對於資訊安全從業人員來說,這項技術同樣具有正面價值,它可以用於偵測帳號盜用、識別可疑登入行為、進行數位鑑識調查,甚至作為多因素驗證的輔助手段。因此,無論是關心個人隱私的一般使用者,還是負責企業資安的專業人員,都有必要深入了解這項技術的運作原理。
何謂瀏覽器指紋
首先,說明什麼是「瀏覽器指紋」。
核心概念
要理解瀏覽器指紋,可以用一個生活中的例子來類比。想像你經常光顧一間秘密俱樂部,這間俱樂部不要求出示會員卡或身分證,好比傳統的Cookie機制,因為這些證件易偽造、可丟棄,也可能被別人使用。相反地,俱樂部的門衛會仔細觀察你的一切細節,你的螢幕解析度就像你穿的鞋子尺寸和品牌,語言設定反映了你說話的口音和語言習慣,安裝的字型和外掛程式如同你攜帶的特定配件和物品,Canvas和WebGL渲染結果如同你走路的姿勢和步伐,硬體性能對應你的身高和體型,而瀏覽器偏好設定則顯示你慣用左手還是右手,這就是瀏覽器指紋的運作方式。
網站不再依賴用戶主動接受的Cookie,而是默默地觀察和記錄用戶的數位「生物特徵」,從而建立一個幾乎不可能被偽裝的身分檔案。
運作機制
從技術角度來說,瀏覽器指紋是用於識別網站使用者終端設備的資訊集合,其運作機制可以分解為「資料收集」、「特徵組合」、「指紋儲存」以及「持續追蹤」等四個階段,如表1所示。
| 階段 | 名稱 | 描述 |
|---|---|---|
| 1 | 資料收集 | 當存取一個網站時,遠端伺服器會透過各種方式收集關於使 用者的瀏覽器、作業系統、硬體設備的獨特屬性(稱之為 「特徵點」)。這個過程通常是在背景自動進行,不需要經 過使用者同意或知情 |
| 2 | 特徵組合 | 網站將收集到的多個特徵點組合在一起,形成一個獨特的 「指紋」。就像現實生活中沒有兩個人的指紋完全相同一 樣,幾乎沒有兩台設備的數位指紋會完全一致 |
| 3 | 指紋儲存 | 網站或第三方追蹤公司將這個指紋儲存在他們的伺服器上, 而不是使用者的電腦上,這就是為什麼清除瀏覽器資料也無 法消除這種追蹤 |
| 4 | 持續追蹤 | 當再次存取同一個網站(或使用同一個追蹤服務的不同網 站)時,網站會再次收集使用者的指紋,並與資料庫中的紀 錄比對。如果匹配度夠高,網站就能確認是同一位使用者 |
何謂熵值
在瀏覽器指紋技術中,有一個關鍵概念叫做「熵值」(Entropy Value)。這是一個來自資訊理論的概念,用來衡量某個特徵的獨特性和資訊量。熵值越高,代表這個特徵越罕見、越獨特,越容易識別使用者。舉例來說,低熵值特徵如使用「Windows作業系統」,因為全球有數不清的人皆使用Windows作業系統,這個資訊的識別能力很弱。
中熵值特徵像是「螢幕解析度為2,560×1,440」,這比1,920×1,080少見,但仍有不少用戶使用。而高熵值特徵則如「安裝了25種特殊設計字型」,這個組合極為罕見,識別能力很強。
除此之外,像是「Canvas指紋」通常具有非常高的熵值,因為它反映了作業系統、瀏覽器、GPU驅動程式、字型渲染引擎等多個因素的組合,幾乎每台設備都會產生獨特的結果。只須結合5至10個高熵值特徵,就足以在數百萬使用者中唯一識別出一個人,這就是為什麼瀏覽器指紋如此強大且難以逃避。
資料收集方式
瀏覽器指紋的資料收集可以分為兩大類型,分別為被動收集(Passive Collection)和主動探測(Active Probing):
‧被動收集:這類資訊是瀏覽器在正常運作時自動發送給網站的,不需要任何特殊的腳本或程式碼。主要包括User Agent字串,每當瀏覽器請求一個網頁時,都會自動告訴伺服器「我是Chrome 120版本,運行在Windows 11上」這類資訊。除此之外,還有IP位址,這是網路連線的基本標頭(Header)內容,伺服器自然會看到。HTTP請求標頭也屬於這一類,包含使用者接受的語言、偏好的資料格式、支援的壓縮方式等資訊。
‧主動探測:這是更具侵入性的收集方式,網站會在使用者的瀏覽器中執行JavaScript或其他腳本,主動測試各種功能和能力。例如測試Canvas繪圖,要求使用者的瀏覽器繪製一張隱形圖片,然後讀取結果。或是查詢已安裝的字型,透過嘗試渲染各種字型來檢測哪些字型可用。有時會測試硬體性能,執行計算密集的任務來推測CPU性能。
| 特徵類型 | 主要內容 | 熵值等級 |
|---|---|---|
| User Agent | 瀏覽器版本、作業系統、系統架構、渲染引擎等 | 低-中 |
| 外掛程式列表 | 已安裝的瀏覽器外掛程式 | 中 |
| 字型列表 | 系統字型、Offci e字型、特殊語言字型、個人字型 | 高 |
| Canvas指紋 | 圖形渲染結果的像素級差異 | 極高 |
| WebGL指紋 | 3D渲染能力、GPU資訊、著色器行為 | 極高 |
| Audio指紋 | 音訊處理系統的數值運算差異 | 高 |
| 時區與語言 | 時區設定、偏好語言、語言包 | 低 |
| 隱私設定 | Cookie啟用狀態、Do Not Track、Storage權限 | 低 |
| 媒體編解碼器 | 支援的音訊∕視訊格式 | 中 |

指紋的組成
瀏覽器指紋就像一個人的DNA,由許多不同的「基因片段」(特徵點)組成。這些特徵點可以分為三大類:軟體特徵點、硬體特徵點以及網路特徵點。
軟體特徵點
軟體特徵點主要反映了使用者的瀏覽器配置、安裝的軟體,以及系統偏好設定。表2列出主要的軟體特徵點及簡要說明,同時挑出幾項較為重要的特徵做詳細說明。
User Agent
首先是User Agent,它是最基本也最容易取得的指紋特徵。每當瀏覽器向網站請求資料時,在請求標頭中會加入如圖1所示的資訊。這串看似密碼的文字實際上包含豐富的資訊,包括作業系統類型版本為10.0、系統架構為64位元、瀏覽器類型為Chrome和版本為142.0.0.0等資訊。在行動裝置上,User Agent甚至會包含手機型號,例如Mozilla/5.0 (iPhone;CPU iPhone OS 16_0 like Mac OS X)AppleWebKit/605.1.15等。雖然User Agent本身的熵值不算特別高,因為很多人使用相同的瀏覽器版本,但它提供了重要的基礎資訊,可與其他特徵點結合使用。
字型列表
已安裝的字型列表是一個非常強大的指紋特徵。使用者的電腦上安裝了哪些字型,很大程度上反映了安裝哪些軟體。基本系統字型如Arial、Times New Roman等所有Windows用戶都有,Office套裝字型如Calibri、Cambria等會在安裝Microsoft Office後增加,特殊語言字型如中文、日文、韓文字型各有特色,而個人下載的字型則讓設計師或特殊需求者可能安裝罕見字型。網站可以透過多種方式檢測字型:已過時的Flash方法利用Flash的getTextExtent功能,CSS方法嘗試用不同字型渲染文字並測量結果的寬度和高度變化,Canvas方法則在Canvas上用各種字型繪製文字並觀察渲染結果。假設你是一位平面設計師,安裝了100多種特殊字型,這個獨特的字型組合就成為一個極高熵值的識別特徵,幾乎可以單獨識別出來。
Canvas指紋
Canvas指紋被認為是目前最有效和最廣泛採用的瀏覽器指紋技術。它的原理相當巧妙:網站要求使用者的瀏覽器在一個隱藏的Canvas元素上繪製特定的圖形和文字。這個繪製過程會受到多個因素影響,包括作業系統的圖形渲染引擎、瀏覽器的渲染實作方式、GPU的型號和驅動程式版本、字型的渲染引擎、顏色管理配置,以及抗鋸齒設定。網站讀取Canvas的像素資料後,即使畫的是同一張圖,不同設備產生的像素值也會有細微差異。最後將這些像素資料轉換成一個Hash值作為獨特的指紋。
WebGL指紋
WebGL指紋與Canvas類似,但使用的是3D圖形API。它的獨特之處在於利用WebGL API渲染3D場景,讀取GPU的詳細資訊,如型號、製造商、驅動版本等,測試支援的OpenGL擴充功能,以及檢查著色器(Shader)的編譯行為。其優勢在於直接暴露GPU資訊,識別度極高。即使在同一台電腦上使用不同瀏覽器,WebGL指紋也高度一致。
硬體特徵點
硬體特徵點反映了使用者的設備物理規格,這些特徵通常非常穩定,不會經常變化,在表3中列出主要的硬體特徵點:
螢幕刷新率
螢幕刷新率是一個有效的識別特徵。現代遊戲玩家和專業用戶會使用高刷新率螢幕:60Hz是標準配置,120Hz或144Hz是遊戲玩家的選擇,而240Hz或更高,則是電競選手的需求。網站可以透過requestAnimationFrame方法測量畫面更新的時間間隔,推算出使用者的螢幕刷新率,這是一個相對較新但很有效的指紋特徵。
CPU性能
雖然JavaScript無法直接查詢CPU型號,但可以透過間接方式推測。第一種方法是Web Workers基準測試:同時執行多個計算密集的Web Workers,觀察哪些可以並行執行,推測CPU核心數,甚至判斷是否啟用超執行緒。第二種方法是計算性能測試:執行特定的數學運算,測量完成時間,根據性能曲線推測CPU等級。例如,一台老舊的雙核心筆電和一台最新的16核心工作站,在性能測試中會表現出截然不同的特徵。
| 特徵類型 | 主要內容 | 熵值等級 |
|---|---|---|
| 螢幕解析度 | 920×1,080、2,560×1,440、3,840×2,160等 | 中 |
| 色深 | 16位元、24位元、30位元 | 低 |
| 螢幕刷新率 | 60Hz、120Hz、144Hz、240Hz | 中-高 |
| CPU核心數 | 2核心、4核心、8核心、16核心等 | 中 |
| CPU性能 | 透過計算基準測試推測 | 高 |
| GPU型號 | NVIDIA、AMD、Intel顯示卡型號 | 極高 |
| 顯示卡記憶體 | 4GB、8GB、16GB、24GB | 中-高 |
| GPU驅動版本 | 驅動程式更新狀態 | 高 |
| 電池資訊 | 容量、電量、充電狀態 | 中-高 |
| 動作感測器 | 陀螺儀、加速度計、磁力計的校準差異 | 高 |
| 攝影機∕麥克風 | 設備數量、型號、特性 | 中-高 |
| 觸控功能 | 支援狀態、觸控點數、精度 | 低-中 |
GPU性能
除了前面提到的WebGL指紋,GPU本身的資訊也極具識別價值。包括GPU型號,例如NVIDIA GeForce RTX 4090與Intel UHD Graphics的差異;顯示卡記憶體的容量,如8GB、16GB、24GB等;驅動程式版本,經常更新的用戶和從不更新的用戶會有差異;以及支援的OpenGL/DirectX版本。遊戲玩家通常擁有獨立顯示卡,而一般辦公用戶使用整合顯示卡,這種差異本身就是一個識別特徵。
感測器與進階API
現代設備配備了大量感測器,每一個都可能洩露識別資訊。Battery API(電池API)可以顯示電池容量、當前電量百分比、充電狀態以及預估剩餘時間。研究發現,電池電量的精確數值(例如
67.43%)可以作為短期追蹤的唯一識別符。Motion Sensors(動作感測器)包括陀螺儀(Gyroscope)、加速度計(Accelerometer)和磁力計(Magnetometer),每個感測器都有製造誤差和校準差異,這些微小的不完美性可以作為「硬體指紋」。Media Devices API則涉及攝影機數量和型號、麥克風數量和特性,以及音訊輸出裝置。例如,擁有一個前置攝影機、一個外接網路攝影機、兩個麥克風的組合就相當獨特。
網路特徵點
網路層級的特徵點涉及使用者的網路連線和通訊偏好,如表4所示。
IP位址
全域IP位址(Public IP)是使用者的網路連線對外的「門牌地址」,是ISP(網路服務提供商)分配給用戶的唯一識別碼,可以大致推測使用者的地理位置(城市級別)。家用網路通常是動態IP(會變化),而商業網路可能是固定IP。私有IP位址(Private IP)是在區域網路(家裡或辦公室)中的內部地址,例如192.168.1.100。正常情況下網站看不到,但可以透過WebRTC漏洞獲取。
| 特徵類型 | 主要內容 | 識別價值 |
|---|---|---|
| 全域IP位址 | ISP分配的公開IP、地理位置 | 高 |
| IP類型 | 固定IP vs 動態IP | 中 |
| 私有IP位址 | 區域網路內部地址(192.168.x.x) | 中(需WebRTC洩漏) |
| IPv6位址 | 新一代網路協定位址 | 高(需WebRTC洩漏) |
| 網路速度 | 下載∕上傳速度 | 低-中 |
| 網路延遲 | Ping值、封包遺失率 | 低 |
| 網路類型 | 光纖、行動網路、ADSL | 中 |
| 用戶類型 | 典型擴充功能組合 | 熵值等級 |
|---|---|---|
| 一般用戶 | Google翻譯 | 低 |
| 程式開發者 | Wappalyzer | 極高 |
| 隱私倡議者 | Privacy Badger | 極高 |
| 購物愛好者 | Honey、Rakuten | 高 |
| 設計師 | ColorZilla、WhatFont | 極高 |
| 資安研究者 | BurpSuite、Tampermonkey | 極高 |
網路性能
一些進階的指紋技術會測試使用者的網路性能,包括下載速度、上傳速度、網路延遲(ping值)以及封包遺失率。雖然網路速度會波動,但它可以幫助區分「使用光纖的城市用戶」與「使用行動網路的郊區用戶」。
瀏覽器擴充功能指紋
瀏覽器擴充功能指紋是一個較新且非常有效的指紋技術,表5展示不同類型用戶的典型擴充功能組合:
這是一個較新且非常有效的指紋技術,原理是檢測使用者安裝了哪些瀏覽器擴充功能(Extensions)。每個人安裝的擴充功能組合都不一樣:有人用AdBlock Plus,有人用uBlock Origin;程式設計師可能安裝React DevTools、JSON Viewer;隱私倡議者可能安裝Privacy Badger、HTTPS Everywhere;購物愛好者可能安裝各種比價擴充功能。這個組合的可能性幾乎是無限的,因此熵值極高。
現代的檢測技術主要透過三種方式:檢測擴充功能注入的DOM元素或修改的網頁內容、探測擴充功能提供的特定資源(如圖標、CSS檔案)是否可訪問,以及分析網頁載入時間和行為的變化。即使擴充功能宣稱「隱藏」運作,仍然可能在某些情況下被檢測到,成為識別用戶的強力特徵。
情境模擬
話說龜山軟體科技公司最近三個月資安監控系統持續發出警報,多個員工帳號出現「異常登入行為」。例如員工凱博的帳號在凌晨2~4點登入公司內部系統,但凱博平時都是朝九晚五的作息。另外,員工哲哲的帳號在早上9點從台北登入,10點又從高雄登入,時間和所處距離明顯不合理。公司的IT主管小勳開始懷疑是員工帳號被盜用了,但當他詢問這些員工時,他們都否認自己的帳號有異常,也沒有收到任何可疑的登入通知郵件。更奇怪的是,這些「異常登入」並沒有進行任何破壞性操作,只是瀏覽一些內部文件。
傳統的調查方法遇到瓶頸。密碼沒有外洩的跡象,且近期都有更換過。IP位址無法作為證據,許多員工使用VPN工作,IP位址變動是正常現象。使用時間難以判斷,因為有些員工確實有深夜或假日加班的習慣。
小勳決定採用瀏覽器指紋技術,他認為如果這些登入確實來自員工本人,那麼無論他們使用什麼IP位址、在哪個時間登入,他們的設備指紋應該是一致的。相反地,如果有人盜用了帳號,即使他知道密碼,他的設備指紋也會與真正的員工不同。
為了驗證這個假設,小勳設計了一個完整的測試方案。使用Fingerprint Pro Playground和Am I Unique等兩個指紋分析工具來進行實驗,前者其為一個商業級的指紋識別平台,能夠為每個存取者生成唯一的「Visitor ID」(訪客識別碼),並提供智慧訊號分析偵測VPN、機器人、無痕模式等異常行為。後者為一個學術研究工具,能夠量化指紋的獨特性,也就是熵值,顯示設備在數百萬設備中有多特別。
在驗證機制的設計上,不同的設備與瀏覽器配置會產生程度不一的瀏覽器指紋。即使是常見的組合(例如Windows+ Chrome),是否仍能有效區分不同使用者,是一項重要的評估指標。基於此,小勳將驗證方式區分為「獨特性驗證」(Uniqueness)與「持久性驗證」(Persistence)兩個面向。獨特性驗證關注的是不同的設備與瀏覽器配置是否能產生足夠獨特的指紋,以區分個別使用者;持久性驗證則著重於穩定性問題當使用者改變網路環境,例如使用VPN或切換IP位址時,瀏覽器指紋是否仍能判斷「這是同一台設備」。
小勳準備了以下測試環境,測試裝置是一台標準的公司配發筆記本電腦,規格為Windows 11作業系統、Chrome瀏覽器142版本,這代表公司內大多數員工使用的配置。Proton VPN(常見的商業VPN服務)、測試網站Fingerprint Pro Playground(https://fingerprint.com/demo/)以及Am I Unique(https://www.amiunique.org/),測試將分三個階段進行,每個階段都會記錄詳細的指紋數據,然後進行比對分析。
首先建立一個「基準」,也就是在正常網路環境下,這台測試設備的真實指紋,小勳將Chrome瀏覽器的Cookie和瀏覽資料都先清除,接著連線到Fingerprint Pro Playground網站並等待網站完成指紋收集與分析,結果如圖2所示。

| 類別 | 檢測項目 | 結果數值∕狀態 | 說明 |
|---|---|---|---|
| 基本識別 資訊 | Visitor ID | yGF43K… | 獨特的識別碼,就像是這台設備 的「數位身分證號碼」 |
| 瀏覽器 | Chrome 142.0.0 | 測試時使用的瀏覽器版本 | |
| 作業系統 | Windows 11 | 測試設備的作業系統 | |
| IP位址 | 116.59.xxx.xxx | 公司的真實對外IP | |
| 智慧訊號 (Smart Signals) | Bot Detection (機器人偵測) | Not detected (未偵測到) | 系統判定非自動化程式 |
| VPN Detection (VPN偵測) | Not detected (未偵測到) | 判定未使用VPN | |
| Incognito Mode (無痕模式) | Not detected (未偵測到) | 系統判定為一般瀏覽模式 | |
| Geolocation (地理位置) | Hsinchu, Taiwan (新竹、台灣) | 根據IP推測的地理位置 |
圖2中的網站介面分為幾個主要區塊。其中左側方框的「IDENTIFICATION」是一個識別這台設備的核心資料區塊,其主要內容的對應整理如表6所示。
圖2中的「Not detected」表示系統判斷這是一個正常的、真實的使用者在正常環境下存取網站。小勳特別記下Visitor ID「yGF43K…」,這將是後續測試中最重要的識別碼。如果這個ID在不同環境下保持不變,就證明了指紋的持久性。建立基準檔案後,小勳想知道這個指紋到底有多獨特,在數百萬台設備中會不會有其他設備和這台的指紋完全相同,因此接著使用「Am I Unique」網站進行分析,部分結果如圖3所示。
從圖3方框中顯示一個醒目的結論:「Yes! You are unique among 4,617,599 the fingerprints in our database」,意味著即使這只是一台配置普通的筆記本電腦,使用最常見的Windows作業系統和Chrome瀏覽器的組合,它的指紋仍然是獨一無二的。

接下來,網站提供詳細的特徵分析。從圖4內HTTP HEADER ATTIBUTES分析中User Agent的相似度僅0.34%,這表示雖然很多人用Chrome,但具體的版本編號、系統版本的組合仍然有識別價值。而從圖5方框JAVASCRIPT ATTRIBUTES分析中Canvas指紋的相似度僅0.13%,這意味著在100台設備中不到一台會產生相同的Canvas渲染結果。接著查看WebGL硬體特徵,如圖6所示,WebGL Renderer的相似度僅0.05%。這個數據直接揭露顯示卡型號和驅動版本,幾乎每台電腦都不同。小勳解讀這些數據證實一個重要事實,也就是即使是看起來「很普通」的設備,其硬體和軟體的細微差異組合起來,仍然能產生一個幾乎不可能重複的指紋。這就像人類的指紋一樣,即使雙胞胎的指紋也不會完全相同。




對於企業資安調查來說,這意味著只要收集到完整的瀏覽器指紋,就可以高度自信地識別出特定的設備,即使這台設備的配置很常見。然而,小勳還想要驗證另一個假設為VPN是否能騙過瀏覽器指紋,這是整個測試中最關鍵的階段。許多人,包括可能的帳號盜用者,認為使用VPN可以隱藏身分。
小勳要驗證的是當設備使用VPN時,瀏覽器指紋是否會改變,因此先在電腦上啟動VPN軟體,接著將VPN連線設定為日本,為了模擬使用者從國外存取公司系統的情況,並確認IP位址已改變。下一步是重新存取Fingerprint Pro Playground網站及觀察Visitor ID是否改變。假設瀏覽器指紋會被VPN影響,那麼應該會看到一個新的Visitor ID,系統會認為這是「另一台設備」。在這種情況下,指紋技術對資安調查的價值就會大打折扣。如果瀏覽器指紋不受VPN影響,Visitor ID應該保持不變,證明指紋識別的是設備本身,而不是網路環境。當頁面重新載入後,小勳仔細觀察了各個區塊的變化。Smart Signals區塊的變化,如圖7方框所示。
從圖7中間方框的VPN Detection資訊來看,其結果從狀態從「Not detected」變為「Detected」,也就是它偵測到有VPN連線。Geolocation位置從「Hsinchu, Taiwan」變為「Tokyo,Japan」,而IP位址從116.59.xxx.xxx變為149.88.103.46。從結果上來看,證實即使IP位址從台灣的116.59.xxx.xxx變成了日本的149.88.103.46,即使地理位置跨越了國界,即使系統明確偵測到VPN的使用,這台設備的Visitor ID依然沒有改變。這表示,就算可疑登入使用VPN或頻繁更換IP,只要擁有設備的指紋資料,就能追蹤到是哪台設備在操作。
透過驗證瀏覽器指紋技術,讓小勳在案件調查上有了進展,讓原本模糊不清的資安事件,能夠清楚地銜接所有的脈絡關係。原來是一名已離職員工阿偉的帳號未被及時停用,而該員工阿偉使用自己的個人筆電,透過這個「殭屍帳號」查看公司內部資訊,想將內部機密資訊賣給競爭同行,再跳槽到同行公司,以賺取高額獎金。
事件解決後,公司立即採取一系列改善措施:全面停用所有離職員工帳號,共清查出5個未停用的殭屍帳號、強化帳號生命週期管理流程、在登入系統中整合設備指紋驗證,並在偵測到新設備時立即通知帳號持有人,同時建立完整的設備指紋資料庫,記錄所有員工的授權設備。
結語
本文透過Fingerprint Pro與Am I Unique等工具的測試證實瀏覽器指紋具有極強的持久性,即便使用者透過VPN改變IP位址或地理位置,由於其硬體配置與渲染特徵等「本質屬性」並未改變,追蹤者仍能有效識別出同一台裝置。這項特性顯示了瀏覽器指紋在突破傳統網路匿名防護上的能力,並確立其在資訊安全領域的應用價值。