本文以Google Analytics為例,介紹網站是如何通過cookie來記錄訪客信息。當訪問使用了Google Analytics的網站時,會在本地保存多個cookie字段,來記錄用戶相關的訪問信息,這些字段有:__utma、__utmb、__utmc、__utmz等等,分別介紹如下:
utma
記錄visitor的信息,utma後麵的信息,包括域的hash值,visitor的ID、訪問時間相關信息和訪問次數。utma對應的信息,除非人為刪除,否則它在兩年後才失效。utma相關字段圖示如下:
-
第一個藍色的字段是域名的哈希串,對於一個確定的域名來說,這個值是不會改變的。
-
第二個字段(綠色字段)是識別visitor的ID,就是這個綠色字段,標識了不同的訪問者,不同的值就意味著不同的訪問者。這就是GA能夠辨別不同訪問者的原因。這個值如果不發生人為地刪除cookie的情況的話,兩年後才會被替換為一個新的值。
-
第 三個字段(紫色字段)是這個visitor第一次訪問網站的時間,如果不刪除cookie,兩年內這個值也不會變。這個時間是UNIX時 間,0000000001代表著1970年1月1日0點0分1秒,之後每過一秒,數字加一。實際上UNIX時間是有點小錯誤的,但是已經不會再對使用產生 影響。這裏同學們需要注意了。這裏以及cookie中其他的UNIX時間記錄,構成了GA的整個時間度量係統。時間是這麽創造的!
-
第四個字段(淺藍色字段)是這個visitor前一個visit開始的時間。
-
第五個字段(淺紫色字段)是這個visitor這一次visit開始的時間。
-
第六個字段(最後那個獨立數字)太重要了,是記錄這個visitor訪問網站的次數。
utmz
utmz的功能是用來記錄網站訪問者的來源(即Traffic Source或者Campaign),如下:
這 裏各個字段的含義除了Campaign Number之外就不多解釋了,大家肯定能看懂。Campaign Number是指這個訪問者通過不同來源(除 了直接來源)訪問網站的來源數。如果通過了一個新的來源訪問了網站,即使是在一個visit之內,campaign number也會加一,但visit 並不會增加。
Campaign number的作用我並不是很明確,很希望知道的朋友告訴我。我知道的是,如果在一個 visit之內,訪問者通過多個來源訪問了網站,那麽GA默認把最後的那個來源歸為這個visit的主人。如果你用utm_nooverride=1配置,那麽GA則會把第一個來源記錄為這個visit的主人。
utmb和utmc
utmb和utmc是另外兩個重要的cookie信息,在免費版本的HttpWatch中看不到,不過沒關係,大家用firebug就能看到。
簡單講,utmb和utmc都是記錄visit的cookie。兩個cookie的區別是,utmb在30分鍾後過期,如果utmb過期刷新,那麽 visit也被刷新。utmc是瀏覽器關閉則隨瀏覽器一起關閉(失效),再打開瀏覽器訪問那個網站,visit也被刷新。這就是為什麽GA(即Google Analytics)的visit在 不活動30分鍾後結束,以及關閉瀏覽器結束的原因。
相關字段匯總
Cookie名稱 | 默認有效期 | 說明 |
---|---|---|
__utma | 設置/更新後 2 年 | 用於區分用戶和會話。在 JavaScript 庫執行且沒有現有的 __utma Cookie 時,係統創建此 Cookie。每次發送數據到 Google Analytics(分析)時,此 Cookie 都會更新。 |
__utmt | 10 分鍾 | 用於限製請求率。 |
__utmb | 設置/更新後 30 分鍾 | 用於確定新的會話/訪問。在 JavaScript 庫執行且沒有現有的 __utmb Cookie 時,係統將創建此 Cookie。每次發送數據到 Google Analytics(分析)時,此 Cookie 都會更新。 |
__utmc | 到瀏覽器會話結束 | 不在 ga.js 中使用。設置此 Cookie 的目的是為了能與 urchin.js 互操作。一直以來,此 Cookie 都是與 __utmb Cookie 結合使用,用於確定用戶是否在執行新的會話/訪問。 |
__utmz | 設置/更新後 6 個月 | 存儲可解釋用戶如何到達您網站的流量來源或廣告係列。此 Cookie 在 JavaScript 庫執行時創建,在每次數據發送到 Google Analytics(分析)時更新。 |
__utmv | 設置/更新後 2 年 | 用於存儲訪問者一級的自定義變量數據。如果開發者搭配 _setCustomVar 方法使用訪問者一級的自定義變量,係統就會創建此 Cookie。此 Cookie 也用於已經棄用的 _setVar 方法。每次發送數據到 Google Analytics(分析)時,此 Cookie 都會更新。 |
參考:
- [1] https://wenku.baidu.com/view/88e070dcad51f01dc281f189.html
- [2] http://www.douban.com/note/245276670/
- [3] https://developers.google.cn/analytics/devguides/collection/analyticsjs/cookie-usage?hl=zh-cn