BrowserLeaks 是一套獨立測試,不是單一分數:說清楚 WebRTC、DNS、Canvas、WebGL 等測試各自能看到什麼,以及它們共同的盲點。
搜尋「browserleaks」,你會看到一整頁獨立的測試方塊——IP、WebRTC、Canvas、WebGL、字型、TLS——每一個都會開啟成自己的一份報告。第一次造訪的使用者通常會預期看到一個單一數字,就像信用分數或信任評級那樣,結果發現根本沒有這種東西,於是感到困惑。這種困惑並不是設計缺陷,而是面對一種本質上不同的工具時的正常反應:這是一套探測套件,每項測試各自衡量瀏覽器的一個面向,彼此並不試圖概括對方。
核心要點
- BrowserLeaks 這類套件針對每個面向各跑一項獨立測試——IP/WebRTC、DNS、Canvas、WebGL、字型、TLS——沒有一個可以追求的綜合分數。
- 每項測試回答的是「這裡暴露了什麼」,而不是「這一切合起來讓我有多容易被辨識」。這是兩個不同的問題,答案也不一樣。
- 每項單獨測試都「乾淨」,不代表你就難以被追蹤——那只說明測試到的這幾個面向本身沒有意外洩露。
- 任何瀏覽器端測試都有的結構性盲點:跑在瀏覽器裡的任何東西,都無法把你的時區或語言,與伺服器實際看到你連線抵達時所用的 IP 位址做比對。
- 正確的用法是逐項閱讀結果;把整套測試排名或打成一個總分,會強加一種它從未打算提供的精確度。
一整套測試,而非一個分數
BrowserLeaks 這類工具在廠商綜合分數面前顯得七零八落,原因在於它們要解決的是不同的問題。綜合分數把許多訊號壓縮成廠商自行決定權重的一個數字;測試套件恰恰相反——它刻意讓每個面向保持獨立,因為攝影機權限洩露、過期的 DNS 解析器、獨特的 canvas 雜湊值是三種毫不相干的失敗模式,各自有各自的修復方式。把它們合併成一個等級,只會掩蓋究竟哪一項對你真正重要。
這意味著要讀懂一套測試的輸出,重點不在總分,而在於逐個面板地問兩個問題:這項具體測試暴露了什麼,它對我想保護的東西是否重要。下一節就按這個順序,走一遍主要面板。
每個面板到底暴露了什麼
IP 與 WebRTC。 WebRTC 面板檢查的是:即使 VPN 處於開啟狀態,你瀏覽器那套為點對點視訊、語音通話設計的即時通訊堆疊,是否依然洩露了你的真實公開 IP。WebRTC 用 ICE 框架協商連線,這套框架會蒐集裝置能被連通的每一條網路路徑,包括 VPN 根本沒有路由到的那些,並可能把整份清單交給任何發出請求的頁面。WebRTC 洩露會摧毀多數人使用 VPN 的核心目的——隱藏 IP。《WebRTC 洩露防護:VPN 用戶的必修課》詳細講解了這種洩露如何發生,以及如何在不影響視訊通話的前提下堵住它。
DNS。 DNS 面板檢查的是:真正處理你網域查詢的,到底是 VPN 的加密解析器,還是你 ISP 的解析器——後者會把你造訪過的每一個主機名稱,洩露到你以為受保護的通道之外。這項測試存在的意義在於:即便 VPN 正確路由了其他流量,也可能悄悄沒能把 DNS 請求重新導向,而這種失敗在沒有專門檢測的情況下是看不見的。《DNS 洩露防護:隱藏你的瀏覽足跡》講解了背後的機制,以及 DNS over HTTPS 如何堵住這個缺口。
Canvas。 canvas 面板會在一個隱藏的離螢幕 Canvas 元素上繪製文字與圖形,再讀取產生的像素並做雜湊——這個值會因 GPU、驅動程式、作業系統、字型引擎而產生細微差異,且不需要 cookie 就能在多次造訪間保持穩定。這項測試告訴你的是這個雜湊值是否被產生,以及它在多次重新整理之間看起來有多穩定;它本身並不會告訴你,你這個特定雜湊在其他訪客中到底是常見還是罕見。《Canvas 指紋檢測:網站如何識別你的裝置》詳細講解了像素是如何產生差異的,以及為什麼一些流行的防禦手段反而弄巧成拙。
WebGL。 WebGL 面板會直接查詢你的圖形硬體——GPU 廠商與渲染器字串、支援的擴充功能、數值上限——還可能像 canvas 那樣渲染一個 3D 場景並對輸出做雜湊。它檢測的是這份硬體指紋是否被暴露、包含多少細節,而不是這種暴露本身是否危險。《WebGL 指紋深度解析:顯卡也能暴露身份》有完整的技術細節。
字型。 字型面板會列舉或量測你系統上安裝了哪些字型——這是一台普通瀏覽器僅憑特定作業系統、語言套件、已安裝應用程式的組合,就會暴露出的最獨特訊號之一。它回報的是能檢測到什麼,而不是這能把你從其他人中區分出多少。《字型指紋:已安裝字型如何暴露你》講解了列舉與量測這兩種技術,以及為什麼它們洩露的資訊量不同。
TLS 與網路層。 TLS 面板看的層次比任何 JavaScript 能看到的都要低:它檢查你的 TLS 用戶端在交握過程中提供的加密套件、擴充功能、橢圓曲線的確切順序與內容,並彙總成一個 JA3/JA4 風格的雜湊值。這是唯一一個根本不讀取瀏覽器 API 的面板——它讀取的是你的 TLS 協定堆疊如何協商連線,這正是即便其他每一個訊號都偽裝得天衣無縫,它依然能把真實瀏覽器和腳本化的 HTTP 用戶端區分開的原因。《TLS 指紋識別詳解:JA3/JA4 如何識別你的客戶端》拆解了交握過程裡到底包含什麼。
「暴露了什麼」不等於「獨特性有多高」
以上每個面板回答的都是「這個訊號是否暴露,它包含什麼內容」。沒有一個回答「所有這些訊號組合在一起,讓我有多容易被辨識」。這是兩個真正不同的問題,把它們混為一談是解讀洩露測試套件時最常見的誤讀:WebRTC 面板乾淨、DNS 面板也乾淨,並不能告訴你 canvas、字型、WebGL 這些訊號組合在一起,是否已經罕見到足以在完全不依賴 cookie 的情況下,把你跨會話追蹤出來。
《瀏覽器指紋熵與匿名集詳解》講解了單一訊號如何合併成一個獨特性數字——這正是一套按面板拆分的測試套件刻意不去嘗試的計算。而如果你曾經把一套洩露測試的結果,跟某個廠商給出的匿名度百分比放在一起比對,卻發現很難調和,這也是意料中的事,並不代表其中一個是錯的:《指紋測試工具為何對你眾說紛紜》講清楚了暴露檢測、獨特性評分、一致性檢查其實是三種不同的量測,只是都被套上了「分數」這個詞。
每一個瀏覽器端套件共有的盲點
前面討論的每個面板都完全運行在你的瀏覽器內部,讀取的是 JavaScript(對 TLS 而言則是用戶端協定堆疊)能從內部看到的內容。這讓它們都有著同樣的結構性限制:瀏覽器裡運行的任何東西,都無法知道你的網路連線實際在對端落在了哪裡。Intl.DateTimeFormat().resolvedOptions().timeZone 回報的是瀏覽器被設定為聲明的內容,而不是你的封包實際走過的路由,也不是伺服器實際看到連線抵達時所用的 IP。
把瀏覽器聲稱的時區、語言,與 IP 實際的地理位置做比對,能抓住一種具體且常見的失敗:VPN 改變了你對外可見的 IP,卻沒有改動系統時鐘和地區設定,結果瀏覽器內部看起來完全自洽,卻與它自稱所在的位置相矛盾。《時區與語系洩漏:當瀏覽器與 IP 自相矛盾》詳細講解了這種錯位是如何發生的,以及檢測系統如何利用它。要堵上這個缺口,需要一台觀察到連線實際抵達的伺服器——這一環節完全在任何只讀取瀏覽器屬性的測試之外,往一套測試裡再加多少瀏覽器端面板,也無法把它暴露出來。
如何解讀自己的測試結果
以上這些都不是在反對使用洩露測試套件——逐個面板獨立檢查,確實是找出某個具體、可修復暴露點(例如 VPN 漏掉的 WebRTC 洩露,或繞過通道的 DNS 解析器)的正確方式。真正的誤區在於,期待這一組面板加起來能給出一個關於你整體有多容易被追蹤、有多安全的定論。
如果你想要的正是那種綜合視角——把你的各項訊號放在一起檢查內部一致性,再加上瀏覽器端套件在結構上做不到的網路側比對——可以同時執行 BrowserInsight 的指紋檢測和 VPN 與代理檢測。兩者合起來涵蓋了同樣的底層訊號面(指紋檢測那邊負責 canvas、WebGL、字型、TLS,VPN 檢測那邊負責 WebRTC 與 DNS),再加上時區與 IP 的比對,並且以一致性判定的形式呈現,而不是一組互不相關的面板。如果你只想看網路這一側,IP 位址查詢會顯示伺服器為你這條連線看到的地理位置、ISP 與 ASN。
常見問題
BrowserLeaks 這類測試每一項都「通過」,是不是就代表我很匿名?
不是。每項測試只回報它自己這個具體面向是否被暴露——WebRTC 和 DNS 結果都乾淨,只說明你的 VPN 在這兩個通道上沒有洩露。它並不能說明你的 canvas、WebGL、字型組合放在一起,是否已經罕見到足以在沒有 cookie 的情況下把你跨次造訪追蹤出來。這是一個獨立的獨特性問題,詳見《瀏覽器指紋熵與匿名集詳解》。
為什麼 BrowserLeaks 不像有些工具那樣給一個總分?
因為按面板拆分的測試套件本來就是為了逐一定位和診斷單一洩露點而設計,而不是去概括它們。給出一個綜合分數需要決定每個訊號該占多少權重,這是廠商的主觀判斷,而不是一種量測——這種判斷在不同廠商之間如何天差地別,見《指紋測試工具為何對你眾說紛紜》。
如果時間只夠檢查一項,哪一項最重要?
取決於你要保護的是什麼。如果你依賴 VPN 來隱藏 IP,WebRTC 和 DNS 面板能抓住 VPN 在其他方面運作正常的情況下,最常見的兩種洩露方式。如果你擔心的是在不使用 cookie 的情況下被跨站追蹤,那 canvas、WebGL、字型測試比前兩者更重要。
瀏覽器端的測試套件能不能自己發現時區與 IP 不匹配的 VPN?
單靠它自己不行。這項比對需要伺服器端觀察到連線實際抵達時所用的 IP,再拿它和瀏覽器回報的時區、地區設定做比對——這是任何純運行在瀏覽器內的頁面都看不到的東西。像專門的 VPN 與代理檢測這類把瀏覽器檢測和伺服器端 IP 查詢結合起來的工具可以做這種比對;只靠瀏覽器的洩露測試套件在結構上做不到。


