一、什麼是瀏覽器指紋
二、這些指紋含義以及作用是什麼呢?
- 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 的可用內核數量減少一半,所以在獲取跨瀏覽器指紋時,我們需要將獲取到的核心數量加倍。
- 媒體設備,內存參數這些參數是電腦和瀏覽期相關指紋。大家比較瞭解