[轉] web前端js構造沒法銷燬的類UUID識別碼,識別瀏覽器設備惟一性

用戶行爲統計在現在的前端生態中已經是稀鬆尋常,如各類站長統計工具。識別用戶訪問客戶端惟一性是必要的實現,對於web前端獲取的設備信息,通常容易想到的是經過navigator.userAgent,但相同設備及瀏覽器ua就相同了,故ua的辨識度很低,那麼web前端識別瀏覽器設備惟一性是否有其餘好辦法?html

 

先來講說FingerPrint ,也就是咱們常說的指紋識別,FingerprintJS框架能夠去github看看介紹,web指紋識別技術經過提取設備的各類特徵,聽說能達到94%的匿名瀏覽器區分度。由於這不是本文重點,因此這裏再也不展開。那就是還有其餘辦法?沒錯,並且足夠的簡單,不過畢竟適合場景的纔是最好的,未必更好但的確值得一試。前端

 

你可能早就聽過一個被人詬病的h5 api:app cache,沒錯,接下來咱們就用它來實現瀏覽器設備的惟一性識別。咱們結合實例來看看,總共用到3個不到1k的小文件:python

1.index.html 業務頁面,經過iframe標籤引入uuid.html頁面git

2.uuid.appcache app cache 所需的一個配置文件github

3.uuid.html 被index.html中的iframe引入,維持uuid的被cache頁面web

 

整個過程是這樣的:api

1.服務器端生成一個惟一識別碼,寫在做爲維持uuid的uuid.html中,並標註<html manifest="uuid.appcache">瀏覽器

2.用戶訪問index.html,引入uuid.html後,執行的js能夠讀取到uuid緩存

3.嘗試修改uuid.html中的uuid,在微信瀏覽器中訪問N次,讀取到的uuid都是第一次被緩存的uuid。服務器

也就是說,經過給用戶打上一個沒法銷燬的識別碼,達到了識別瀏覽器設備惟一性的目的。

 

測試時能夠用python -m SimpleHTTPServer 8080起一個簡單的測試服務器,使用微信內置瀏覽器測試。撰寫者曾測試過的大多數設備均可行,尤爲是在微信內置瀏覽器中的表現:即便是關閉微信或是重啓手機,uuid也不會清除。請當心使用,若必要時需修改uuid,除了修改訪問的uri之外,還能夠修改uuid.appcache中的任意內容或是修改uuid.html的命名。

 

以上就是本文的所有內容了,但願能對你如今正在考慮的業務起到一點點的幫助。按照慣例提供了代碼附件,有須要可自行下載查看,最後感謝關注焦糖心得(JOTTOWN)。

相關文章
相關標籤/搜索