任何瀏覽器都會把自己所在這台機器的幾百件小事交給網站:螢幕尺寸、字型清單、顯示卡、音訊部分。這些湊在一起,足以把那台機器認出來,連從這台機器登入的第二個帳號也會被當成同一個人。防指紋瀏覽器存在的意義,就是讓每個設定檔看起來像另一台機器。究竟怎麼做到,才是各家產品之間的全部差別,而這正好是多數產品頁跳過的部分。
免費開始值在頁面腳本執行之前就用 C++ 寫好,不是事後往 Chrome 上注入。
量寬度、按名字查、本機字型 API,三條路都從同一份清單作答,所以互相對得上。
帶驗證的 HTTP 與 SOCKS5,旁邊不漏 DNS,時區取自代理所在的國家。
螢幕、核心數、記憶體與顯示卡都來自同一台量過的機器,絕不拼湊。
同一個設定檔每次開啟都畫出同一個 canvas。會漂移的指紋比沒有還糟。
在同一台機器上和真實的 Chrome 對著量出來的,不是從設計上推出來的。
防指紋瀏覽器在一台電腦上跑很多個瀏覽器設定檔,並給每個設定檔一份自己的身分:自己的指紋、自己的 Cookie、自己的代理、磁碟上自己的資料夾。彼此之間什麼都不共用,所以看到設定檔 A 的網站,沒有辦法把它和設定檔 B 連起來。
指紋不是一個值。它是瀏覽器對任何頁面都提得出的那些問題所給的一整套答案:User-Agent 怎麼寫、螢幕多大、回報幾個 CPU 核心、哪些字型查得到、顯示卡驅動程式回傳什麼字串、canvas 畫出來的每一個像素長什麼樣。SigoLogin 為每個設定檔寫十五個這樣的識別面,正是辨識時分量最重的那幾個。
危險不在單獨某一個答案,而在組合。一台機器在 User-Agent 裡說自己是 macOS,WebGL renderer 報的卻是 Direct3D 驅動程式,這是一台根本不存在的機器;而一台不存在的機器,比一台普通機器好認得多。
代理換的是請求從哪個位址過來。瀏覽器裡面它什麼都沒換。走兩個不同代理的兩個帳號,回報的仍然是同一塊螢幕、同一份字型清單、同一張顯示卡、同一批 canvas 像素,這些就足以把它們串在一起。
反過來也一樣。一個設定檔回報的是雅加達時區,位址卻在美國,這在任何人讀到指紋之前就已經自相矛盾。SigoLogin 的時區與語言直接取自代理所在的國家,兩者沒辦法對不上。
多數防指紋瀏覽器就是一般的 Chrome,往每個頁面注入 JavaScript 去覆寫 navigator、canvas 和 WebGL。這樣做便宜,也過得了簡單的檢測。它同樣會留下痕跡。
我們這條路的代價值得直說:我們編譯的是整個瀏覽器,所以跟上一個新的 Chrome 版本要花好幾天而不是幾分鐘,核心下載量大約 2 GB,而不是幾 MB。
每個設定檔的指紋都由一顆種子產生,所以同一個設定檔每次開啟都完全一樣。指紋在兩次工作階段之間漂移,比完全不偽裝還可疑。所有值都取自同一個真實機型,欄位絕不會在不同機器之間拼湊。
已安裝字型清單是頁面讀得到的最強訊號之一,而頁面會從三條路去數它:量文字畫出來有多寬、按名字要一個字型、透過本機字型 API。三條路都在核心裡過濾,所以三個答案互相一致。
Windows 設定檔宣告大約 300 個字型,是在真機上量的,不是從哪份清單抄來的。macOS 的字型集用同樣辦法量下來大約 1,185 個。這裡有一條硬限制,我們寧可說出來也不藏著:核心能藏起一個字型,造不出一個字型。把作業系統一定會裝的字型藏掉,就等於編出一台沒人擁有的機器,所以這份清單是量出來的而不是猜出來的。
canvas、音訊和文字矩形的讀數都會加上由設定檔種子推出來的確定性雜訊:同一個設定檔每次畫出的像素都一樣,換一顆種子畫出來的就不一樣。WebGL 和 WebGPU 回報的是同一張卡,因為頁面可以兩邊都問一次再比對。這項檢查是我們撞見一個版本之後才加的:那個版本裡 WebGL 報的是 GeForce RTX 3060,WebGPU 配接器報的卻是開發機上的 Intel 晶片。
螢幕尺寸、可用高度、像素比、CPU 核心數、回報的記憶體、觸控點數,還有麥克風、喇叭與攝影機的名稱,全都取自同一個機型。決定成敗的是小細節。在 macOS 上,Chrome 報的是實體核心數而不是執行緒數,回報的記憶體上限在不同 Chrome 版本之間變過。這兩處只要錯一處,描述出來的就是一台沒人賣的電腦。
WebRTC 是那個經典的外洩口:就算走了代理,它也能把真實的本機位址報出去。有代理的設定檔上那條路是關掉的,真實位址沒有地方出來,我們是把外洩口堵上,而不是替它套一件代理的外衣。沒有代理的設定檔照實作答,而不是裝樣子,因為關掉 WebRTC 的真機極少,關掉本身就是一個標籤。時區與接受語言跟著代理所在的國家走,而不是跟著機器的設定。
交握發生在 HTML 的第一個位元組到達之前,頁面腳本構不著它,正因如此它值得改,也正因如此靠注入 JavaScript 的工具碰不到它。這一塊正在做,目前的版本裡還沒有。我們寧可在這裡寫明它還沒做完,也不願讓你以為已經做好了。
我們不想讓你只憑設計就相信。每個識別面都在同一台機器上和真實的 Chrome 對著量,設定檔也拿去跑公開的偵測站台。
對不上的地方,要麼改掉,要麼寫下來,不抹平。這頁上你不會看到的是分數:那些站台報的數字在兩次造訪之間會變,彼此也對不上,在這裡印一個數字就等於替別人的演算法許諾。它們真正管用的地方,是幫我們找出自己的缺陷。
量也是抓我們自己錯誤的辦法。字型過濾第一次推出時,一個偵測站台翻了臉:本來讀作可信的設定檔開始讀作可疑。原因是過濾器把 Windows 11 自己帶的十一個字型也藏掉了,於是這個設定檔描述出一台不可能存在的 Windows 機器。把清單改對就沒事了。這件事光靠推理找不出來,只有真的跑一遍才會露出來。
指紋只是眾多訊號中的一個,把其餘的說清楚,比給一個我們守不住的承諾更值錢。
這個軟體是一個瀏覽器,在自己的電腦上跑多個瀏覽器設定檔,這件事本身不違法。有規矩管的是你拿它做什麼:你所在地的法律,以及你造訪的網站的條款。我們不協助詐騙或冒充他人,我們的條款裡寫明了這一點。
不算。Chrome 的設定檔會分開 Cookie 和瀏覽記錄,最明顯的那條關聯是去掉了,但每個設定檔回報的仍然是同一塊螢幕、同一批字型、同一張顯示卡、同一批 canvas 像素,因為它們都跑在同一台機器上。儲存分開不等於身分分開。
代理或 VPN 換的是請求從哪個位址過來,僅此而已;瀏覽器描述的還是同一台電腦。兩者是互相補充,不是互相取代。SigoLogin 要求每個設定檔配一個代理,並從那個代理所在的國家取時區與語言,讓它們不會和位址相矛盾。
三個設定檔免費,用的是和付費方案相同的指紋引擎。免費方案限的是設定檔數量,不是保護程度。付費方案提高設定檔數量,也提高可啟用的裝置台數。
設定檔是你自己磁碟上的資料夾,裡面的 Cookie、儲存的登入資料與瀏覽記錄都留在那裡。應用程式會上傳一小組管理用的欄位,好讓你在這個站台上看到自己的設定檔,另外還有一份錯誤記錄。把設定檔分享給隊友是唯一的例外,因為對方坐在另一台機器前。隱私權頁面把每一個欄位都列了出來。
Windows 10 與 11,以及 macOS 13 以上,64 位元。Intel 和 Apple silicon 都有對應版本。Linux 還沒開始做。平台頁寫明了哪些已經有、哪些還沒有。
在 Windows 上安裝,開啟應用程式,按下把它登入到這裡的那個按鈕。核心只下載一次。
取個名字,掛上一個代理。指紋由一顆種子產生,從那之後就固定不變。
每次開啟都用同一個身分。把設定檔分享出去,隊友在自己機器上開的就是同一台裝置。