瀏覽器指紋是指通過收集您設(shè)備的特征標(biāo)識,用來對您進(jìn)行唯一性識別、跟蹤、分析行為、所生成的摘要ID。網(wǎng)站通過收集大量的信息,然后對所有的特征標(biāo)識進(jìn)行并集匹配,可以十分精確的對您進(jìn)行標(biāo)記。
Hubstudio,允許您自定義所有可能用戶網(wǎng)站跟蹤的標(biāo)識。
標(biāo)識內(nèi)容:
UA,語言,時區(qū),地理位置,分辨率,webRTC,Cookie,字體指紋,Canvas,WebGL,WebGL Info,AudioContext,SpeechVoices,媒體設(shè)備,CPU參數(shù),內(nèi)存參數(shù),OS,索引數(shù)據(jù)庫,Resolution等等。
- User-Agent:瀏覽器和操作系統(tǒng)的信息。
- 語言,時區(qū),地理位置,分辨率,字體指紋,這幾個是用戶根據(jù)IP和電腦的使用場景進(jìn)行設(shè)置,來模仿真實環(huán)境。
- Cookie:主要是用于方便快速登錄一些網(wǎng)站,主要承載登錄信息和網(wǎng)站相關(guān)信息的文檔。
- webRTC指紋:是可以讓瀏覽器有音視頻實時通信的能力,它提供了三個主要的API來讓JS可以實時獲取和交換音視頻數(shù)據(jù),MediaStream、RTCPeerConnection和RTCDataChannel。當(dāng)然如果要使用WebRTC獲得通信能力,用戶的真實ip就得暴露出來(NAT穿透),所以RTCPeerConnection就提供了這樣的API,直接使用JS就可以拿到用戶的IP地址。
- canvas指紋:是HTML5中的動態(tài)繪圖標(biāo)簽,也可以用它生成圖片或者處理圖片。即便使用Canvas繪制相同的元素,但是由于系統(tǒng)的差別,字體渲染引擎不同,對抗鋸齒、次像素渲染等算法也不同,canvas將同樣的文字轉(zhuǎn)成圖片,得到的結(jié)果也是不同的。
- WebGL指紋:是一種Javascript瀏覽器API,用于在網(wǎng)頁上呈現(xiàn)3D圖像。網(wǎng)站可利用WebGL來識別您的設(shè)備指紋。通常網(wǎng)站可以用兩種方法做到這一點:
1、WebGL報告:完整的WebGL瀏覽器報告表是可獲取、可被檢測的。在一些情況下,它會被轉(zhuǎn)換成為哈希值以便更快地進(jìn)行分析。
2、WebGL圖像:渲染和轉(zhuǎn)換為哈希值的隱藏3D圖像。由于最終結(jié)果取決于進(jìn)行計算的硬件設(shè)備,因此此方法會為設(shè)備及其驅(qū)動程序的不同組合生成唯一值。這種方式為不同的設(shè)備組合和驅(qū)動程序生成了唯一值。
- AudioContex指紋:和Canvas類似也是基于硬件設(shè)備或者軟件的差別,來產(chǎn)生不同的音頻輸出,然后計算得到不同的hash來作為標(biāo)志,當(dāng)然這里的音頻并沒有直接在瀏覽器中播放出來,只需要拿到播放前的處理數(shù)據(jù)就行,音頻指紋測試地址。
- Do Not Track:在http頭部可以聲明這樣一個標(biāo)志“DNT”意味“Do Not Track”,如果值為1表示為不要追蹤我的網(wǎng)頁行為,0則為可以追蹤。即便沒有cookie也可以通過這個標(biāo)志符告訴服務(wù)器我不想被追蹤到,不要記錄我的行為。
- CPU內(nèi)核數(shù)量:這個在之前的設(shè)備指紋方案中都是沒有使用到的,現(xiàn)代瀏覽器可以用 navigator .hardware Concurrency 來獲取。如果不支持這個方法,則可以利用另一種方式獲取,具體來說是,當(dāng)增加 Web Worker 的數(shù)量時,可以監(jiān)視 payload 的完成時間。當(dāng)計算量達(dá)到一定的程度,Web Woker 完成 payload 的時間顯著增加,達(dá)到硬件并發(fā)的限制,從而判斷核心的數(shù)量。一些瀏覽器(如Safari)會將 Web Workers 的可用內(nèi)核數(shù)量減少一半,所以在獲取跨瀏覽器指紋時,我們需要將獲取到的核心數(shù)量加倍。
- 媒體設(shè)備,內(nèi)存參數(shù)這些參數(shù)是電腦和瀏覽器相關(guān)指紋。
該文章在 2022/7/14 18:03:57 編輯過