瀏覽器指紋和 Cookie 有什麼不同
| Cookie 等儲存資料 | 瀏覽器指紋 | |
|---|---|---|
| 儲存在哪裡 | 你的瀏覽器裡 | 不儲存,由網站每次讀取計算 |
| 能否清除 | 可以清除或使用無痕模式 | 不能,同一裝置通常長期穩定 |
| 常見用途 | 保持登入、購物車、偏好設定 | 識別裝置、反詐欺、風險控管、廣告歸因 |
常見的指紋維度
| 維度 | 暴露的資訊 | 常見的不一致 |
|---|---|---|
| User-Agent 與 Client Hints | 瀏覽器品牌與版本、作業系統、架構 | UA 寫 Chrome 144,Client Hints 或 Worker 中卻是另一個版本 |
| 螢幕 | 解析度、可用高度、色深、裝置像素比 | 可用高度與系統工作列不符 |
| 語言與時區 | navigator.language、Accept-Language、Intl 時區 | 時區與 IP 所在地不一致 |
| 字型 | 已安裝的字型清單與渲染寬度 | Windows UA 卻檢測到 macOS 專有字型 |
| Canvas | 文字與圖形渲染結果的雜湊值 | 每次讀取都會變化(隨機雜訊),或與 GPU 不符 |
| WebGL / WebGPU | GPU 廠商與渲染器、參數、像素結果 | Windows 系統卻回報 Apple GPU |
| Audio | AudioContext 處理結果的雜湊值 | 同一裝置多次結果不穩定 |
| ClientRects | 元素尺寸的細微差異 | 主視窗與 iframe 結果不同 |
| 硬體 | CPU 核心數、裝置記憶體 | 核心數與機型明顯不符 |
| WebRTC | 本機與公用 IP 候選位址 | 使用代理時仍暴露真實的公用 IP |
| 自動化特徵 | navigator.webdriver、無頭瀏覽器標記 | 自動化工具留下的屬性 |
為什麼「一致」比「隨機」更重要
真實裝置的特徵彼此吻合,並且長期穩定。檢測網站因此不只看某個值是否罕見,更關注這些值能否同時成立:
- 跨維度一致:系統、字型、GPU、螢幕與瀏覽器版本要來自同一種裝置。
- 跨上下文一致:主頁面、iframe 與 Worker 讀取到的身份應該相同。
- 跨時間穩定:同一裝置每次造訪都得到相同的指紋;每次都變的「隨機雜訊」本身就是異常訊號。
- 與網路一致:時區、語言和地理位置應與出口 IP 所在地相符。
如何檢測自己的瀏覽器指紋
| 工具 | 側重點 |
|---|---|
| CreepJS | 多上下文一致性、Canvas、WebGL、Audio、字型、Intl 等,並標記可疑的「謊言」 |
| Pixelscan | 瀏覽器、系統、位置、自動化與指紋偽裝的一致性 |
| BrowserLeaks | 分項檢視 Canvas、WebGL、字型、WebRTC、Client Hints 等原始資料 |
| IPhey | 瀏覽器、位置、IP、硬體、軟體的綜合評估 |
同時測試兩個環境
指紋瀏覽器的價值在於環境之間有區別,只測一個環境看不出問題。
重新啟動後再測一次
同一環境關閉再開啟,關鍵值(Canvas、WebGL、時區)應保持不變。
和本機真實瀏覽器對比
同一臺電腦上的官方 Chrome 也會被部分頁面標成紅色,請先確認哪些提示是檢測網站自身的判斷方式。
記錄欄位而不是顏色
記下測試時間、系統、瀏覽器與核心版本、代理,以及具體失敗欄位。檢測規則會更新,結果只代表當時。
Prism 如何處理這些維度
Prism 的指紋設定由自行編譯的 Chromium 核心在底層處理,不依賴向網頁注入指令碼;系統、CPU、螢幕與 GPU 來自同一套硬體範本,Canvas、WebGL、Audio 等細節由每個環境的指紋種子固定。逐項說明請見指紋設定與硬體範本。
常見問題
- 清除 Cookie 或用無痕模式能換掉指紋嗎?
- 不能。指紋來自裝置與瀏覽器本身的特徵,清除儲存資料不會改變它。
- 使用代理能改變瀏覽器指紋嗎?
- 代理只改變網路出口。時區、語言與 WebRTC 等仍可能暴露差異,需要與指紋一起設定。
- 指紋越獨特越容易被識別嗎?
- 越罕見的組合越容易被區分,但更關鍵的是自相矛盾的組合。使用常見、完整的硬體組合,比隨機拼湊更穩妥。
- 檢測頁面顯示紅色,就一定有問題嗎?
- 不一定。先看具體欄位,並與同一臺電腦上的真實瀏覽器對比。代理被識別、字型差異或網站規則都可能導致提示。