近幾年很火的「瀏覽器指紋」是怎么回事?
背景
不知道大家在瀏覽一些網站時,有沒有注意到這么一件事情,就是你在某一個頁面瀏覽了一些你喜歡的東西,但是你并沒有登錄,等你換一個標簽頁打開這個網站的時候,他照樣能推送一些你比較感興趣的內容供你閱讀。
就比如一些新聞網站、資訊網站、購物網站。我們并沒有登錄,他是怎么知道我們的喜好的呢?或者說他們是怎么記得我們的呢?
什么?瀏覽器也有指紋?
這里的指紋不是指的手機上的那種指紋解鎖,你可以認為:瀏覽器指紋就是瀏覽器的標記。
有了這個標記之后,每次請求接口的時候,瀏覽器都會帶著這個標記去發送請求,這樣后端那邊就會緩存起來你這個標記,并且等下次遇到你個標記的時候,就給你推送對應的你感興趣的內容。
其實瀏覽器指紋這類的技術已經被運用的很廣泛了,通常都是用在一些網站用途上,比如:
- 新聞、資訊網站: 要精確推送一些你感興趣的內容供你閱讀
- 購物網站: 要精確推送一些你近期瀏覽量比較多的商品展示給你看
- 廣告投放: 有一些網站是會有根據你的喜好,去投放不同的廣告給你看的,大家在一些網站上經常會看到廣告投放吧?
- 網站防刷: 有了瀏覽器指紋,就可以防止一些惡意用戶的惡意刷瀏覽量,因為后端可以通過瀏覽器指紋認得這些惡意用戶,所以可以防止這些用戶的惡意行為。
瀏覽器指紋怎么算出來的呢?
剛剛說了,瀏覽器指紋就是瀏覽器的標記,你可以理解就是一段標識字符串,比如這樣:
1.指紋算法
其實每個網站都有自己的一套計算瀏覽器指紋的算法,每個網站可能都不一樣。
但是其實市面上已經提供了很多瀏覽器指紋計算的算法了,大家可以到這個網站:https://browserleaks.com/,這個網站上展示了一些瀏覽器指紋的計算方法
就比如使用 canvas 去計算瀏覽器指紋,通過介紹可以粗略知道,這是一種使用 canvas 畫布去進行計算的指紋算法。
我們可以點進去看看,在這里我們可以清楚看到目前我們這個瀏覽器的指紋長什么樣。
我們甚至可以看看這個算法,到底是什么原理,看介紹,大概就是分為幾步:
- 用 canvas 畫出一個圖像
- 不同的瀏覽器、操作系統、cpu、顯卡等等,畫出來的 canvas 是不一樣的,甚至可能是唯一的
- 接著把 canvas圖像 轉成字符串,這樣就得到了一個趨近唯一的瀏覽器指紋
為了防止可能是瀏覽器緩存影響到瀏覽器指紋的計算,我們可以打開一個無痕瀏覽器,發現瀏覽器指紋是一致的,那就說明這個計算的算法跟瀏覽器緩存是無關的~
2.真的唯一嗎?
其實瀏覽器指紋只能是趨近于唯一,畢竟他是通過你的電腦信息計算出來的一個標識,在你沒登錄的情況下,這已經是一個比較穩妥的計算方式了~
可以看到,canvas 算法也只能做到99.99%的唯一性,所以只能是趨近唯一,所以你有沒有發現,很多網站或者APP都不斷在某些時機提醒用戶進行登錄,那是為了能更精準地投用戶之所好,提高用戶的黏度~