瀏覽器指紋實現方案及對比,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實現方式好,因為它無法通過瀏覽器快捷地刪除,但比較專業的人士還是能通過本地查詢刪除
C:/Documents and Settings/電腦使用者/Application Data/Macromedia/Flash Player/#SharedObjects中。
3、帆布指紋識別(使用canvas實現)
通過查詢瀏覽器的代理字串,螢幕色深,語言,外掛安裝與支援的 MIME 型別,時區偏移量和其他功能,如本地儲存和會話儲存等等,然後這些值通過雜湊函式傳遞產生指紋,不需要通過 Cookie 儲存就可以識別瀏覽器。
在繪製canvas圖片時,同樣的canvas繪製程式碼,不同機器和瀏覽器繪製的圖片特徵是相同並且獨一無二的,這樣以來,提取最簡單的md5值便可以唯一標識和跟蹤這個使用者。
目前已有開源專案實現,如fingerprintjs2,fingerprintjs2 是一個快速的瀏覽器指紋庫,純 JavaScript 實現,沒有依賴關係。預設情況下,使用 Murmur Hash 演算法返回一個唯一標識當前瀏覽器的32位字串。地址:
點選這裡即可看到你的瀏覽器指紋: http://valve.github.io/fingerprintjs2/
引用
支援npm安裝或通過script標籤引入
舉例:
注:如果options是一樣的話,值是一樣的,options是瀏覽器的語言、裝了什麼外掛等資訊,傳入的東西越多,越精確;假如options傳入的是空物件,那麼意思是根據當前瀏覽器所有資訊生成指紋。
結果:
特點:目前暫時沒有好的對抗方案,無法遮蔽。
本人初步測試
其他人全面測試
其測試結論
1.由於涉及裝置以及瀏覽器的判定因素非常多,重複性很低,31臺裝置皆無重複
2.也正因為涉及的因素多,一旦裝置系統更新 or 瀏覽器版本更新 or 瀏覽器關鍵外掛有變化(版本更新 or 新增解除安裝關鍵外掛) ,生成的ID都會改變,由於瀏覽器版本更新還是比較頻繁的,很容易失去之前跟蹤的使用者
結論:canvas指紋只能作為一參考屬性去判斷裝置的唯一性,不能只用這一個因素來判定裝置唯一性。fingerPrint.js也不能取代cookie,但是可以作為輔助,如果使用者清除了cookie的情況下,還可以通過fingerPrint2.js跟蹤到該使用者重新set cookie(結論參考)
相關推薦
瀏覽器指紋實現方案及對比,Cookie、Flash Cookies、帆布指紋識別
前言: 瀏覽器指紋指什麼? 簡單地說,瀏覽器指紋是一個能夠唯一標識當前瀏覽器的字串 作用: 在網路上精確定位到每一個個體,通過收集這些個體的資料,分析後更加精準的去推送廣告(精準化營銷)或其他有針對性的一些活動。 舉個例子: 某天你在某商城購買了一臺筆記本,不就
瀏覽器指紋的實現方案及對比
瀏覽器指紋指什麼? 是一個能夠唯一標識當前瀏覽器的字串 作用: 網站或者廣告聯盟都會非常想要一種技術方式可以在網路上精確定位到每一個個體,這樣可以通過收集這些個體的資料,通過分析後更加精準的去推送廣告(精準化營銷)或其他有針對性的一些活動。 舉個例子: 某天你在某商城購買了一
高斯模糊效果實現方案及效能對比
高斯模糊實現方案探究 現在越來越多的app在背景圖中使用高斯模糊效果,如yahoo天氣,效果做得很炫。 這裡就用一個demo來談談它的不同實現方式及各自的優缺點。 1. RenderScript 談到高斯模糊,第一個想到的就是RenderScript。RenderScrip
多線程中sleep和wait的區別,以及多線程的實現方式及原因,定時器--Timer
守護 驗證 取消 技術 方法 代碼 安全 接口 art 1. Java中sleep和wait的區別 ① 這兩個方法來自不同的類分別是,sleep來自Thread類,和wait來自Object類。 sleep是Thread的靜態類方法,誰調用的誰去睡覺,即使在a線程裏調用b
訊息中介軟體(一)分散式系統事務一致性解決方案大對比,誰最好使?(轉)
原文轉載至:https://blog.csdn.net/lovesomnus/article/details/51785108 在分散式系統中,同時滿足“一致性”、“可用性”和“分割槽容錯性”三者是不可能的。分散式系統的事務一致性是一個技術難題,各種解決方案孰優孰劣? 在OLTP系統領域,
SpringSession:分散式 session 實現方案及 SpringSession 功能分析
上一篇文章 SpringSession:整合SpringBoot 中介紹瞭如何在SpringBoot中來整合 SpringSession,整個過程非常簡單,同時也簡單分析了下SpringSession的作用原理。繼上一篇實踐之後,本文主要來分析 SpringSession 的原理。 1、從 session
音樂、視訊播放模式切換實現方案及原理解析(基於vue、vuex、h5 audio)
音樂、視訊播放模式切換實現方案及原理解析(基於vue、vuex、h5 audio) 播放模式有三種: 順序播放 隨機播放 單曲迴圈 定義為一個playMode物件並向外暴露,內含三種播放模式,即為: export const playMode = { sequen
訊息中介軟體(一)分散式系統事務一致性解決方案大對比,誰最好使?
在分散式系統中,同時滿足“一致性”、“可用性”和“分割槽容錯性”三者是不可能的。分散式系統的事務一致性是一個技術難題,各種解決方案孰優孰劣? 在OLTP系統領域,我們在很多業務場景下都會面臨事務一致性方面的需求,例如最經典的Bob給Smith轉賬的案例。傳統的企業開發,
單例模式的幾種實現方式及對比
所謂單例就是在系統中只有一個該類的例項。單例模式的核心分以下三個步驟: 構造方法私有化。即不能在類外例項化,只能在類內例項化。 在本類中建立本類的例項。 在本類中提供給外部獲取例項的方式。 單例模式的實現方式有兩種:餓漢模式和懶漢模式。 餓漢模式 不管現
方便快捷地實現底部導航欄,包含顯示未讀數、提示小紅點、動畫等功能
輕量級底部導航欄 目前市場上的App,幾乎都有底部頁籤導航欄,所以我們在開發的時候經常需要用到這個,雖然 github 上有不少已經封裝好的底部導航欄的工具,例如 bottombar,alphaIndicator(仿微信滑動漸變底部控制元件)等,但是這些控制元件由於功能太多,而且也沒有給
hive實現txt資料匯入,理解hadoop中hdfs、mapreduce
背景:通過hive操作,瞭解hadoop的hdfs、mapreduce。 場景:hadoop雙機叢集、hive 版本:hadoop和hive的版本搭配最和諧的是什麼,目前沒有定論,每種版本的搭配都會有一些bug出現。 本例中版本:hadoop-1.0.3
iOS 時間對比,判斷幾分鐘前、幾小時前、昨天、本週幾
/* * 需要傳入的時間格式 2017-06-14 14:18:54 */// 和當前時間進行比較 輸出字串為(剛剛幾個小時前 幾天前 )+(NSString *)inputTimeStr:(NSString *)timeStr{ NSDate *nowDate =
Java實現回形數,只利用數組、循環和if-else語句
oid 維數 () 打印 break util lse str 二維 import java.util.Scanner; public class learn { public static void main(String[] args){ System.
mac下Tomcat安裝及啟動,瀏覽器卻打不開解決方案
第一步:下載 Tomcat 1. 選擇版本號 在右側 Download 選擇版本號。 下面,我選擇版本8作為演示 2. 並下載(選擇 zip 或 tar.gz 均可,注意別下載 windows 版本了點選下面的連結直接下載也行): Core: · zip (
python difflib模塊實現兩個文件差異對比,並輸出html格式。
python difflib difflib 模塊包含一些用來計算和處理序列之間差異的工具。它對於比較文本尤其有用,其中包含的函數可以使用多種常用差異格式生成報告。 實現了三個類: SequenceMatcher 任意類型序列的比較 (可以比較字符串)Differ 對字符串進行比較HtmlDiff
版本號對比方案及參考代碼(Objective-C,Java,JavaScript)
true eap bstr math 當前 function loop sse 版本號 常用版本號 如 2.0.1 與 2.0.2 相比 2.0.2是比2.0.1要新的 那麽該如何對這個版本號進行對比 這裏有一個比較簡單的實現方案 2.0.1 這種格式可以拆分為多個部分
javascript創建css、js,onload觸發callback兼容主流瀏覽器的實現
question 禁止 rules 跨域問題 onload targe 結合 defined finally http://www.fantxi.com/blog/archives/load-css-js-callback/ 由於需要寫個函數,既可以加載css,又可
(轉)Spring事務處理時自我調用的解決方案及一些實現方式的風險
上下 喜歡 wire print type service() str bug 銷毀 轉:http://www.iteye.com/topic/1122740 預備知識 測試代碼準備 問題 解決方案 1通過ThreadLocal暴露Aop代理對象 2通過初始化方法在目標對
Java字符串連接的多種實現方法及效率對比
nan style time net println 毫秒 修改 nbsp 多種實現 JDK 1.8(Java 8)裏新增String.join()方法用於字符串連接。本文基於《Java實現String.join()和效率比較》一文,分析和比較四種自定義實現與Str
時域積分與頻域積分 實現及對比
wal 數學公式 save 參考 end hold on 說明 media points 玩陀螺儀的都會遇到一個問題就是,陀螺儀輸出的是角速度和線加速度。怎麽把加速度轉化成位移就值得研究一下。 首先我們講一下傅立葉變換,傅立葉本身就是一個線性積分變換。主要是將信號在時域