AWStats 6.0 的中文补丁 后记


AWStats快发布6.1了,我提交的BUG主要有以下几个方面:
AWStats - Bugs
775988 Minor Chinese Search Engine patch
AWStats - Patches
745359 Chinese(Simp) update: 6.0 awstats-cn.txt
713960 Chinese minor search engines (awstats 6.0)

715108 URI unescape and Google UTF-8 convert patch(perl 5.8 needed)
AWStats - Feature Requests
881891 ShowMonthStats: last 12 months vs first month of this year
863298 Counter of spider access on URL-Pages report.
706297 smart IIS timezone solution
748264 Count average on "finished day" (Use LastUpdate)

1 Google UTF-8查询的检测和解码问题:
最关心的Google UTF-8查询的解码问题,由于Google同时支持utf-8查询和gb2312查询(Win98上),所以同样的查询字符创,在不同浏览器中会留下2组记录;
我的思路是从日志处理阶段开始,根据固定的字符集设置进行UTF-8 ==> 本地码的转码,这样输出的就统一是本地码了(比如GB2312),我在5.5版本的Patch中是这样实现的。但潜在的问题是比较容易受到cross site script攻击,关键词统计中偶尔会因为解码后出现非字母的控制字符出问题。需要手工修改统计出来的数据库才行。

目前AWStats的作者已经接受了UTF-8检测并解码的方案,但在6.0中这个过程不是在日志处理是进行的,而是统一将URL ENCODE后的QUERY进行统计,然后在报表输出的进行UTF-8自动检测,这样,原来是2条的结果仍然是2条:一个本地码的(如:GB2312),一个UTF-8码的。我在检测出UTF-8的后面增加了一个 "(UTF-8)",标记。
这样也好:等于能自动检测那些关键词来自GOOGLE了。但对于全英文的查询来说:几乎都被认为是UTF-8(本来UTF-8就是为了面向英文的优化)。

2 很多查询中的 \xf1\xbc\xcd\xac\xba\xa3 转换成标准的 %f1%bc%cd%ac%ba%a3
$param =~ s/\\x(\w{2})/%\1/gi;
产生的原因是输入字符串没有进行URL ENCODE编码,然后由高版本的APACHE造成的。通过以上表达式,问题得到了解决,后来的SPIDER统计中,也用到了,真对的是Baidu的一些请求,例如:
3 /new/member/_\xd5\xc5\xd0\xa4
3 /new/member/_\xd5\xc5+\xcf\xe8
3 /new/member/_\xc5\xed+\xc5\xf4
3 /new/member/_\xc2\xde\xbb\xe1\xcf\xe9

3 中文搜索引擎的定义:门户搜索和搜索门户
目标是在完全检测未知搜索引擎模式下
LevelForSearchEnginesDetection=2
Unknow search engine的比例小于3%。
今天通过在6562行左右:在关键词被统计之前将关键词和所在的URL打印出来。
print $param."\t".$refurl[0]."?".$refurl[1]."\n";
能够得到类似以下的日志:
http://www.chinasearch.com.cn/page.cgi?word=\xd6\xd0\xb9\xfa\xc5\xa9\xc3\xf1\xb5\xf7\xb2\xe9&webid=hnby%c7%a7%d3%eb%c7%a7%d1%b0+%b0%d7%c1%fa+%b0%ae%c7%e9
http://search.clong.com.cn/search.asp?lm=0&si=&rn=10&tn=clong&ie=gb2312&ct=0&word=%C7%A7%D3%EB%C7%A7%D1%B0+%B0%D7%C1%FA+%B0%AE%C7%E9&pn=40&cl=3
s57
http://search.online.sh.cn/cgi-bin/search.cgi?opt=&stock_code=&searchtxt=&strQy=&wydz=&cl=&f_key=&f_kind=&f_unit_id=&f_shangkediqu=&page=1&word=S57%c5%c5%c1%d0%d7%e9%ba%cf%b9%ab%ca%bd
http://search.online.sh.cn/cgi-bin/search.cgi?opt=&stock_code=&searchtxt=&strQy=&wydz=&cl=&f_key=&f_kind=&f_unit_id=&f_shangkediqu=&page=1&word=%C5%C5%C1%D0%D7%E9%BA%CF%B9%AB%CA%BD%b7%bf%ce%dd%b6%af%c7%a8
http://search.online.sh.cn/cgi-bin/search.cgi?opt=2&cl=3&myselect=0&searchtxt=&strQy=&wydz=&myselectvalue=0&word=\xb7\xbf\xce\xdd\xb6\xaf\xc7\xa8

通过这些日志发现了21CN和QQ这2个目前增长很快的引擎,其他都是慧聪和各种地方在线网站。以百度为后台的门户搜索份额增加都很快,但加起来不过都是百度份额的零头而已。看来搜索结果质量(速度和相关度)还是非常影响各种引擎的份额的。

4 我之前还犯了一个错误:修改了$param =~ tr/ /\+/s; ==> $param =~ tr/\s+/\+/s;结果把很多 's'都换成+了,后来发现tr后面的s修饰符指的是整个表达式被看作单个字符……
这些BUG也是通过将转换后的$param打印出来才发现的。

真对以上问题的解决:中文等的补丁在:http://www.chedong.com/tech/lib.tgz

AWStats的作者简介:Eldy 目前住在法国,听他说,他每周会在这个项目的改进上花上3-4个小时,并没有什么大的开发规划,因为他不想把这个项目做的想一个工作,觉得那个功能好,做就是了……

作者:车东 发表于:2004-05-10 12:05 最后更新于:2007-06-28 16:06
版权声明:可以转载,转载时请务必以超链接形式标明文章 的原始出处和作者信息及本版权声明

引用通告

以下是前来引用的链接: AWStats 6.0 的中文补丁 后记:

» AWStats项目 来自 老康
Ping Back来自:blog.csdn.net [阅读更多细节]

Comments

等待着6.1的发布,现在升级了perl,发现还是有问题,到了星期数就不下去了,在awstat的网站也发布了询问,一直没有回答.也许是perl的问题吧~~~

为什么我更新的时候,出现cgi 超时,怎么才能解决这个问题啊

发表一个评论

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

相关文章

关于

此页面包含了发表于2004年05月10日 下午12时57分的 Blog 上的单篇日记。

此 Blog 的前一篇日记是 准备五一最后的司马台-金山岭之旅

此 Blog 的后一篇日记是 盼望已久的"猴"年"马"月 公历2004年6月18日开始到7月16日结束

更多信息可在 主索引 页和 归档 页看到。

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