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


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

 

先來說說FingerPrint ,也就是我們常說的指紋識別,FingerprintJS框架可以去github看看介紹,web指紋識別技術通過提取設備的各種特征,據說能達到94%的匿名瀏覽器區分度。因為這不是本文重點,所以這里不再展開。那就是還有其他辦法?沒錯,而且足夠的簡單,不過畢竟適合場景的才是最好的,未必更好但的確值得一試。

 

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

1.index.html 業務頁面,通過iframe標簽引入uuid.html頁面

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

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

 

整個過程是這樣的:

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)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM