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