瀏覽器指紋實現方案:Cookie、Flash Cookies、帆布指紋識別

前言:

瀏覽器指紋指什麼?

簡單地說,瀏覽器指紋是一個能夠唯一標識當前瀏覽器的字符串

作用:

在網絡上精確定位到每一個個體,通過收集這些個體的數據,分析後更加精準的去推送廣告(精準化營銷)或其他有針對性的一些活動。
舉個例子:
某天你在某商城購買了一臺筆記本,不就你會發現瀏覽網頁時很多廣告都變成了筆記本,這是因爲你已經被唯一標識了!

實現方法

1、Cookie

用戶訪問一個網站時,網站可以在用戶當前的瀏覽器Cookie中永久植入一個含有唯一標示符(UUID)的信息,並通過這個信息將用戶所有行爲關聯起來,以便更好地爲訪客提供個性化服務。

特點:①:用戶可清除,清除後無法唯一標識。②:許多瀏覽器都有隱身訪問模式(即關閉cookie功能)

2、Cookie替代方案——Flash Cookies

FlashCookie是由FlashPlayer控制的客戶端共享存儲技術:
(1)、類似HTTP Cookie,Flash Cookie利用 SharedObject類實現本地存儲信息,SharedObject類用於在用戶計算機上讀取和存儲有限的數據量,共享對象提供永久貯存在用戶計算機上的對象之間的實時數據共享;
(2)、本地共享對象是作爲一些單獨的文件來存儲的,它們的文件擴展名爲.SOL;
(3)、本地共享對象並不是基於瀏覽器的,所以普通的用戶不容易刪除它們。如果要刪掉它們的話,首先要知道這些文件所在的具體位置。這使得本地共享對象能夠長時間的保留在本地系統上。
特點:比Cookie實現方式好,因爲它無法通過瀏覽器快捷地刪除,但比較專業的人士還是能通過本地查找刪除:Flash Cookie文件存儲在本地文件夾
C:/Documents and Settings/電腦用戶/Application Data/Macromedia/Flash Player/#SharedObjects中。

3、帆布指紋識別(使用canvas實現)

通過查詢瀏覽器的代理字符串,屏幕色深,語言,插件安裝與支持的 MIME 類型,時區偏移量和其他功能,如本地存儲和會話存儲等等,然後這些值通過散列函數傳遞產生指紋,不需要通過 Cookie 存儲就可以識別瀏覽器。
在繪製canvas圖片時,同樣的canvas繪製代碼,不同機器和瀏覽器繪製的圖片特徵是相同並且獨一無二的,這樣以來,提取最簡單的md5值便可以唯一標識和跟蹤這個用戶。
目前已有開源項目實現,如fingerprintjs2,fingerprintjs2 是一個快速的瀏覽器指紋庫,純 JavaScript 實現,沒有依賴關係。默認情況下,使用 Murmur Hash 算法返回一個唯一標識當前瀏覽器的32位字符串。地址:https://github.com/Valve/fingerprintjs2
點擊這裏即可看到你的瀏覽器指紋: http://valve.github.io/fingerprintjs2/

引用

支持npm安裝或通過script標籤引入

舉例:

在這裏插入圖片描述
注:如果options是一樣的話,值是一樣的,options是瀏覽器的語言、裝了什麼插件等信息,傳入的東西越多,越精確;假如options傳入的是空對象,那麼意思是根據當前瀏覽器所有信息生成指紋。
結果:
在這裏插入圖片描述
特點:目前暫時沒有好的對抗方案,無法屏蔽。

本人初步測試

在這裏插入圖片描述
在這裏插入圖片描述

其他人全面測試

測試結果:https://docs.zoho.com/sheet/open/08m2ga1cf6790c0eb4d8c8f7e54ca6ddb9b72

其測試結論

1.由於涉及設備以及瀏覽器的判定因素非常多,重複性很低,31臺設備皆無重複

2.也正因爲涉及的因素多,一旦設備系統更新 or 瀏覽器版本更新 or 瀏覽器關鍵插件有變化(版本更新 or 新增卸載關鍵插件) ,生成的ID都會改變,由於瀏覽器版本更新還是比較頻繁的,很容易失去之前跟蹤的用戶

結論:canvas指紋只能作爲一參考屬性去判斷設備的唯一性,不能只用這一個因素來判定設備唯一性。fingerPrint.js也不能取代cookie,但是可以作爲輔助,如果用戶清除了cookie的情況下,還可以通過fingerPrint2.js跟蹤到該用戶重新set cookie(結論參考)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章