GA跨域跟踪全揭秘
百度权重查询 站长交易 友情链接交换 网站建设,网站设计,企业建站就找313
核心提示:这个问题与cookie的path、domain属性以及GA的域哈希值有关。path及domain决定了cookie的可见性。GA的cookie默认情况下只能由设置的主域读写。虽然cookie可以在各子域间共享,但是,默认情况下,GA会为不同的子域指定不同的域哈希值,因此,子域之间的GA数据无法共享。
什么是跨域跟踪?
跨域跟踪是指GA在多个域(包括子域与主域)跟踪访问者的访问行为。
为什么要进行跨域跟踪?
这个问题与cookie的path、domain属性以及GA的域哈希值有关。path及domain决定了cookie的可见性。GA的cookie默认情况下只能由设置的主域读写。虽然cookie可以在各子域间共享,但是,默认情况下,GA会为不同的子域指定不同的域哈希值,因此,子域之间的GA数据无法共享。
另外,通过设置path可以将cookie限制仅为该域或子域下的某个目录可读写。
因此,当我们需要在子域间共享GA数据时,需要统一各子域的域哈希值。而主域间是无法共享cookie的,想一想如果你在A网站的cookie保存了密码信息,而B网站可以读取这些cookie信息是多么可怕的事情,因此,cookie自身的安全设置就禁止了这样的共享。
PS:通过不同的domain和Path设置,在一个域可以存储多组GA的cookie。
如何进行跨主域的跟踪?
主要有两种方式:
一、借助于第三方cookie。比如广告投放过程中,先在第三方域的一个页面进行跳转,然后在第三方域上设置cookie,当访问者访问A网站及B网站时,都向第三方域发送信息,向第三方域发送请求时会在header中携带第三方域上的cookie。通过第三方域上的cookie信息就可以将访问者在A网站及B网站的行为统一起来。
AdWords的转化跟踪就是采用这种方式。用户在点击AdWords广告时会在Google的域下写入相关cookie,当用户发生转化时,会向google发送一个图片请求,这个请求会携带之前点击广告时写入的cookie信息,从而在转化与广告点击之间建立联系。
但是,随着访问者隐私意识的不断提升,禁用第三方cookie的比例不断提升,一些浏览器的默认设置就是禁用第三方cookie,从而降低了使用第三方cookie跟踪的准确性。
二、使用第一方cookie,通过在几个主域间跳转的URL添加参数传递cookie信息。这是GA跨域跟踪采用的方式。也是本文下面将要介绍的主要内容。
如何使用GA进行跨域跟踪?
GA的跨域跟踪主要涉及到六个方法的使用。
1. _setDomainName
这个方法用来控制GA的cookie(__utma、__utmb、__utmc、__utmz等)的domain属性及域哈希值。默认情况下,GA使用主域作为domain的值,通过这个方法,可以传递一个参数指定domain的值。主要有两种用法,一种是跨子域跟踪时,将主域作为参数传入,可以在各子域间共用一个域哈希值;一种是关闭跨子域跟踪时,可以传入一个none,这样GA会将cookie的domain设置为子域,从而将各子域作为独立主体跟踪,且不会影响主域的GA cookie。
2._setAllowHash
这个方法用来控制域哈希值,有一个参数,其值为布尔值,默认值为true,开启域哈希值,设置为false则会将域哈希值设置为1,关闭域哈希值。
3. _setAllowLinker
这个方法用来开启或关闭通过链接接受和传递cookie。只有一个参数布尔值,默认状态下为false,关闭通过链接接受和传递cookie;当需要跨主域跟踪时,才需要开启,设置为true。开启后必须与_link或_linkByPost一起使用。#p#分页标题#e#
4. _link
这个方法用在需要通过链接参数传递cookie的出站a标签上。有两个参数,第一个为URL,第二个为是否使用#传递cookie参数,此参数可选。
5. _linkByPost
这个方法通过将一个字符串附加到引荐表单的操作值 (HTTP POST),从而将 Cookie 从引荐表单传递到字符串中包含的另一网站。在从一个网站到第三方购物车网站跟踪用户行为时通常使用此方法,但也可用于将 Cookie 数据发送到弹出式窗口或 iFrame 中的其他域。同样支持两个参数,第一个为表单对象,第二个为是否使用#传递cookie参数。
注:目前为止,很少遇到这种类型的跨域,因此,以下内容不包括_linkByPost方法的使用及通过表单跨域。
6. _setCookiePath
这个方法可以将GA cookie的读写仅限于该域下的某个子目录。
常用的GA跨域跟踪情境及GA代码部署方式
了解了上面的基础知识,下面介绍一下常见的GA跨域跟踪情境及GA代码部署方式。
单一主域多个子域作为一个整体跟踪
这是最常见,同时也是最简单的跨域跟踪情境。根据上面的介绍,我们知道这种情况只是要在同一主域的不同子域间共享域哈希值。只需在_trackPageview方法前调用_setDomainName方法指定主域名。
GATC样例:
<script>
var _gaq = _gaq || [];
_gaq.push(['_setAccount','GA网络资源ID']);
_gaq.push(['_setDomainName','你的主域']);
_gaq.push(['_addOrganic','baidu','word']);
_gaq.push(['_addOrganic','soso','w']);
_gaq.push(['_addOrganic','sogou','query']);
_gaq.push(['_trackPageview']);
_gaq.push(['_trackPageLoadTime']);
(function() {
var ga = document.createElement(‘script’); ga.type = ‘text/javascript’; ga.async = true;
ga.src = (‘https:’ == document.location.protocol ? ‘https://ssl’ : ‘http://www’) ‘.google-analytics.com/ga.js’;
var s = document.getElementsByTagName(‘script’)[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
注:本文的GATC都是以异步代码为准。
单一主域多个子域,整个主域作为一个整体跟踪,各个子域也各自作为一个整体跟踪
这种情况与上面的情况相比还涉及到多跟踪器部署。因为,对于每一个页面需要部署两个GA跟踪器,一个是主域的跟踪器,一个是子域的跟踪器。
跟踪器在GATC中用来标识GA账户的对象,异步代码的默认情况下,GA会使用一个名称为空的对象来标识GA账户。
这里的一个技巧是一个域不考虑path的情况下,只能存在两组GA cookie。一组是主域的cookie,一组是子域的cookie。
一个跟踪器使用_setDomainName(‘none’);,这个跟踪器会将cookie限制在子域,用于跟踪子域的流量,另一个跟踪器则调用_setDomainName(‘你的主域’),这个跟踪器使用的是主域的cookie,用于跟踪整个主域的流量。#p#分页标题#e#
GATC样例如下:
<script>
var _gaq = _gaq || [];
_gaq.push(['_setAccount', '子域的网络资源ID']);
_gaq.push(['_setDomainName','none']);
_gaq.push(['_addOrganic','baidu','word']);
_gaq.push(['_addOrganic','soso','w']);
_gaq.push(['_addOrganic','sogou','query']);
_gaq.push(['_trackPageview']);
_gaq.push(['_trackPageLoadTime']);
_gaq.push(['t2._setAccount', '主域的网络资源ID']);
_gaq.push(['t2._setDomainName','你的主域']);
_gaq.push(['t2._addOrganic','baidu','word']);
_gaq.push(['t2._addOrganic','soso','w']);
_gaq.push(['t2._addOrganic','sogou','query']);
_gaq.push(['t2._trackPageview']);
_gaq.push(['t2._trackPageLoadTime']);
(function() {
var ga = document.createElement(‘script’); ga.type = ‘text/javascript’; ga.async = true;
ga.src = (‘https:’ == document.location.protocol ? ‘https://ssl’ : ‘http://www’) ‘.google-analytics.com/ga.js’;
var s = document.getElementsByTagName(‘script’)[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
注:部署多跟踪器时,需要注意,对于其他的一些自定义GATC,比如事件跟踪、自定义变量、电子商务也都需要指明跟踪器。如果这些数据是两个跟踪器所在的GA账户都需要的,则需要针对每一个跟踪器添加一次。