本文以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