JavaScript和Cookie对GA的影响有多大?

【导言】我们都知道Google Analytics监测代码在客户端的正常运行依赖于两个技术设置,其一是客户端浏览器要允许JavaScript执行,其二是浏览器要能够允许创建cookie。不过,JavaScript和cookie在客户端被禁用的情况屡见不鲜,这种情况有多常见?对Google Analytics的监测影响有多大?本文讨论这个问题。本文的英文版请见:How much influence of JavaScript and Cookie disabled to Web Analytics?

【正文】

  Sidney给大家拜年了!祝大家虎年事业虎虎生风!家庭虎虎生气!身体虎虎生威!

  过年前后有不少收获,先是Karen邀请看了赖声川的《宝岛一村》,笑中带泪,很娱乐,也很让人感动唏嘘,谢谢Karen!然后弄了一台投影仪在家里放起了电影,效果相当惊人。再然后是跟自己的外公外婆用Skype视频聊天庆祝新年,虽隔千里之外却如咫尺之间,不得不感慨互联网对生活带来的无比益处。最后是无意间发现了一个很不错的国内的网站监测工具,就是我们这个文章要提到的。对了,还看了一个电影,乔治·克鲁尼的《在云端》,很喜欢。

  另外,和朋友合作的另一个博客:www.soloists.org也搭建好了,只等内容。这是个开放的博客,给文艺青年的,以后我会做专门的介绍,欢迎任何感兴趣的朋友加入我们。

  好了,跟大家分享了过年的乐趣,言归正题,你们有被问过JavaScript和Cookie对网站分析监测的影响吗?这是一个容易被忽略的问题,但有时候也容易被放大,被误认为是网站分析的“软肋”,或是认为它们会影响Google Analytics数据的准确性(关于网站分析数据的准确性的讨论,请看我的这篇文章:网站分析——我们的数据准确吗?)。现在我们看看它们到底如何影响网站分析的数据,影响程度又如何。

[版权归Sidney Song(宋星)所有,欢迎转载,但请事先告知作者并注明出处]

  • 禁用JavaScript的影响

  在页面中加入JavaScript代码是利用页面标记法做网站分析的最主流方法。监测代码如同图中红色的一小块,实际上是一段可以被浏览器执行的JavaScript程序语句,放在页面的HTML源文件中。这样,当页面被下载到客户端的浏览器的时候,这段页面标记JavaScript程序就会被执行,如同星际争霸中的寄生虫上身,或是摄像头被打开,开始记录数据。

JavaScript-for-WA

图:JavaScript对于网站分析具有重要的作用

  页面标记的JavaScript代码被执行之后,就会如实的把访问者在页面上的互动访问行为不间断的发送给这个页面标记所对应的网站分析工具的服务器,这与摄像头把拍摄到的图像传送给图像存储服务器是完全一样的。网站分析工具服务器收到数据后,会进一步处理这些数据,并且把数据翻译成人们能够阅读和分析的图形、表格以及数据文件,然后呈现在一个漂亮的用户界面上。

  目前,中国大约有5%左右的客户端浏览器禁用JavaScript,这些浏览器访问页面的数据全部或者一部分不能被采用页面标记法的工具所获取。值得安慰的是,5%并不是一个很大的比例,而且浏览器禁用JavaScript的比例其实逐年在下降,这一方面是因为越来越多的客户端应用需要JavaScript的支持,另一方面是因为互联网从一个“学院派”的工具,越来越成为普罗大众的日常工具,而越是普通用户越不会去禁用JavaScript。

  下图显示了全球浏览器用户JavaScript禁用比例逐年下降的趋势。

image

图:w3schools的数据表明了JavaScript被禁用的情况逐年下降

[版权归Sidney Song(宋星)所有,欢迎转载,但请事先告知作者并注明出处]

image

图:Dennis R. Mortensen的数据也说明了类似的情况

  那么中国的情况怎么样呢?

image  我在互联网找了很久,但是没有发现非常权威的数据,仅有的数据有很大的差异,但是很幸运的是我找到了一个工具:JYC统计。这是一个很好的工具,有很多Google Analytics不具备的功能,提供免费的7天试用,大家可以试试。这里要用到的是他们提供的客户端参数分析报告,如左图。

  在这个分析报告中,JYC统计提供了JavaScript状态的统计,以及cookie状态统计,是研究我们这个课题会用到的。

  Google Analytics里面是不能对客户端的JavaScript状态进行统计的,不过这个工具做了很好的补充。

  我用我自己的博客http://www.chinawebanalytics.cn做实验,我相信这个博客的用户都具有相当不错互联网知识和浏览器使用技能。所以,假定关注我博客的读者的浏览器禁用JavaScript的比例要略大于全国网民的平均水平。7天的数据揭晓,不太令人吃惊。如下图:

image

图:3.58%的JavaScript禁用比例

  JavaScript被禁用的比例仅有3.58%,我以为会有5%。这个数据让我觉得愉悦,越低的JavaScript禁用,会有更准确的Google Analytics监测数据。不过,数据样本本身有点儿少,春节7天上网的朋友大大减少了,因此这个数据存在被继续修正的余地。但我相信,我们国家网友禁用JavaScript的比例应该不会超过5%。

[版权归Sidney Song(宋星)所有,欢迎转载,但请事先告知作者并注明出处]

  JavaScript被禁用统计的另一个作用在于,帮助网站设计者了解有多少用户无法使用使用页面上的JavaScript互动。所以这个统计功能实际上是很有意义的。

  • 禁用Cookie的影响

  大多数的网站分析工具需要通过cookie来辨识独立访问者,例如Google Analytics利用的是第一方cookie。

  尽管有些网站分析工具能够在cookie被禁用时利用访问者的IP地址来辨识访问者,但Google Analytics在cookie禁用的时候不工作,所以cookie对GA是必须的。

  网站分析工具使用的cookie一般分为两种:第一方cookie(1st party cookie)和第三方cookie(3rd party cookie),使用第一方cookie是目前常用的方法,也是目前公认的最佳实现方式,而第三方cookie则被少部分页面标记法的工具所采用。

  无论是哪一种cookie,都存在被一定比例的浏览器默认禁用的情况。相对而言,第三方cookie被禁用的可能性更大,因为一部分的浏览器默认对第三方cookie有严格的限制,例如IE8。但是对于第一方cookie,大多数浏览器则比较接受,大部分浏览器都默认开放了第一方cookie,除非你手动把浏览器的安全级别提高,第一方cookie才会被禁用。这也是为什么第一方cookie更加适用于页面标记法网站分析工具的原因。

image

图:IE8默认的安全级别是中级,对第一方cookie没有太多限制,但对第三方cookie有很严格的限制

[版权归Sidney Song(宋星)所有,欢迎转载,但请事先告知作者并注明出处]

image

图:Firefox3.5默认接受第三方cookie

  关于有多少比例的第三方cookie被禁用,业界很难找到统一口径的数据。IAB(Interactive Advertising Bureau,互动广告局:http://www.iab.net)在2006年的研究表明,大约有12%左右的互联网用户会禁用第三方cookie,而DoubleClick在2009年则认为大约只有不到7%的用户禁用第三方cookie(DoubleClick数据仍需验证,Sidney注)。

  相对于第三方cookie的境遇,第一方cookie被禁用的情况不普遍。我博客的读者中大概只有不到1%禁用了第一方cookie,而总体看一般只有不到5%的互联网用户禁用了第一方cookie。因此采用第一方cookie记录网站分析数据的页面标记法工具相对只会损失非常少的数据。

  下图显示了JYC统计记录的我的博客www.chinawebanalytics.cn的读者浏览器cookie(第一方)被禁用的情况:

image

图:只有不到0.5%的第一方cookie禁用比例

  这个数据可以说是大大出乎我的意料,我原以为大概有5%的用户会禁用第一方cookie。在国外这个数据应该会高不少,在国内这么低的原因可能是互联网用户不认为cookie会侵犯他们的隐私或者会带来安全隐患。当然,这个数据只是我的博客的,如果考虑到国内相当的互联网用户是在网吧内上网,cookie禁用的比例肯定会提高。

  不过总体看来,第一方cookie问题在国内对网站分析构成的威胁很小。第三方cookie因为IE的默认限制,肯定会有更多的禁用,因此使用第一方cookie进行网站数据的记录更保险,也更准确。

[版权归Sidney Song(宋星)所有,欢迎转载,但请事先告知作者并注明出处]

  • 删除cookie的影响

   用户删除cookie是另一种影响网站分析数据监测且无法避免的问题。与cookie被禁用的情况相反,用户删除cookie一般会造成访问者计数的偏大。用户删除cookie的原因主要是为清空浏览器的记录,或者是出于保护自己的隐私的目的。

  用户删除cookie的比例和频率也存在颇多争议,JupiterResearch在2005年研究认为有40%的互联网用户会在一个月内至少删除一次cookie,而2007年ComScore的数据认为这一数据为31%(http://www.liesdamnedlies.com/2007/06/more-on-the-com.html)。这是一个非常令人吃惊的数字,也意味着因此而造成的一个月的独立访问者计数可能会偏大30%以上。

  随着PC硬件性能的提高,客观上会降低cookie被删除的比例,因为相当情况下cookie是随浏览器脱机文件被用户一起删除的,而更好的硬件会降低用户删除脱机文件的倾向。因此,与JavaScript被禁用的比例逐年减少类似,cookie被删除的比例也有随时间而降低的趋势。

[版权归Sidney Song(宋星)所有,欢迎转载,但请事先告知作者并注明出处]

  国内删除cookie的情况没有找到数据,很遗憾。有没有朋友能够提供或是给我提供一些线索?谢谢!

  总体看,JavaScript禁用和cookie禁用对目前我们使用Google Analytics进行监测影响非常小,但是cookie删除情况的影响相对较大。所以,更值得我们关注和研究的是cookie被删除的比例和频率,我会在未来继续对这一领域跟踪关注。

  谢谢大家!祝大家新年快乐!

未经允许不得转载:版权归宋星及chinawebanalytics.cn所有宋星的数字观 » JavaScript和Cookie对GA的影响有多大?
分享到: 更多 (0)

评论 30

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

    沙发

    水少爷14年前 (2010-02-20)回复
  2. #-48

    同时有一个关于GA的问题,Navigation Summary下查看exits,自从1月26日起,所有页面的%exits都变成0,不可能的数据。我在http://www.google.com/support/forum/p/Google+Analytics?hl=en也看到有人出现相同的问题:
    http://www.google.com/support/forum/p/Google+Analytics/thread?tid=167b14330fbb5606&hl=en
    http://www.google.com/support/forum/p/Google+Analytics/thread?tid=406d7a3568358154&hl=en
    Sidney Song,你有没有遇上相同的问题?

    水少爷14年前 (2010-02-20)回复
    • 我注意到了。很明显GA改变了Navigation Summary的算法,而且似乎这个算法和page的实际exit rate是矛盾的,看起来有明显的错误,比如我的博客的首页的entrances的比例竟然是0%。很奇怪,很奇怪。
      我需要问GA的国外服务人员。谢谢提问!

      Sidney Song14年前 (2010-02-20)回复
  3. #-47

    好文,又学到不少。 
    如果访问者中很多是网吧过来的那Cookie被删除的比率会相当高, 因为国内网吧很多都装有专门的管理软件,每当一个用户退出,换上另一个用户时,整个系统都会被恢复到初始状态。 
     
    影响GA精确度的还有其他问题,几年前听说一个公司的网站把GA代码放在页头和放在页尾统计数字相差30%, 这应该是网络延迟造成的。 

    扫地老僧14年前 (2010-02-20)回复
  4. #-46

    不得不佩服宋先生的文章功力,针对这个“国内删除cookie的情况没有找到数据,很遗憾”做一下补充:
    以IE内核的浏览器为例:现在国内的IE为内核的比如360se(还有很多比如sogou,tt,theword等)有设置“浏览记录清理配置”这样的功能,其中包括了cookie的清理,如果用户做了设置,那么只要浏览器关闭后,再打开COOKIE就不变化了。所以包括google统计/cnzz等这类统计都以cookie为标识唯一新访客的数量是不准确的。
    cookie删除比例和样本数关系也比较大,您可以查看你的邮件统计(JYC统计每天上午7:30发送每日统计简报到你的邮箱)中

    Cookie数
    独立用户数
    独立IP

    的比较就基本可以判断cookie的删除比例了。

    jieyancai14年前 (2010-02-20)回复
    • 谢谢评论!是的。如果用一些特殊的浏览器,或者用一些安全软件,cookie就会被清掉。我收到了邮件,数据很不错,很全面。我会补充到博客中。
      祝虎年快乐!

      Sidney Song14年前 (2010-02-21)回复
  5. #-45

    cookie值的变化不仅和浏览器中设置有关,而且和版本以及浏览器类型(firefox,chome,Safari,opera等)相关,以及一些意外情况。

    jieyancai14年前 (2010-02-20)回复
    • 最主要的还是因为代理服务器的原因,有很多电脑用一个IP上网,比如我们公司和各个公司。

      Sidney Song14年前 (2010-02-21)回复
  6. #-44

    看了一下JYC统计工具,做的不错。有一点比较好奇:JYC的页面停留时间不是两个页面访问的时间间隔,而是访客从打开页面到关闭页面的时间间隔。那位大虾知道他们是如何做到的?

    Kevin14年前 (2010-02-21)回复
    • 也想了解,JYC的同学能不能解释一下?

      Sidney Song14年前 (2010-02-21)回复
  7. #-43

    宋老师,虎年威武!
    我认为网吧cookie删除行为并不影响监测结果呃,反而是不删除会影响吧

    yuki14年前 (2010-02-21)回复
    • 恩,我相信其实是一半一半的。比如有一个一问题,如果一个人经常来上网怎么办呢?比如他每天来一次,这样UV会每次都增加,但其实还是他。

      Sidney Song14年前 (2010-02-21)回复
  8. #-42

    你好,Sidney,我是WA的从业者也是爱好者,同时又是您博客的忠实读者。不过我还是个菜鸟,这里真是个火花四射的地方,总会有很多收获有很多惊奇。我现在在一家广告代理公司,负责这里的数据工作。每天我都要向广告主提供日报,每周也会有周报,总感觉提供给客户的数据干巴巴的,既不丰富,也没有说服力。不知道Sidney能不能给一些建议。如果能提供一些模板就更好了!嘿嘿

    William14年前 (2010-02-21)回复
  9. #-41

    新年好 !
    Omniture SiteCatalyst  对应的报告中提供了 “Internet 平均数 %” 做为参考。应该比较有价值,其中:
    JavaScript 已启用 89.4%  禁用 10.6%(我这里国内客户的数据基本都低于3%)
    Cookie 已启用 84.2%  禁用2.3%(我这里国内客户的数据基本都低于10%) 未知13.5%(我这里国内客户的数据可以忽略不计)
     

    outash14年前 (2010-02-21)回复
  10. #-40

    to Kevin :
    kevin观察比较仔细,就像你所说:“JYC的页面停留时间不是两个页面访问的时间间隔,而是访客从打开页面到关闭页面的时间间隔。”
    google,cnzz等等这些统计都是以两个页面访问的时间间隔作为停留时间记录,这是非常不准确的。举个简单的例子(还有很多情况),如果广告页面就一个,那么停留时间永远无法记录。
    JYC的停留时间功能可以说是独一无二的,这也促成了其可以真正记录当前在线的访客都有哪些,可以和访客实时沟通,(JYC可以知道访客来去的确切时间,在线还是离线)。以及还有其它很多功能。

    具体的技术细节相对复杂些,不便细说,不论如何,它需要分常规情况和意外情况设计考虑,做到尽可能的准确。

    有兴趣合作可以联系http://www.adjyc.com,谢谢!

    jieyancai14年前 (2010-02-21)回复
  11. #-39

    我之前一直在找能提供JS和cookie设置情况的分析工具。GA中这两个都不提供。还有一种情况像扫地老僧说的。网吧和高校里的电脑都装了还原卡,每次启动后C盘都恢复初始设置。cookie也就随之清空了。这种情况下GA中的新访和回访报告就完全失效了。头痛啊。

    蓝鲸14年前 (2010-02-22)回复
  12. #-38

    本人WA初学者,看了宋老师的这篇文章,受益匪浅。同时也有一个相关问题请教:
    确认独立访问者的指标中有一个是访客的IP,现在有些ADSL用户和部分中小企业用户是通过动态IP地址来上网的,这样同一个用户在不同时间的IP地址可能是不同的,GA有什么样的策略来规避这种情况对辨别独立访问者准确度的干扰?

    Frank14年前 (2010-02-22)回复
    • GA使用第一方cookie来辨识visitor,因此不受IP的影响。

      Sidney Song14年前 (2010-02-22)回复
  13. #-37

    to Frank :
    目前最准确的做法应该是通过代理IP,内部IP以及cookie来共同确定(机器名(dns反向解析的结果)可忽略考虑)是否是一个独立用户,这样可以更准确的分析出访客的行为轨迹,经常的情况是访客的IP变化了,但cookie不变,当然如果cookie变了,但IP不一定变。
    而业界做得这点的就数JYC统计了,其他的统计比如google都是以单一指标作为参考,不够准确。

    jieyancai14年前 (2010-02-22)回复
  14. #-36

    JYC很早就听说了
    今天从Sidney的博客连接过到JYC,他们的在线客服(应该是开发团队成员)就问我:是不是宋,充分说明其监测能力。
    最牛的是,他直接和我说他能看到我在电脑上的输入文字,够汗阿!!
    显然是黑客出身!!!!!不过说老实话,监测永远要和隐私平衡。
    祝愿他们越来越好!

    yohuali14年前 (2010-02-22)回复
  15. #-35

    多谢宋老师好友Jieyangcai的回答。
    讨论一下,最坏的情况:用户是动态IP上网,并且有定期清理COOKIE的习惯(一天),这个时候分析系统获取的数据就不是准确了的吧?
    那么有没有可能采取:cookie+mac+ip三方确认的方式来确定独立访问者?相对于其他,mac地址被用户修改的可能性最小,也不可能被清理掉,所以我觉得更有利于确定独立访问者。
    同时,在一些公司局域网,采用cookie+mac的方式应该也可以解决动态IP带来的困扰了吧?
    麻烦宋老师再赐教~
    本人新手,对相关知识了解不深,有贻笑大方的地方还请多多包涵~

    Frank14年前 (2010-02-22)回复
  16. #-34

    cookie+mac的方式去做监测,也未必就是完美的。例如现在许多笔记本电脑都有多个网卡,无线网卡、以太网卡、甚至还有3G网卡。用户可能在不同的环境去使用不同的网卡,例如在咖啡厅使用WIFI无线网络,在家里就使用以太网卡,这时候通过JS去获取MAC的话,将会获得多份MAC地址。数据的监测也没有必要追求绝对的精确,我们只需要知道重要的基础流量数据、流量趋势数据、流量入口质量、KPI转换数据等等就足够了

    david.wu14年前 (2010-02-22)回复
  17. #-33

    mac通常确实可以认为是否是一台机器。当然hostid更可为准确。但由于安全警告的原因,客户端的mac(或hostid)是不可能用在统计系统中通过js获取的。所以如前面所说通过代理IP,内部IP以及cookie来共同确定一个独立用户是目前最精确的可行做法。而由于技术上的问题,除了JYC统计以外,google或其他统计都还不能用三者来共同确定。

    jieyancai14年前 (2010-02-22)回复
  18. #-32

    对于本文提到的禁用cookie和js对于ga的影响,觉得如此处理会easy些,
    1.多个工具共同使用,这个时候觉得基本的日志分析工具还是需要的,无论如何日志里面的访问记录总是存在的,虽然这个也不精确,而且工作量大,但是可以校准一些基本面的数据,比如访问量。2.数据累计,就是说累计较长时间段的数据,至少得发现数据的变化,这个得夸下GA,我们公司05年的数据还有和今天比对起来很有帮助。3.页面js判定工具,其实js的判定工具代码不复杂,在页面上加入若干特效计数器,如果禁用js的情况下可能无法查看有些页面的特效,由此必须点击其他的页面来查看,提醒客户打开js的方法(毕竟小白还是很多的)4.cookie嘛这个东西觉得还是无法见光的东东,safe360这种机构应该有相关的数据,因为他们的装机量可以看个比例数出来,觉得会手动清理cookie的人,要不就只有写段代码每次查看cookie的情况了,至少这个报告是一手的。而且全部是自己站点的用户。
    另外就是觉得对于绝对精确的判定每个用户几乎是不可能的,现在上网的工具很多:比如我就是手机+N770+笔记本+家里台式机+公司的台式机,如此的组合下,基本上是不可能获取访问的所有记录的,手机的浏览器Ucweb默认是禁用js的,n770也是禁用Js的,cookie清除也基本上是退出就清除了,而对于我而言基本上这两个设备大概能占用我近1/5的网上时间(上下班路上2个小时,外加空闲的1个小时),由此这部分访问无论是用什么样的工具可能都无法准确捕捉,而且我这样的用户对于目前的魔都而言不应该属于少数,看看一号线上一群拿着手机上ucweb的人能看出来。由此我的思路是这样的:不要从宽泛的用户下手,从已经能够转化的用户入手,比如从我的行业里面看,注册的用户可能就是有效的,其中部分有效的用户特点加以集中,从而改良现有用户的体验。而对于这部分用户由于已经注册,能使用的方法就很多了,比如各类的插件(忽然想到那些网游里面的外挂工具),这些数据对于改良用户体验可能是最有效的。

    Ben14年前 (2010-02-23)回复
  19. #-31

    获得每个页面的关闭时间可以通过js监测页面的onunload等事件来实现,前些天测试过,可行。

    不过这个也需要辩证的看,比如多标签浏览器,用户新窗口打开了一个页面,他的注意力已经去了第二页,但第一页并没有关闭,看完之后他先关了第二页,然后再关闭第一页完成这次浏览。这样得到第一页的浏览时间貌似也不太合理。

    且歌14年前 (2010-02-23)回复
  20. #-30

    comScore是通过在客户端安装软件来收集数据,所以用户删除cookie对其数据是毫无影响的,其写白皮书指出用户cookie删除比例高,其实暗指基于cookie的统计工具误差高,这个数据是通过用户调查问卷获得的,准确性值得怀疑。
    虽然国内没有数据支持,但是我认为国内禁用和删除cookie的比例都非常非常低,可以忽略不计。至于网吧,每次有新用户登录系统重启就清空cookie,基于cookie的统计对这个是没有办法,即使是仿照comScore模式在网吧终端安装软件抓取数据的中国国内公司-comRatings虽然不受cookie的影响,但也无法识别同一用户在不同网吧的多次上网。

    SQ14年前 (2010-02-25)回复
  21. #-29

    您好!发现google analytics的自定义报告中出现“唯一身份访问者”这个指标,之前是不能看网站每个网页的唯一身份访问者个数的,现在有了这个指标就可以了???多谢赐教

    tilili200014年前 (2010-03-26)回复
  22. #-28

    正在找这方面的。学习一下先。谢了。

    珠海育儿网14年前 (2010-08-30)回复
  23. #-27

    删除cookie,我觉得有以下几个原因:
    1.重装系统。有一种人得了软件洁癖症,基本上一个月内必须重装一次系统。反正我有一个阶段就是这样。
    2.网吧系统还原。
    3.各种辅助工具(如XX卫士,XX助手),帮助用户清理了。用户可能并不知道干了什么。

    upstar13年前 (2011-05-20)回复
  24. #-26

    删除cookie,我觉得这个数据会越来越大,因为XX卫士的市场占有率越来越高,清理COOKIE的时间成本越来越低。

    一文鱼13年前 (2011-07-12)回复