一、什麼是瀏覽器指紋
瀏覽器指紋是指透過收集您裝置的特徵標識,用來對您進行唯一性識別、追蹤、分析行為、所產生的摘要ID
網站透過收集大量的信息,然後對所有的特徵標識進行並集匹配,可以十分精確的對您進行標記。
EspiderBrowser,可讓您自訂所有可能使用者網站追蹤的標識。
標誌内容: UA,語言,時區,地理位置,分辨率,webRTC,Cookie,字體指紋,Canvas,WebGL,WebGL Info,AudioContext,SpeechVoices,媒體設備,CPU参數,内存参數,OS,索引數據庫,Resolution等等
二、這些指紋意義以及作用是什麼呢?
- User-Agent:瀏覽器和作業系統的信息
- 語言,時區,地理位置,分辨率,字體指紋,這幾個是用戶根據IP和電腦的使用場景進行設置,來模仿真實環境。
- Cookie:主要是用於方便快速登入一些網站,主要承載登入資訊和網站相關資訊的文件。
- webRTC指紋:是可以讓瀏覽器有音視頻即時通訊的能力,它提供了三個主要的API來讓JS可以即時獲取和交換音視頻數據,MediaStream、RTCPeerConnection和RTCDataChannel。當然如果要使用WebRTC獲得通訊能力,用戶的真實ip就得暴露出來(NAT穿透),所以RTCPeerConnection就提供了這樣的API,直接使用JS就可以拿到用戶的IP位址。
- canvas指紋:是HTML5中的動態繪圖標籤,也可以用它產生圖片或處理圖片。即便使用Canvas繪製相同的元素,但由於系統的差別,字體渲染引擎不同,對抗鋸齒、次像素渲染等演算法也不同,canvas將同樣的文字轉成圖片,得到的結果也是不同的。
- WebGL指紋:是一種JavaScript瀏覽器API,用於在網頁上呈現3D圖像。網站可利用WebGL來辨識您的裝置指紋。通常網站可以用兩種方法做到這一點:
- AudioContex指紋:和Canvas類似也是基於硬體設備或軟體的差別,來產生不同的音訊輸出,然後計算得到不同的hash來作為標誌,當然這裡的音訊並沒有直接在瀏覽器中播放出來,只需要拿到播放前的處理資料就行,音訊指紋測試位址
- Do Not Track:在http頭部可以聲明這樣一個標誌“DNT”意味“Do Not Track”,如果值為1表示為不要追蹤我的網頁行為,0則為可以追蹤。即便沒有cookie也可以透過這個標誌告訴伺服器我不想被追蹤到,不要記錄我的行為。
- CPU核心數量:這個在之前的裝置指紋方案中都是沒有使用到的,現代瀏覽器可以用 navigator .hardware Concurrency 來取得。如果不支援這個方法,則可以利用另一種方式獲取,具體來說是,當增加 Web Worker 的數量時,可以監視 payload 的完成時間。當計算量達到一定的程度,Web Woker 完成 payload 的時間顯著增加,達到硬體並發的限制,從而判斷核心的數量。有些瀏覽器(如Safari)會將 Web Workers 的可用核心數量減少一半,所以在取得跨瀏覽器指紋時,我們需要將獲取到的核心數量加倍。
- 媒體設備,記憶體參數這些參數是電腦和瀏覽期相關指紋。