canvas指紋的技術原理:
canvas是一種在網頁上繪制2D和動畫的技術。
通過html5的canvas接口,在網頁上繪制一個隱藏的畫布圖像。在不同操作系統(tǒng)、不同瀏覽器上,產生的圖片內容不完全相同(我們肉眼是無法區(qū)分的)。在圖片格式上,不同瀏覽器使用了不同的圖形處理引擎、不同的圖片導出選項、不同的默認壓縮級別等。在像素級別來看,操作系統(tǒng)各自使用了不同的設置和算法來進行抗鋸齒和子像素渲染操作。即使相同的繪圖操作,產生的圖片數據的CRC檢驗也不相同。
計算機程序通過計算這張圖片數據的哈希值,能夠識別不同硬件設備渲染結果的細微區(qū)別。通過這種方式,技術上就能夠通過計算用戶設備的canvas指紋來標識用戶。
值得注意的是,如果用戶的設備,操作系統(tǒng),瀏覽器都一樣的話,計算出來的canvas指紋是一樣的。換句話說:canvas指紋不具備唯一性,要和其他的瀏覽器指紋相互結合利用來進一步計算出區(qū)分度更高的指紋標識。
如何檢測canvas指紋?
在線檢測地址:https://browserleaks.com/canvas
如何隱藏自己的canvas指紋?
隨著谷歌瀏覽器宣布為了保護用戶的隱私,跨域請求不在攜帶cookies。瀏覽器指紋技術成為追蹤用戶的熱門技術,那有沒有辦法隱藏我們的canvas指紋呢?
目前主要用2種方式:
1.安裝瀏覽器插件,谷歌應用商店有隨機修改canvas指紋的插件(CanvasFingerprintBlock),其原理是,每次隨機往canvas畫布里面注入一個隨機的噪音(人肉眼是看不到的),從而影響圖片數據的CRC校驗結果。
2.類似LoginBox, multilogin?這樣的指紋仿關聯軟件,其原理是:為每個瀏覽器窗口環(huán)境單獨分配指紋數據,和第1種方式一樣,也是往canvas畫布里面注入一個隨機的噪音,只是這個噪音是固定的。
canvas指紋通常和webgl等其他指紋結合利用。