瀏覽器指紋識別。如何在網絡上跟踪用戶。[第1部分]

 Google AdSense 根據我的舊搜索查詢強制投放上下文廣告的方式一直困擾著我。從搜索到現在似乎已經過去了相當長的時間,cookies和瀏覽器緩存被清除了不止一次,但廣告仍然存在。他們是怎麼一直跟踪我的?事實證明,有很多方法可以做到這一點。

https://ascarding.com/threads/browser-fingerprinting-how-to-track-users-on-network-part-1.1455/


簡短介紹

用戶識別、跟踪或簡單的網絡跟踪涉及為訪問特定站點的每個瀏覽器計算和設置唯一標識符。一般而言,最初它的目的不是某種普遍的邪惡,與其他一切一樣,它也有反面,也就是說,它旨在帶來好處。例如,允許網站所有者區分普通用戶和機器人,或者提供存儲用戶偏好並在後續會話中應用它們的功能。但與此同時,廣告業也很喜歡這個機會。眾所周知,cookie 是最流行的識別用戶身份的方式之一。自 90 年代中期以來,它們一直被積極用於廣告行業。

從那時起,發生了很多變化,技術已經遙遙領先,目前僅使用 cookie 跟踪用戶並不受限制。事實上,有很多方法可以識別用戶。最明顯的選項是設置一些標識符,例如 cookie。下一個選項是使用有關用戶使用的 PC 的數據,這些數據可以從發送請求的 HTTP 標頭中獲取:地址、使用的操作系統類型、時間等。最後,您可以通過用戶的行為和習慣(光標移動、網站的收藏部分等)來區分用戶。


顯式標識符

這種方法非常明顯。所需要的只是在用戶端存儲一些長期存在的標識符,可以在後續訪問資源時請求該標識符。現代瀏覽器提供了足夠多的方法來為用戶透明地做到這一點。首先,這些都是很好的老餅乾。然後還有一些插件的功能,它們在功能上類似於 cookie,例如本地共享對象、閃存或隔離存儲 Silverlight。HTML5 還包括幾種客戶端存儲機制,包括localStorage、File 和IndexedDB API。除了這些位置之外,唯一的令牌也可以存儲在本地機器上的緩存資源或緩存元數據中(Last-Modified,ETag)。此外,您可以使用從瀏覽器為 SSL 連接生成的 Origin Bound 證書中獲取的指紋、SDCH 詞典中包含的數據以及這些詞典中的元數據來識別用戶。一句話,機會多多。


餅乾

在客戶端存儲少量數據時,通常首先想到的就是 cookie。Web 服務器為新用戶設置一個唯一標識符,將其存儲在 cookie 中,對於所有後續請求,客戶端會將其發送到服務器。儘管所有流行的瀏覽器早已配備了用於管理 cookie 的用戶友好界面,並且網絡中充滿了用於管理和阻止它們的第三方實用程序,但 cookie 仍然被積極用於跟踪用戶。事實是很少有人查看和清理它們(請記住您上次這樣做是什麼時候)。可能主要的原因是大家都害怕不小心刪除了必要的“cookie”,比如可以用來授權的。儘管某些瀏覽器允許您限制第三方 cookie 的安裝,但問題仍然存在,因為瀏覽器通常認為在頁面內容加載期間通過 HTTP 重定向或其他方法接收的 cookie 是“本機”的。與我們稍後將討論的大多數機制不同,cookie 的使用對最終用戶是透明的。為了“標記”用戶,甚至不需要在單獨的 cookie 中存儲唯一標識符 - 它可以從多個 cookie 的值中收集或存儲在元數據中,例如過期時間。因此,在此階段,很難確定是否使用特定 cookie 進行跟踪。與我們稍後將討論的大多數機制不同,cookie 的使用對最終用戶是透明的。為了“標記”用戶,甚至不需要在單獨的 cookie 中存儲唯一標識符 - 它可以從多個 cookie 的值中收集或存儲在元數據中,例如過期時間。因此,在此階段,很難確定是否使用特定 cookie 進行跟踪。與我們稍後將討論的大多數機制不同,cookie 的使用對最終用戶是透明的。為了“標記”用戶,甚至不需要在單獨的 cookie 中存儲唯一標識符 - 它可以從多個 cookie 的值中收集或存儲在元數據中,例如過期時間。因此,在此階段,很難確定是否使用特定 cookie 進行跟踪。


本地共享對象

Adobe Flash 使用 LSO 機制在客戶端存儲數據。它類似於 HTTP 中的 cookie,但與後者不同的是,它不僅可以存儲文本數據的短片段,這反過來又使此類對象的分析和驗證變得複雜。在 10.3 版之前,Flash cookie 的行為與瀏覽器設置分開配置:您必須訪問位於網站 macromedia.com 上的 Flash 設置管理器(順便說一下,它仍然可以在以下鏈接中找到)今天,這可以直接從控制面板完成。此外,大多數現代瀏覽器都提供了與 flash 播放器的緊密集成:例如,在刪除 cookie 和其他站點數據時,lsos 也將被刪除。另一方面,瀏覽器與播放器的交互仍然不是那麼緊密,因此為第三方 cookie 設置瀏覽器策略不會總是影響 flash cookie(在Adobe 網站上,您可以看到如何手動禁用它們)。
在 Firefox 中從本地存儲中刪除數據。


隔離的 Silverlight 存儲

Silverlight 軟件平台與 Adob​​e Flash 有很多共同之處。因此,類似於本地共享對象的閃存驅動器是一種稱為隔離存儲的機制。但是,與 flash 不同的是,這裡的隱私設置與瀏覽器沒有任何關聯,因此即使 cookie 和瀏覽器緩存被完全清除,存儲在獨立存儲中的數據仍將保留。但更有趣的是,所有瀏覽器 Windows(除了在隱身模式下打開的那些)和安裝在同一台機器上的所有配置文件都共享存儲。與 LSO 一樣,存儲會話 ID 沒有技術障礙。然而,鑑於目前還無法通過瀏覽器設置實現此機制,因此它並未被廣泛用作唯一標識符的存儲庫。


隔離存儲1.png


在哪裡尋找隔離的 Silverlight 存儲


客戶端上的 HTML5 和數據存儲

HTML5 提供了一組用於在客戶端存儲結構化數據的機制。其中包括localStorageFile APIIndexedDB儘管存在差異,但它們都旨在提供與特定資源相關聯的任意二進制數據塊的永久存儲。此外,與 HTTP 和 Flash cookie 不同,對存儲數據的大小沒有明顯限制。在現代瀏覽器中,HTML5 存儲與其他站點數據一起放置。但是,很難猜測如何通過瀏覽器設置來管理存儲。例如,要從 Firefox 中的 localStorage 中刪除數據,用戶必須選擇離線網站數據或站點首選項,並將時間間隔設置為所有內容。IE 獨有的另一個不尋常的功能是數據僅在保存它們時打開的選項卡的生命週期內存在。另外,上述機制並沒有真正嘗試遵循適用於 HTTP cookie 的限制。例如,
為 Flash Player 配置本地存儲。


緩存對象

每個人都希望瀏覽器能夠快速運行且沒有剎車。因此,它必須將訪問站點的資源存儲在本​​地緩存中(以免在後續會話期間請求它們)。雖然這種機制顯然不打算用作隨機存取存儲,但它可以變成一種。例如,服務器可以向用戶返回一個 JavaScript 文檔,在其正文中帶有唯一標識符,並將其設置在標題 Expires / max-age= the fare future 中。這樣,腳本及其唯一標識符將存儲在瀏覽器緩存中。之後,可以從網絡上的任何頁面訪問它,只需請求從已知 URL 下載腳本即可。當然,瀏覽器會定期使用標頭詢問 If-Modified-Sinceif 是否有新版本的腳本可用。但如果服務器返回 304 代碼(未修改),則緩存副本將永遠使用。緩存還有什麼有趣的地方?沒有“第三方”對象的概念,例如在 HTTP cookie 的情況下。同時,禁用緩存會嚴重影響性能。由於在 Web 上發現的 JavaScript 文檔數量龐大且複雜,因此很難自動檢測存儲某些標識符/標籤的棘手資源。當然,所有瀏覽器都允許用戶手動清除緩存。但正如實踐所表明的(甚至是我們自己的例子),這並不經常這樣做,如果有的話。禁用緩存會嚴重影響性能。由於在 Web 上發現的 JavaScript 文檔數量龐大且複雜,因此很難自動檢測存儲某些標識符/標籤的棘手資源。當然,所有瀏覽器都允許用戶手動清除緩存。但正如實踐所表明的(甚至是我們自己的例子),這並不經常這樣做,如果有的話。禁用緩存會嚴重影響性能。由於在 Web 上發現的 JavaScript 文檔數量龐大且複雜,因此很難自動檢測存儲某些標識符/標籤的棘手資源。當然,所有瀏覽器都允許用戶手動清除緩存。但正如實踐所表明的(甚至是我們自己的例子),這並不經常這樣做,如果有的話。

留言

這個網誌中的熱門文章

⚡️有用的鏈接⚡️

DeepNude 2.0 – Deepnude AI算法一键脱衣,绿色破解版,免费下载

15 種 SMS 激活服務 - 通過 SMS 激活的號碼(免費和付費)