用戶行為統計在如今的前端生態中已是稀松尋常,如各種站長統計工具。識別用戶訪問客戶端唯一性是必要的實現,對於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)。