在线统计 vs 日志分析 ( Page Tagging vs Log Analysis )

网站流量分析(Web Analytics)的工具分为两大类, 一类是以Google Analytics为代表的在线统计系统, 英文称Page tagging。国内的武林榜,51yes,国外的Hitbox, Nielsen NetRatings, OneStat 都属于此类。这一类的重要特点是,分析时需要在里页面嵌入代码,这也是Page Tagging这个词的由来。 另一类就是日志分析,英文称Log Analysis, 特指web服务器的日志分析就是Web Log AnalysisNihuo Web Log Analyzer, awstats, analog 都属此类,这一类的特点是不用在页面嵌入代码,而是靠分析web 服务器产生的日志来生成统计报表。

经常有人问起这两种方法哪个更好,解释次数多了,自己都烦了,现在在这里统一回答一下。涉及到两类产品的比较时,就分别以Google Analytics( http://www.google.com/analytics/ )和Nihuo Web Log Analyzer( http://www.loganalyzer.net/ )为例了。

网站流量分析机制的差异

在线网站流量统计(Page tagging)的实现机制

Google Analytics需要在所有需要统计的页面中插入如下的Java Script统计代码,只有插入了代码的页面才能被统计,


这段Java script做的工作如下:

  • 判断用户是不是第一次访问这个网站。它是通过cookie来判断, 如果特定Cookie不存在它就会认为是新用户,它会种一个用户标识的cookie,并在cookie中记录下用户第一次访问时的Refrrer,即来源网站。 如果是从搜索引擎过来的,它还会分离出用户搜索用的关键词并记录下来
  • 判断用户是不是新的访问(New Visit),并获取当前浏览的页面URL,标题,Referrer(来源网址),客户端信息(如屏幕分辨率,语言,flash版本,是否支持java )
  • 创建一个image对象,调用http://www.google-analytics.com/__utm.gif,把上面所有的信息作为图像文件的参数传回去。这个图像文件其实就是1个像素的gif文件,而且这个像素还是透明的,在页面中是看不到的。

其他的在线统计系统与Google Analytic有些细微的差别, 比如Nielsen NetRatings要求嵌入的javascript代码中还包含有如下代码:

这确保了在javascript被禁止的客户端,用户的访问也能被统计。当然,这种情况下能统计的信息很有限了。关于这些在线系统实现方法上的一些细微差别做过专门研究,说起来就很长了,哪天有时间会单独写个文章讲这个话题。

日志分析(Web Log Analysis)的实现机制

Web服务器在工作时会把所有用户发过来的请求和相应情况记录在文件里,这个文件就是日志文件。下面就是从http://www.loganalyzer.net/log-analysis-tutorial/log-file-sample-explain.html 找到的一行日志:

111.111.111.111 – – [08/Oct/2007:11:17:55 -0400] “GET /support.html HTTP/1.1” 200 10801 “http://www.google.com/search?q=log+analyzer&ie=utf-8&oe=utf-8 &aq=t&rls=org.mozilla:en-US:official&client=firefox-a” “Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7”

在这一行里包含了客户端IP(111.111.111.111),时间([08/Oct/2007:11:17:55 -0400] ),请求方法(Get),请求文件(/support.html ),HTTP协议版本(HTTP/1.1),返回状态码(200,表示成功),文件大小(10801 ),Referrer信息(”http://www.google.com/search?q=log+analyzer&ie=utf-8&oe=utf-8 &aq=t&rls=org.mozilla:en-US:official&client=firefox-a”),Agent信息”Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7″)。具体如何详细解读日志会另文阐述,在这里只是展示一下日志中都包含什么信息。

Nihuo Web Log Analyzer就是靠读入日志文件在本地进行统计计算而得出最终报表的。在大部分Web日志文件中,都是靠IP来判断访问者。Nihuo Web Log Analyzer也可以通过Cookie识别用户,但需要在日志中首先输出Cookie信息。

在线统计日志分析的优缺点比较

上面费比较多的笔墨说两者的实现机制,就是为了大家能更好理解这一段,因为两种方法的优缺点都是由他们的实现机制决定的。

在线网站流量统计(Page tagging)的优点

  • 通过Cookie识别访问者,比依靠IP识别要更准确。因为通过IP识别用户在遇到很多用户通过代理服务器(比如网吧)时就会不准确。而且当用户过几天后再访问时,通过Cookie能很好的识别这是已经来过的用户。而日志分析以IP识别用户时,因为用户每次上网拨号可能会被动态分配不同的IP,就会比较难准确判断返回用户。
  • 能通过javascript搜集到一些通过日志不能搜集到的客户端信息,屏幕分辨率,语言,flash版本,是否支持java 等
  • 使用方便,只要在所有页面插入了统计代码,以后每次直接看报表即可
  • 可以做第三方统计, 比如你在blogspot.com开了一个blog,而blogspot是不可能把他们的web日志提供给你的,这时候没有别的选择,只能是用在线统计系统。

在线网站流量统计(Page tagging)的缺点

  • 当客户端禁止Javascript或禁止Cookie时,都会影响统计结果,要么是完全统计不到,要么是出现错误的统计
  • 存在一定误差,因为在线统计是通过javascript把客户端信息搜集起来再传回服务器实现统计,有时因为网络的延迟,会出现没有统计到的情况。而且和页面的载入速度也有关系,把代码加在页面代码顶部或尾部统计结果都是会有差异的。
  • 不能统计用户对图像,视频,音频等文件的访问,因为这些文件不能插入统计代码
  • 不能统计带宽信息
  • 统计信息被第三方掌握,有安全上的危险

日志分析(Web Log Analysis)的优点

  • 没有网络延迟的问题,统计准确
  • 可以统计网络蜘蛛(spider ,bot)的访问,这对于做SEO比较重要
  • 能够统计非页面文件,如图像,flash文件等等
  • 客户端禁止了Javascript和Cookie也不影响统计的结果
  • 能够采用丰富的过滤器(Filter)进行数据挖掘(Data mining),可以从多角度分析网站流量和用户的访问行为。一些在线统计也支持Filter, 比如Google Analytics,但是一旦应用过滤器最终数据就被改变,原始数据是找不回来的。
  • 可以多域名的日志放在一起分析,在线统计系统对用户的标识是基于Cookie的,而Cookie是不能跨域名的,在这方面日志分析有天然的优势。
  • 安全,分析数据是由你自己掌握的

日志分析(Web Log Analysis)的缺点

  • 使用比较麻烦,每次要分析日志,而且有的还要配置web服务器以输出合适的日志。
  • 用IP追踪用户不如Cookie准确。 不过这个问题可以通过在Web服务器上添加插件或模块来解决。Apache需要添加mod_usertrack模块,并在日志中输出cookie信息。IIS可以装ISAPI的插件(自己用VC6写了一个,可以从http://www.doyj.com/downloads/cookiefilter.dll 下载,不过这个当时只是写来测试的,出了什么问题可别怪我 )。也可通过javascript,php,asp等语言给客户端种植cookie,这讲起来就长了,大家可以google相关资料看看。
  • 搜集的客户端信息不如Page Tagging丰富,象flash版本,是否安装java之类从日志是看不出来的
  • 日志的存储管理也是挺头痛的事,尤其是当每天都产生几十G日志的时候。

经常有人问这两种方式哪个更好,应该选择哪种,这让我很难回答。 因为这两种方式都各有所长各有所短,只用一种方法很难准确完整的了解网站流量的的全貌,我自己做分析时两种工具都使用的,两个报告互相参考着看,也推荐大家采用这个方式。

注:这篇文章借鉴了一些 http://www.kichus.in/2006/09/23/log-file-analysis-page-tagging/ 的内容

网站流量分析 (Web analytics) 水平分级

记得自己最早的网站流量分析Web analytics) 是1997年左右的时候,当时网易开放40M免费个人网页空间的申请,自己也申请了一个,再去网上找了个免费的计数器挂上去。 然后每天看着计数器的跳动激动不已,其实一大半是自己刷出来的。这就算是最早的网站流量分析了吧。

开发日志分析软件这些年来,接触了不少国内的网站,对国内网站的流量分析有个大致的了解。下面据此对网站流量分析的水平划分出几个等级,大家可以对照看看自己属于哪个等级。

菜鸟级的网站流量分析 (No web analytics)

这个水平的就是什么统计分析都不做, 自己站点的访问量大约是什么数量级都不知道。对uv, pv, unique ip这些基础概念都一问三不知。一些个人站点这样还情有可原,可很多企业,政府网站居然也这样就说不过去了。

入门级的网站流量分析 (Junior web analytics)

到了这级已经知道了网站流量统计的基本概念,已经懂得在自己网页上插入武林榜( http://www.50bang.com ), 51yes ( http://count.51yes.com )之类的在线统计代码,或者隔三岔五看看虚拟主机用开源软件(比如awstat( http://awstats.sourceforge.net ), analog( http://www.analog.cx ), webalizer( http://www.mrunix.net/webalizer )) 分析出来的日志分析报表。这一级别的人知道光看pv不行,还要看uv和unique ip。 懂得看Referrer(来源网站)报表,研究Search Phrase(搜索关键词)报表。他们能根据看到的报告,及时调整自己网站的内容及经营策略。比如发现uv少了,就加大推广力度;发现搜索引擎过来的人少了,就做SEO;看地域统计报告,发现广东过来人少了,就赶紧安排一些针对广东的弹窗广告之类。国内的网站大都是这个级别。

高手级的网站流量分析 (Master of web analytics)

这个级别和入门级最重要的差别在于, 入门级的人关心有多少人到了自己的网站, 而高手级的人还懂得关心,甚至更关心:人们到自己的网站都干了什么。也就是说他们懂得用户行为分析 (Visitor behavior analysis) 的重要性。使用的工具中,国内那些简单的在线统计网站早就被剔除了,使用的是Google Analytics( http://www.google.com/analytics/ ),及收费的Nielsen NetRatings( http://www.nielsen-netratings.com/ )等在线统计系统, 同时还采用Nihuo Web Log Analyzer( http://www.loganalyzer.net/ )等专业的日志分析器,做到在线统计与日志分析相结合 。 他们分析的也不只是流量,而是包括网站内容,网站链接结构,SEO等多方面的数据;做的不再只是网站流量分析 (web traffic analytics) 而是进化成整体的网站分析 (web analytics)。他们关注用户的访问路径;关注每个关键词过来的流量在登录页面,Bounce rate弹出率),停留时间,访问路径等等指标上的细微不同;对一些重要页面进行单独的Tracking(跟踪),关注这些页面的每个细节; 他们还能熟练使用各种filter过滤器),能在几M到上百G的日志中进行数据挖掘工作,从中挖掘出有价值的数据;他们能轻易判断报表上反映的问题是技术问题,还是网页设计问题,还是网站推广问题。 他们的眼睛能透过报表上纷繁的数字,看到数字背后的真相。

专家级的网站流量分析 (Expert of web analytics)

专家级的人已经不满于现有的各种工具和指标,他们会针对自己的网站特点,提出一些很有针对性的新指标,他们会为自己的网站开发极有针对性的分析系统,甚至开发自己的日志系统。他们不只是看到数据背后的真相,而是会自己主动发掘新的数据,并把自己的网站变成数据驱动Data Driven)型的网站。网站的每个设计,每个推广活动,每个决策,不是拍脑子想出的结果,不是开无聊会议的结果,而都是有强大的分析数据来支持。 每个决策的效果又能及时统计分析,变成数据再反馈回来,让网站及时调整决策,乃至改进整个数据分析的流程和方法。

最高级 – 仙级的网站流量分析 (God of web analytics)

他们从专家级中走过来,从网站分析 (web analytics) 中看到的已不只是对过去的总结,还能从中能看到将来变化的趋势,并帮助网站提前把握这种趋势;他们不只是看自己网站的分析,还看竞争对手,同行业乃至整个互联网的情况,并根据掌握的这些情况对自己网站的流量做出更合理的分析解释,并做相应调整;他们有广博的知识,能把其他方面的知识应用到分析中来,了解社会及自然界发生的一些事情可能对网站流量的影响;他们对网站流量分析有着自己独到的见解;他们在公司里是传播分析思想与方法的中心人物;他们不只是对分析技术,而且对整个网站的机制和涉及到的技术都有深入的理解;他们是一个网站走向成功的重要保证。

国内这方面的水平还比较低。在国外很多公司在招专业的网站分析员Web analyst),而在国内的51job( http://www.51job.com )找不到这个职位的招聘。 国内很多网站把网站流量分析当作是网管附带的工作,不要说专职的部门,连专职的分析人员也没有。有时还不止是缺乏数据分析的问题,不少网站还热衷于制造数据,比如alexa( http://www.alexa.com )排名之类,对这些网站说重视数据分析,说从流量数据分析中挖掘出金矿无异于对牛弹琴。

但有理由对将来保持乐观,将来一个网站如果要成功,没有好的网站分析员是不可想象的。已经在国内见到有专家级甚至快成仙得道的大侠,见到过国内网站内部开发的超强统计分析系统,而且看到这样的大侠和这样有远见的网站有越来越多的趋势。国内将来不仅会有成批专职的网站分析员,而且这个职业可能成为下一个热门高薪职业。 登陆Google Analytics( http://www.google.com/analytics/ )的时候会看到有Analytic Authorized Consultant的标志,全世界已经有了很多获得这个认证的分析顾问( http://www.google.com/analytics/support_partner_provided.html ),其中中国已经有了一家,相信会越来越多。

终于准确知道顾客是从哪里来的了

说顾客从哪里来,不是指顾客居住的地理位置, 而是指顾客找到我的产品,我的网站的方式。 最终付费的顾客是通过搜索引擎找到的,还是通过在哪个站点投放的广告, 还是通过adwords。这是我一直最关心的问题,也用了各种方法去分析,比如网页里插入Google Analytic的统计代码,用web log analyzer 分析自己网站的日志,但因为自己的共享软件是通过regsoft, regnow等注册服务提供商来完成,当用户最终确认付款时,已经离开了我的软件站点页面,Google Analytic和日志都不能确认这个用户是否付款。 很多时候把钱扔到各种推广方式上,但对每种推广方式能有什么具体效果则心里一点数也没有,只要月底一算账收入增长了,就觉得推广的方式还是有用。 如果下降了, 就不管有用没用,所有推广方式全给砍掉。

前天痛感这种状态不能再继续,于是自己修改了一下google analytic的代码来实现对顾客来源的跟踪。 Google Analytic会在客户端种植几个cookie,最有用的是__utmz, 记录了用户的来源信息,通过搜索引擎过来的用户还能找出关键词。但有个问题是,不能区分正常搜索结果过来的用户和通过adwords广告过来的用户。 这就需要自己做点工作了。

1.adwords广告的目标url设置特殊参数, 我就设定为 /index.html?ref=adwords

2.在index.html加入如下javascript代码 ,种植_isadwords cookie


var _isadwords;

_isadwords= _uGC(document.cookie, ‘_isadwords=’, ‘;’);

//判断是否cookie中已经存在isadwords字段,如果不存在就设置此字段
if( !_isadwords|| _isadwords== “-” )
{

//判断是不是adwords过来的用户
if( window.location.href.indexOf( “/index.html?ref=adwords ” ) > 0 )
_isadwords= “1” ;
else
_isadwords= “0” ;

document.cookie=”_isadwords=”+_isadwords+ “; expires=” + _uNx()+”;”;
}


这其中 _uGC()和_uNx()都是google analytic 的 script中提供的函数。_uGC()是在第一个参数中寻找以第二个参数开头,第三个参数结尾的子串。 _uNx()则是返回当前时间一年以后的时间,用做cookie的过期时间。

种下了cookie,剩下的问题就是怎么读出来了。先下载http://www.doyj.com/images/a.gif, 上载到你的站点图像目录里。 a.gif是一个只有一个透明像素的gif图像文件。然后在产品购买页面嵌入如下代码:

var _urefgifpath=”http://www.doyj.com/images/a.gif”; //这里要换成你的图像链接

var zx = _uGC(document.cookie, ‘__utmz=’, ‘;’); //取出__utmz cookie
var _isadwords=_uGC(document.cookie, ‘_isadwords=’, ‘;’);

var i3=new Image(1,1);
i3.src=_urefgifpath+”?”+”utmz=” + zx + “_isadwords=” + _isadwords + “&utmn=”+_uu;
i3.onload=function() { _uVoid(); }

代码中的_uu是google analytic中生成的一个随机数,=Math.round(Math.random()*2147483647);, 这是为了保证每次url都是不一样,客户端不会缓存对这个图像文件的访问。代码中的_uVoid()也是google analytic中的一个空函数。

这段代码其实就是new 出一个图像文件, 把cookie信息做为这个图像的参数返回给服务器,这样在日志中就会留下用户的cookie信息。因为这个图像文件是一个透明像素,并且是在javascript中new出来的,所以在页面中是不可见的。

因为在订单中有用户的ip, 每收到一个订单, 就可以去日志中去查找这个ip, 再查找这个ip访问a.gif时留下的参数,就能知道这个用户从哪里过来的了。

后记:写在这里的方法已经比我当时采用的方法又改进了一些, 当初想的方法,那是…………相当的蠢。 改进后的方法依然不好,还要去看日志文件,很麻烦,但至少实现了追踪用户来源的功能。方法还有很多改进余地,我这是抛砖引玉,先提出这么个思路,欢迎大家指正。

购买流量总结

上个星期翻到一些帖子说起购买流量的事,就去google搜了几个站看了看,看着也花不了多少钱,就先找两个便宜的试了试,一个是 needhits.net, 一个是buyhitscheap.com。

这两天分析了一下从他们来的流量,虽然还没完全结束,但已然有些心得。国内这方面有经验的人应该不少,轮不到我来分享经验,不过看大牛们似乎很忙,很少有空分享,我这菜鸟就出来抛砖引玉了。
1. 买的都是专门针对美国的流量,这两边来的流量ip分布都比较广,分析出的结果绝大部分都是美国,这点还满意。

2. 在needhits购买流量时,可以指定只要从美国过来的特定种类人群的流量。当时购买了和自己产品密切相关的分类,可是从它那里过来的流量,一般只访问完首页就走了, 首页的bounce rate达到99.73% ( 正常情况下首页的boun rate为30%左右), 更奇怪的是剩下的那0.27%, 访问路径几乎一致, 都没有查看订购或下载页面. 而且时间的访问分布曲线也非常奇怪,没有一般凌晨访问很少的情况,波动范围不大(如下图)。
image

3. Buyhitscheap过来的流量,首页的bounrate在46.28%,时间部分曲线看着貌似正常(如下图):

image

但有意思的来了,从Buyhitscheap过来的流量,来回就访问三个页面文件,访问路径都特别相似,而且这三个文件都不是下载或购买页面。其中有个是sitemap页面,这在正常的访问中只有1.12%的人会去访问,但在Buyhitscheap过来流量中,居然有25.28%的人访问。

总结:从统计来看,这两处购买的流量都完全没有用,而且很有骗子的嫌疑。

不对之处请大牛们多指正,如有其他可信的流量购买,还请不吝相告。

另:损失了40美刀,简直五内俱焚,心痛莫名,正在努力工作争取早日挣回这40美刀。有谁要请吃烧烤别忘了叫上我,现正需要烤肉来抚慰我受伤的心灵。