From:Arkteam

作者:Wellee

隨著互聯網絡的廣泛普及,數以億計網民的網絡行為數據早已成為最寶貴的資源,企業通過五花八門的各種手段了解網民的行為和隱私數據,用于廣告投遞、用戶興趣分析等,進而作為決策的依據,利用Web客戶端對用戶行為進行收集和追蹤是重要手段之一。

一、 Web客戶端追蹤技術概述

Web客戶端追蹤,主要是指用戶使用客戶端(通常是指瀏覽器)訪問Web網站時,Web服務器通過一系列手段對用戶客戶端進行標記和識別,進而關聯和分析用戶行為的技術。

實際上,只要通過Web進入互聯網的海洋,Web客戶端追蹤幾乎無時不刻不在發生。當你網購時,即便沒有登錄,關掉瀏覽器后購物車的物品也不會消失;當你訪問其他新聞、娛樂網站時,彈出的廣告往往都是近期瀏覽購物網站的類似商品;稍有意識的用戶可能會不定時清空瀏覽器緩存、使用“無痕瀏覽”、“隱私保護模式”等,然而仍然不能阻止類似廣告的洗腦。

現實世界可通過體貌特征、身份證件、生物特征(如指紋信息)等手段對用戶進行唯一性識別,Web世界主要通過Cookies技術、瀏覽器指紋、WebRTC等技術進行識別。本文主要對Cookies技術進行介紹。

Cookie,有時也用復數形式Cookies,在Web世界中其實際上是用戶瀏覽網站時,網站存儲在用戶瀏覽器上的一段信息,并在服務器和瀏覽器之間傳遞,用戶與辨別用戶身份和維持狀態。通常是以cookies:user@domain格式命名的,user是你的本地用戶名,domain是所訪問的網站的域名。在現有Windows系統中,一般存放位置在C:\Users\user\AppData\Local\Microsoft\Windows\TemporaryInternet Files\文件夾下。

Cookie利用網頁代碼中的HTTP頭信息,伴隨著用戶請求和頁面在 Web 服務器和瀏覽器之間傳遞。當你在瀏覽器地址欄中鍵入了服務的URL,瀏覽器會向服務器發送一個讀取網頁的請求,并將結果回顯。在發送之前,該網頁在你的電腦上尋找服務網站設置的Cookie文件,如果找到,瀏覽器會把Cookie文件中的數據連同前面輸入的URL一同發送到服務器。

服務器收到Cookie數據,就會在他的數據庫中檢索你的ID,你的購物記錄、個人喜好等信息,并記錄下新的內容,增加到數據庫和Cookie文件中去。如果沒有檢測到Cookie或者你的Cookie信息與數據庫中的信息不符合,則說明你是第一次瀏覽該網站,服務器的CGI程序將為你創建新的ID信息,并保存到數據庫中。

以添加購物車為例,Cookies的大致利用過程可表示為:

①、用戶第一次訪問購物網站:

②、用戶第二次訪問網站:

③、瀏覽器查看Cookies如下:

當然Cookie的用途還遠遠不止以上所述,我們日常工作中所能見到的第三方監測工具如doubleclick、99click等也都需要利用Cookie技術,網站分析工具如GA、百度統計、CNZZ等也需要利用Cookie。

2. Evercookie

以上所說的Cookie都是指HTTPCookies。HTTP Cookie是基于瀏覽器的,一方面當電腦有多個瀏覽器時,服務器會生成多個Cookie,雖然是同一個人,但服務器識別為多個用戶。另一方面,同一臺電腦多人使用同一個瀏覽器時,服務器也只會生成一個Cookie,雖然是多個人,但服務器識別為一個用戶。HTTP Cookies有數量限制,大多數瀏覽器支持最大為4096字節的Cookie,而且只允許每個站點存儲30或50個Cookie(不同瀏覽器支持的數量不同),當超過時,最早的Cookie便被刪除。

有一種Cookie:FlashCookie可以跨瀏覽器共享,不管用戶計算機上安裝了多少個瀏覽器,FlashCookie都能夠使所有得瀏覽器共用一個Cookie。Flash Cookie可以容納最多10萬字節的數據,遠遠超過HTTP Cookie的4096字節。所有瀏覽器都提供了清除HTTP Cookie的快捷方式,但FlashCookie沒有這種快捷方式,并且其保存位置較為隱蔽,一般網民難以將其清除。

Evercookie是一個用于在瀏覽器中持久化Cookie的JavaScriptAPI。Evercookie故名思義其可以讓Cookie存儲在非Cookie目錄,例如Flash Cookie和HTML5 Storage。簡單的說,其為了防止用戶通過清空瀏覽器緩存等方式清除已保存的Cookie,Evercookie將UserID和Cookie Data通過多種機制保存到系統多個地方(見下圖),其中就有上述HTTPCookies、Flash Cookie——如開啟本地共享對象(Local Shared Objects)甚至可以跨瀏覽器傳播、Web History以及一些HTML5存儲特性。如果用戶刪除其中某幾處的Cookie,當Evercookie發現用某種機制存儲的Cookie被數據將刪除之后,它將利用其它機制創建的Cookie數據來重新創建仍然可以恢復Cookie,大多數用戶對這些Cookie保存技術不甚了解,他們不大可能徹底清除某一Cookie。

c6

目前,其支持的存儲機制如上圖,開源代碼:https://github.com/samyk/evercookie

Cookie同步一般是指用戶訪問某A網站時,該網站通過頁面跳轉等方式將用戶的Cookie發送到B網站,使得B網站獲取到用戶在A網站的用戶隱私信息,然后通過RTB(Real Time Bidding)、AdNetwork等一系列平臺進行有效的廣告推送服務(此部分涉及SSP、DSP、RTB、DMP等一系列廣告推送服務和平臺)。

c7

如上圖,用戶通過瀏覽器訪問A網站,瀏覽器將A網站的Cookie一同發送到A服務器,A網站服務器通過該Cookie獲取到用戶的跟蹤ID信息,并構造一個包含用戶ID信息的跳轉URL,瀏覽器接收后進行頁面跳轉,跳轉到B網站的同時將B網站的Cookie信息一同發送到B網站,B網站便可將該用戶在A網站的信息和本網站的信息進行關聯,從而進行后續的針對性的廣告推送等服務。

研究人員通過訪問了Alexa排名前1500網站,發現兩個追蹤者進行Cookie同步以后,可以把數據完全共享,就像是一個追蹤者一樣。利用Cookie同步可以一定程度防止用戶清除Cookie,當用戶清除同步網站一方的Cookie后,如果同步的另一方利用一定手段(如上述Evercookie)恢復了Cookie,則經過同步后可以將網站雙方Cookie數據重新恢復關聯。

c8

如上圖,步驟1,用戶訪問A網站,其User ID為123,Cookie記錄其歷史記錄(cnn.com,nyt.com)。步驟2,其與B網站進行Cookie同步,B網站的Cookie為ABC。此時B網站將兩者進行關聯,得知ABC用戶在A網站的歷史記錄。步驟3,用戶刪除本地存儲的Cookie,并重新瀏覽A網站,此時A網站之前的Cookie已經失效,便重新生成Cookie,其User ID為456,歷史記錄為yahoo.com等。步驟4,假設網站B利用Evercookie恢復了其Cookie(上圖未表示),并重新進行Cookie同步,因其User ID都是ABC,此時便可將456的User ID和123的User ID進行關聯,得知用戶的所有歷史記錄。

不少安全工具甚至是瀏覽器都允許或者引導關閉追蹤Cookie,Cookie追蹤越來越受限制,瀏覽器指紋追蹤漸漸成為了Web追蹤的重要技術手段,且聽下回分解。

c9

三、 參考資料


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/227/