为什么每种流量统计工具报告中的数据都不同?
-
监测工具原理(Tracking Tools Methodology)不同。
-
数据获取方式不同。
服务器日志分析工具,是通过解析服务器日志进行网站访问数据获取。如AwStats、Webtrends、CO ,或者国产逆火等;代码嵌入分析工具,是通过在网页中加入Javascript代码,运行后向监测工具服务器发送带请求,服务器从而获取访问数据。如Google Analytics、Yahoo统计、Omniture,国内常用的站长统计、百度统计、51la等等。
后者现在业界更为常见,两者的数据获取方式不同会造成统计数据的差异。比如:访问者输入www.g.cn发送访问请求,会经过一系列步骤:
①DNS解析 –>② 获得服务器IP –>③ 向服务器发送请求 –> ④服务器返回认证 –> ⑤开始下载页面数据 –> ⑤下载中和浏览器解析中 –> ⑤数据下载结束。服务器在获得“③用户发送请求”后,就会生成一条日志,日志分析工具就是对海量的日志记录进行分析。不同的服务器系统日志格式不同。常见的IIS记录,形如:
2009-04-17 02:04:52 W3SVC9218140 61.191.191.183 GET /default.asp – 80 – 203.208.60.19 Mozilla/5.0+(compatible;+Googlebot/2.1;++http://www.google.com/bot.html) 200 0 0
后者监测工具是直到“⑤下载中和浏览器解析中”阶段才开始生效。Javascript程序运行后会向服务器发送请求。有的是请求1×1象素Gif图片,如Google Analytics;有的是请求htm页面,如国产老牌统计软件CNZZ是请求http://219.232.241.164/stat.htm。共同之处是,请求都带有了访问者的各种参数,监测服务器通过截取参数获取数据。形如:
http://www.google-analytics.com/__utm.gif?utmwv=1&utmn=970846480
&utmcs=utf-8&utmsr=1680×1050&utmsc=32-bit&utmul=en-us&utmje=1
&utmfl=9.0&utmcn=1&utmhn=www.gmodules.com&utmr=http://ectend.com/
&utmp=/translate_my_page_gadget&utmac=UA-10000-1&utmcc=__utma
%3D123692957.37202895.1245037832.1251034440.1251471692.21%3B%2B
__utmb%3D123692957%3B%2B__utmc%3D123692957%3B%2B__utmz
%3D123692957.1251471692.21.21.utmccn%3D(referral)%7Cutmcs
r%3Dectend.com%7Cutmcct%3D%2F%7Cutmcmd%3Dreferral%3B%2B即使同样是代码嵌入分析工具,也会有很多因素造成数据差异,下面还有更多说明。
-
用户端缓存机制不同。
某个访问是新访还是回访?这需要将用户的信息“唯一化”地写入Cookie文件中,缓存在用户端浏览器指定目录。这里存在有第一方Cookie与第三方Cookie之分。虽然市面上绝大部分监测工作都是使用第一方Cookie,但不排除仍有些小型公司产品使用第三方Cookie。 第三方Cookie容易被用户浏览器屏蔽,获取的数据不够准确,且保密性差。
有人会好奇地问,Cookie里到底写了什么?那我就贴个内容简单的第一方Cookie示例,满足你的好奇心。这是百度统计的Cookie内容,文件名administrator@hm.baidu(不要问我内容代表什么,我也不知道,要看百度开发人员对ID号的定义):HMACCOUNT
D3020343DB851C59
hm.baidu.com/
2147484672
2350186496
32111674
1314491424
30025681
* -
监测工具分析方式不同
监测工具获取了大量访问的行为数据后,就开始一系列的统计分析。
- 度量定义不同 在网站分析领域中涉及到很多度量,如Unique Visitor,Visit,Pageview,Time on Site,Bounce Rate等等。由于行业暂时还不是非常成熟,有些度量虽然有Web Analytics Association(WAA)、IAB等专业机构的定义,但仍未被标准化地广泛使用。在国内还涉及一些中文翻译标准化的问题,有造成对度量定义混淆的情况。
从我个人的经验,迄今为止,国内外最无定义分歧的度量就是Pageview(PV)。至于Visit(Session,或访问,或访问数),是有分歧的:有的认为Visit的有效期为30分钟,有的认为1小时。更别提复杂的度量Bounce Rate的定义之争呢。 - IP校验数据库不同 访问者的IP是被监测工具获取了,但IP对应的实际地理位置数据库却不是全球通用的。IP地址数据库是时刻变化的,无权威发布机构,所以不同工具的统计报告中,地理区域划分数据也会有一定的差异。
- 过滤与限制功能 我们知道Google Analytics有丰富的过滤功能,如过滤某个IP段,过滤操作系统为Linux的访问。不同的监测工具也有类似的功能。这些功能一旦开启,设置的不同也会造成数据的差异。
- 度量定义不同 在网站分析领域中涉及到很多度量,如Unique Visitor,Visit,Pageview,Time on Site,Bounce Rate等等。由于行业暂时还不是非常成熟,有些度量虽然有Web Analytics Association(WAA)、IAB等专业机构的定义,但仍未被标准化地广泛使用。在国内还涉及一些中文翻译标准化的问题,有造成对度量定义混淆的情况。
-
-
监测代码部署(Tracking Code Implementation)方式不同。
-
监测代码部署的位置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14<html>
<head>
-
Infomation For this page
-
</head>
<body>
-
Content of This Page
-
Hello
-
</body>
</html>上面示例了一个页面的结构,监测代码可以部署在第3-12行之间的任何位置。但是放置的越前,监测代码越早被运行,监测的数据越多;放置的越后,监测的数据越少,有时甚至还会因为页面中的JavaScript出错,而导致监测代码失效。
-
监测代码的冲突。
有时由于同一页面中两种监测代码间,或者监测代码与页面本身的JavaScript之间,有函数名、变量名等的冲突,会造成监测代码的失效,或者监测不准。
-
监测代码的正确性与完整性。
专业的网站分析过程中对监测代码进行定制是必不可少的,代码的定制会造成统计结果的个性化,但同时也会有定制出错的风险。这些情况的发生,会造成监测数据的差异。
-
-
用户端设置(Client – End Settings)不同。
-
浏览器功能设置
浏览器种类很多,功能也不尽相同。但都具有基本的Cookie屏蔽功能,有的还支持图片、Flash、JavaScript的屏蔽功能,甚至还有的能对网页代码的关键字进行屏蔽。这些屏蔽技术的应用,会造成监测数据的差异。比如,屏蔽网页代码中的关键字“ga.js”,那么就会造成对Google Analytics的屏蔽。又比如,某浏览器禁止运行网页中的JavaScript,那么代码嵌入式监测工具将会全部失效。
-
网络访问类型
现在上网方式多样化,除了电脑上网外,用户还可以用Wii上网,可以用手机或其它手持终端上网。这些访问形式多种多样,可能是基于WAP的,可能是不支持Cookie的浏览器……不同的监测工具,对这些多种多样访问形式的支持是不尽相同。现阶段,个人观点认为Omniture在这方面最为先进,支持的访问形式最多。
另外,搜索引擎的蜘蛛,或者一些特别网站发起的请求也会造成对页面的访问。一般的监测工具都会忽略掉这一块的流量。
-
网络传输影响
最后,我能想到的另外一种可能是网络传输过程中的差错,如网络丢包。还有一种情况,URL太长导致参数被截断的情况也并不少见。微软的权威解释,IE的url最大长度是2083个字节,可以用于GET传递数据的长度是2048个字节。
- 文章转载自http://www.chinawebanalytics.cn/?p=884#more-884
- 作者说的比较全面,补充一点:JS方式的统计永远是少于实际流量的,毕竟会有很多访客只看了页面的一部分,甚至于刚打开页面就关掉了,而JS统计代码通常是部署于页面下部的。
-
