[apache]: 使用mod_usertrack跟踪用户


使用StatViz跟踪“用户”点击中,唯一用户缺省是根据同一个IP定义的,就是假设来自同一个IP的为同一个用户,这样定义对于访问量较低的站点可能这样定义没有问题,但是对于访问量较大的站点,来自同一个IP后面有多个用户(比如代理服务器)就不一样了。而同一个用户在不同的时间可能使用不同的IP地址在线。对于这样的情况,要长期跟踪用户行为:使用一个长期有效的Cookie进行用户跟踪是一个比较简便途径。

Apache本身带有一个mod_usertrack模块:其原理就是在用户首次来到当前网站的时候给用户种下一个唯一的cookie(较长时间过期),这个cookie是用户首次来当前网站的IP地址加上一个随机字符串组成的。
1.2.3.4 ... 1.2.3.4.1111 用户1
1.2.3.4 ... 1.2.3.4.2222 用户2
1.2.3.4 ... 1.2.3.4.3333 用户3
第2天,即使用户换了IP,
1.2.1.2 ... 1.2.3.4.1111 用户1

具体的配置方法如下:
1 启用mod_usertrack模块:
LoadModule usertrack_module libexec/mod_usertrack.so
AddModule mod_usertrack.c

2 针对一个域名启用CookieTracking
CookieTracking on
CookieDomain .chedong.com
CookieExpires "10 years"
CookieStyle Cookie

3 mod_usertrack的记录: 在日志最后增加%{cookie}n字段
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{cookie}n" combined

启用mod_usertrack后的日志样例:
202.160.180.61 - - [30/Nov/2005:17:38:44 +0800] "GET /phpMan.php/man/HTML::AsSubs/3pm HTTP/1.0" 200 4911 "-" "Mozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html)" 202.160.180.61.227021133343524377
218.249.22.70 - - [30/Nov/2005:17:38:45 +0800] "GET /referer.js HTTP/1.0" 200 26254 "http://bietile.bokee.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" 218.249.22.70.11531133343525235
202.160.180.61 - - [30/Nov/2005:17:38:48 +0800] "GET /phpMan.php/man/File::CheckTree/3pm HTTP/1.0" 200 4654 "-" "Mozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html)" 202.160.180.61.222451133343528428

然后在StatViz中设置改用最后一个Cookie字段作为唯一用户的跟踪,这样的独立用户会话统计就更准确了:
; Column 0 is the first column -- by default this is the "combined" apache log format, but of course you can customize
LogSessIDColumn=10
...

附:设置了CookieTracking后的页面http header的变化 wget -s http://www.chedong.com/
HTTP/1.1 200 OK
Date: Wed, 30 Nov 2005 09:40:16 GMT
Server: Apache/1.3.34 (Unix) mod_gzip/1.3.26.1a PHP/4.4.0
Set-Cookie2: Apache=211.152.33.116.161891133343616145; path=/; max-age=36000; domain=.chedong.com; version=1
Cache-Control: max-age=7200
Expires: Wed, 30 Nov 2005 10:40:16 GMT
X-Powered-By: PHP/4.4.0
Last-Modified: Wed, 30 Nov 2005 09:40:16 GMT
Connection: close
Content-Type: text/html




....

有了这个cookie,对于跟踪用户的粘度非常有用,可以知道用户什么时候首次来访,每个月之间用户的重叠度,结合一些其他特征:比如referer,还可以跟踪特定一批用户来到当前网站后的流失速度等……


参考文档:
以插件模式安装apache:Apache安装
Apache的mod_usertrack配置指南

2005-12-01 后记
hedong今天忽然跟我说:发现按照我的配置Cookie的值不稳定,我检查了一下:
tail -f chedong_access_log.20051201 |grep 218.249.9.2(这个是我的IP)
然后访问www.chedong.com并浏览,发现日志后面的cookie值果然是变化的……

重新试了一下 CookieStyle Cookie
结果就好多了:
HTTP/1.1 200 OK
Date: Thu, 01 Dec 2005 07:58:35 GMT
Server: Apache/1.3.34 (Unix) mod_gzip/1.3.26.1a PHP/4.4.0
Set-Cookie: chedong=211.152.33.116.216801133423915949; path=/; max-age=315360000; domain=.chedong.com
Cache-Control: max-age=7200
Expires: Thu, 01 Dec 2005 08:58:35 GMT
X-Powered-By: PHP/4.4.0
Last-Modified: Thu, 01 Dec 2005 07:58:35 GMT
Connection: close
Content-Type: text/html



...
此外:这里还有一篇关于使用IE 6.0.28XX 浏览器导致的Cookie问题的报道 也是需要注意的。

作者:车东 发表于:2005-11-30 17:11 最后更新于:2007-04-15 19:04
版权声明:可以转载,转载时请务必以超链接形式标明文章 的原始出处和作者信息及本版权声明

引用通告

以下是前来引用的链接: [apache]: 使用mod_usertrack跟踪用户:

» 利用apache日志分析用户行为 来自 JIEER的博客论坛
近日看到车东的blog上讨论分析用户行为的文章,1、利用StatViz生成网站用户点击路径图;2、[apache]: 使用mod_usertrack跟踪用户 对于mod_usertrack,我在公司一个内部网站是这样做的,当每个用户登... [阅读更多细节]

Comments

这个module很忽悠人
如果使用了google analytics,可以靠__utma来做
unique user的记录,就不用装这个module了。

发表一个评论

(如果你此前从未在此 Blog 上发表过评论,则你的评论必须在 Blog 主人验证后才能显示,请你耐心等候。)

Creative Commons License
此 Blog 中的日记遵循以下授权 Creative Commons(创作共用)授权.
Powered by
Movable Type 3.36