为什么两个监测工具报告中的数据不同

  经常有客户对数据特别较真,总要问分析师这种问题:

同样的时间区间,为什么两种监测工具报告中的数据不同?

  这个问题我从来不会回避,因为认真地回答这个问题不仅可以体现分析师的专业性,而且能巩固监测工具在客户心目中的“公正客观”的地位。

  但话说回来,这却是一个很难回答的问题,要回答得全面而且通俗并不容易。

  • 因为技术日新月异,影响数据差异的因素会越来越多,使得无法全面。
  • 因为有些因素需要详细的技术说明,使得很难说得通俗。

  本文,希望用全面而通俗的文字回答这个问题,希望成为网站分析领域回答这个问题的标准范本。(媒介监测领域也有该问题,在此文不作说明)

  1. 监测工具原理(Tracking Tools Methodology)不同。

    • 数据获取方式不同。

        服务器日志分析工具,是通过解析服务器日志进行网站访问数据获取。如AWStats扫地老僧做的Nihuo
      代码嵌入分析工具,是通过在网页中加入Javascript代码,运行后向监测工具服务器发送带请求,服务器从而获取访问数据。如Google Analytics,Omniture。
      后者现在业界更为常见,两者的数据获取方式不同会造成统计数据的差异。比如:

        访问者输入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的访问。不同的监测工具也有类似的功能。这些功能一旦开启,设置的不同也会造成数据的差异。

  2. 监测代码部署(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之间,有函数名、变量名等的冲突,会造成监测代码的失效,或者监测不准。

    • 监测代码的正确性与完整性。

        专业的网站分析过程中对监测代码进行定制是必不可少的,代码的定制会造成统计结果的个性化,但同时也会有定制出错的风险。这些情况的发生,会造成监测数据的差异。

  3. 用户端设置(Client – End Settings)不同。

    • 浏览器功能设置

        浏览器种类很多,功能也不尽相同。但都具有基本的Cookie屏蔽功能,有的还支持图片、Flash、JavaScript的屏蔽功能,甚至还有的能对网页代码的关键字进行屏蔽。这些屏蔽技术的应用,会造成监测数据的差异。比如,屏蔽网页代码中的关键字“ga.js”,那么就会造成对Google Analytics的屏蔽。又比如,某浏览器禁止运行网页中的JavaScript,那么代码嵌入式监测工具将会全部失效。

    • 网络访问类型

        现在上网方式多样化,除了电脑上网外,用户还可以用Wii上网,可以用手机或其它手持终端上网。这些访问形式多种多样,可能是基于WAP的,可能是不支持Cookie的浏览器……不同的监测工具,对这些多种多样访问形式的支持是不尽相同。现阶段,个人观点认为Omniture在这方面最为先进,支持的访问形式最多。

        另外,搜索引擎的蜘蛛,或者一些特别网站发起的请求也会造成对页面的访问。一般的监测工具都会忽略掉这一块的流量。

    • 网络传输影响

        最后,我能想到的另外一种可能是网络传输过程中的差错,如网络丢包。还有一种情况,URL太长导致参数被截断的情况也并不少见。微软的权威解释,IE的url最大长度是2083个字节,可以用于GET传递数据的长度是2048个字节。

  有我没有考虑的情况么?我写错或理解错误了哪个地方么?欢迎留言,或者邮件给我讨论完善此文:tenlywu邮标gmail.com。

  另外发个广告,我又重操旧业,写写博客了www.ectend.com。由于宋星的博客有专业定位,文章主题统一,且读者对技术层面的讨论相对较少,非网站分析主题的文章和网站分析偏技术研究的文章就只在自己的博客上发表了(因为网站分析只是我染指的其中一个领域)。毕竟自己的博客写起来比较随意,给宋星写博客对文章质量要求特别高,很累的。

未经允许不得转载:版权归宋星及chinawebanalytics.cn所有宋星的数字观 » 为什么两个监测工具报告中的数据不同
分享到: 更多 (0)

评论 20

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #-49

    很详细,有收获!

    博译论15年前 (2009-08-29)回复
  2. #-48

    非常全面的一篇分析。

    典型的例子是,GA的Unique Visitor和Omniture的UV的定义并没有太大的差别,但是在对待cookie和禁用cookie的visitor上,这两个工具就有不同,所以数据有明显差异。

    很多细小的东西都会影响工具之间的数据一致性。我的建议是,什么工具都可以,请分析趋势,而不要单纯的解读数据。

    谢谢Tenly。

    Sidney Song15年前 (2009-08-29)回复
  3. #-47

    很高兴看到Tenly有重新写起Blog分享他的知识与经验。既然“重操旧业”就很期待在一个相当长的阶段能经常看到你的文章。

    Allan Meng15年前 (2009-08-30)回复
  4. #-46

    写的很系统,很详细,很有说服力。

    Kevin15年前 (2009-09-01)回复
  5. #-45

    为人民服务.呵呵

    Tenly15年前 (2009-09-01)回复
  6. #-44

    学习并支持博主!

    sophilin15年前 (2009-09-01)回复
  7. #-43

    很不错的文章。数据只是做为优化决策的依据。现在网站分析工具可以获取很多的用户行为数据,我们不缺数据,问题在于如何去挖掘对改善网站目标转换有效的数据。

    david.wu15年前 (2009-09-04)回复
    • 对。在中国有客户存在一种不良习惯,喜欢单纯的看数,这就让分析师比较郁闷。

      Tenly15年前 (2009-09-04)回复
  8. #-42

    Tenly,

    “我们知道Google Analytics有丰富的过滤功能,如过滤某个IP段,过滤操作系统为Linux的访问”,对这句话不解,GA里面有对Linux系统的展示啊~

    阿石15年前 (2009-09-05)回复
    • 点击:Create New Filter;
      Filter Type:选Custom Filter;
      选择Exclude;
      Filter Field: 选Visitor Operating System Platform
      Filter Pattern 输入Linux

      Tenly15年前 (2009-09-05)回复
  9. #-41

    网络带宽、服务器性能、统计架构,程序设计都是影响因素。

    jieyancai15年前 (2010-02-20)回复
  10. #-40

    GA的数据有时会出现在同一时间段内Unique Visitor比Visit的情况,可能是是什么原因呢?

    manyinjin15年前 (2010-04-08)回复
  11. #-39

    很深奥!看不大懂!

    stormtea15年前 (2010-04-29)回复