最近做了一个流量分析项目,摸着石头过河,终于明白了第一方cookie和第三方cookie的用处,痛定思痛做一下总结。
第一方和第三方Cookie的区别
第一方Cookie和第三方Cookie,都是网站在客户端上存放的一小块数据。他们都由某个域存放,只能被这个域访问。他们的区别其实并不是技术 上的区别,而是使用方式上的区别。比如,访问www.a.com这个网站,这个网站设置了一个Cookie,这个Cookie也只能被www.a.com 这个域下的网页读取,这就是第一方Cookie。如果还是访问www.a.com这个网站,网页里有用到www.b.com网站的一张图片,浏览器在 www.b.com请求图片的时候,www.b.com设置了一个Cookie,那这个Cookie只能被www.b.com这个域访问,反而不能被 www.a.com这个域访问,因为对我们来说,我们实际是在访问www.a.com这个网站被设置了一个www.b.com这个域下的Cookie,所 以叫第三方Cookie。
从http协议的角度来看,
Set-Cookie: _sa=30304370825e22a3c7d89344faa80676; path=/; domain=.iteye.com; expires=Thu Jul 12 17:54:37 CST 2012
建立iteye.com的连接,发送上面的http包,那么
这个名字叫_sa的cookie是iteye.com网站的cookie,对iteye.com网站来说,属于第一方cookie,如果domain=.baidu.com,那么对于iteye.com来说_sa属于第三方cookie
可以通过在http头里面放置一个set-cookie来添加cookie,所谓的第一方cookie和第三方cookie都可以通过这种更改domain=.xxx.com的方式来更改。
第一方cookie举个例子来讲,ga.js是google的流量统计js代码,需要统计流量的网站可以加一个<script>脚本来加载这个js,ga.js代码里面就通过js向浏览器添加了
__utmz
__utmc
__utmb
__utma
这么几个cookie变量,他们的作用无非就是判断session,定位用户,统计访问量,统计浏览时间。
通过在客户浏览器计算用户的访问行为来得到最后的分析结果。然后在找个时间找个触发点将这几个值提交给google,最后展现给用户看。
第三方cookie,首先来讲讲第三方cookie的限制,
ie6,7,8..默认的安全隐私级别是中,是不容许没有隐私政策的第三方cookie存储的,所以为了能够使用第三方cookie,必须在http头里面说明自己的隐私政策P3P
如
Set-Cookie: _sb=30304370825e22a3c7d89344faa80676; path=/;
P3P: CP=NOI DEVa PSAa PSDa IVAa IVDa OTPa OUR OTRa IND OTC
Connection: keep-alive
只有这样第三方cookie才能在ie下用。
在来讲讲第三方cookie的应用,举例来说
假如我们公司有一个广告,需要投放到各大网站,最后看看有多少用户点击了我的广告,这个第一方cookie是能够收集到各大网站的cookie点击数据的,但是会重复计算,为什么?
因为每家网站的cookie都是独立的,他们之间没有统一用户标识,所以A用户在sina点了我的广告,后来又到qq点了我的广告,他们其实是一个用户,但是第一方cookie无法告诉我。
现在第三方cookie就派上用场了。
不管是sina还是qq,同一个用户点击了广告之后形成了一个cookie,假如我们叫_sc=xxx
这个点击量,我们最后都可以发送到我的统计服务端,我们只要group by _sc=xxx,就能统计一个用户点击了几次。当然除了我举的广告例子外,网站流量统计也是可以通过第三方cookie来实现的