StatPressCN,1.6.9.6版本

下载升级:

  • 请到wordpress官方插件网址下载最新版本,ftp到服务器上去;
  • 或者,如果您的wordpress是2.7版本以上的,那就耐心等段时间(大约几个小时吧),管理后台会自动提示升级的;
  • 提示:升级至本版本不会影响数据库中的数据记录。

功能开发:

  1. 和wp-comments数据库联动,自动过滤掉垃圾留言者的访问记录;这样“朋友来访”显示的朋友访问列表就更精准了
  2. 修正了widget中可用参数不准确的问题,主要涉及今日来访数量、昨日来访数量、今日页面访问数量、昨日页面访问数量;
  3. “朋友来访”中显示的数量增加了50的选项卡,现在可以设定为5、10、20或50个了。

def规则:

  1. 增加了yahoo日本、cnnic的搜索引擎规则;
  2. 增加了Ginxbot、FairShare、Congentbot爬虫规则的识别。

代码改进:

  1. 在“支持”的调试信息中增加了时区和utc时间、本地时间内容显示;
  2. 在“支持”函数体中共享global $wpdb;
  3. 增加了对博客网址的识别,对me的天高云淡不再显示iframe框架调用;
  4. 动态识别blog网址(通过get_option(‘home’)函数;
  5. 修正widget中可调用参数的时间识别。

升级需做:

  • 升级至1.6.9.6版本后,请进入“系统更新”,选项卡一个都不要选,运行一次“更新统计系统和数据记录”,这样会清理掉那些垃圾留言者的访问记录。

开发笔记

听了dust2k朋友的建议后开始认真考虑过滤掉垃圾留言者。原来曾经尝试过,对akismet的运作机制不甚了了,也就作罢了。这次重新启动,一定要搞定。仔细研读了akisme的代码,它主要是针对comments进行相关处置的,并且是借助了集中存放规则的网络服务器进行的,每次判断都会提交到查询服务器上去(这种机制其实是最高效的,sharethis就是这样升级的,可惜me没有服务器资源,只好在每个版本中自带dat文件进行规则更新)。打开wordpress的默认数据库comments看了下,记录了每条留言的id、ip、agent、内容、留言者等等,其中有一项是是否验证通过。仔细考虑了下,其实基本不关akismet的事情。在StatPressCN记录ip之前,看看是否是comments表中被标记为spam就行了。

昨日访问和今日访问数据不对,刚开始以为差一天,后来发现差了是几个小时。上午测试发现不仅仅是8个小时,而是16个小时,看来问题出在时区。简单的查阅了mysql的时间函数后就更改了代码,结果和php的gmdate不太一样。关键还是时区问题。经过仔细测试,发现还是utc时间好用。机制大约这样:查找blog option中的时区设定,再结合utc时间进行处理,就能得到当地时间。但是用sql语句得到时间效率高还是php本身的时间函数效率高就不清楚了,以后有时间再测试下。

处理访问记录中的spam

做blog访问统计插件,所有的个性化创新功能都是为了方便站主或博主。StatPressCN作为基于wordpress网志的统计插件,必须要结合网志的特点提供特色功能。最开始接管StatPress的时候,就对提供的最近来访者、最近的搜索关键词以及对供稿(feed)的处理比较满意,后来结合近来移动上网(通过手机等)迅猛增加的发展趋势新增了“移动访问分析”板块,这两天又增加了“朋友”功能,呵呵,这可是其他常规统计插件不可能提供的哟。然而,这一切,都以能得到纯净的访问记录为前提,这中间的关键是,把spam给有效的识别出来并做相应处理。想起原来的访问记录居然是常规第三方统计插件(如GA、yahoo统计等)的两倍多,汗颜啊,惭愧啊,不过现在已经非常准确了,估计比那些通用插件还要精确些呐,呵呵,因为me自认对spam的处理还是非常精确高效的。

spam指的那些无聊甚至恶意的访问,属于非自然人访问的一种(另外一种是大名鼎鼎的spider)。大多数是为了做广告、拉流量,也有一些是三脚猫黑客的造访记录。wordpress提供了较好的防止spam功能,比如留言审核(可以设定为全部审核或首次审核),另外还有第三方插件,比如鼎鼎大名的Akismet可以过滤垃圾评论。但是这并不能禁止所有的spam,它们该来还是来了。

首当其冲的是三脚猫黑客的恶意访问。一般情况下大家架的blog不会夹杂其他程序或服务,这样就给识别这些恶意访问提供了方便。比如asp后缀名文件的访问(明明服务器端脚本用的是php嘛)、对“网站.rar”的请求(估计是针对那些打包上传空间的漏洞的)。对于这些访问,不能轻易在StatPressCN中忽略了事,还要做针对性处理。最直接的方式就是禁止这些ip访问,采用.htaccess文件进行限定,具体办法见博文“黑客黑啊”。考虑每次上传下载.htaccess文件不方便,me在StatPressCN中提供了动态更新.htaccess规则的子页面(可以在选项中使能)。

其次就是那些试图通过注册为用户的方式阿布广告的访问。为了让新朋友方便,一般的blog都设置为“任何人都可以注册”,这一方面提供了用户友好度,显得我们很好客嘛,呵呵,但另外一方面也给那些spamer提供了方便。对于那些偷偷溜进来的spam,第一道关自然是Akismet,但也有些漏网之鱼,那就靠自己识别了。前两天发现不少对“/wp-signup.php”的访问,me还以为是有用户注册呢。后来遍查wordpress的源文件库都没有发现此文件。后来在网络上搜索才知道,原来是针对wordpress mu的漏洞来的。对这种访问量刑后觉得罪不当诛,在记录时忽略了事好了。

最后一种则是那些隐形spider,其中以微软的live为最。对于这种偷偷摸摸的行为说实话没啥好的识别办法,就是注意观察那些短时间内大量的连续访问(任谁都不可能半分钟内访问三十多页面吧,服务器也反应不过来啊),查出来就把ip拉入banip.dat文件进行阻止。再一个方面是看“详情”板块中的“倾情粉丝”,呵呵,一个月内访问了几百页面的可能是“粉丝”,也可能是spam哟。把那些ip在“搜索”中查查就可以了。

对spam的处理其实只有两种,要么在统计是忽略它,如果是恶意的,要考虑同时把ip通过.htaccess机制完全禁止访问(要小心,不要误伤)。

垃圾搜索Windows Live的真面目

比尔盖茨退休了,巴尔默上台了,微软出现了新变化,盗版用户的操作系统桌面开始黑屏了。虽然黑屏方式非常愚蠢,但me并不认为打击盗版是不应该的,不管是不是微软牵头,在版权维护方面,me一直态度明确且坚决。微软是很多人(尤其是所谓电脑技术型高级用户)不喜欢,me也很不喜欢。me不喜欢它是有原因的,两年半前因为强行捆绑msn和浏览器IE关联让me恶心的不行,写了篇无可奈何花落去--微软的集成方式,今天,因为它的恶意搜索机器人泛滥,严重干扰了搜索引擎市场份额的精确统计,并且对所有网站构成了洪水攻击,me要写这篇垃圾搜索windows live的真面目。对坏蛋,要坚决斗争之,呵呵。

查阅后台来访统计(me当然用的是me自己开发的StatPressCN啦,呵呵)数据时,发现有不少来自微软live.com搜索引擎的关键词太过普通(比如twitter、april、reply等),于是奇怪起来,me何德何能,居然在如此常见的关键词搜索中排名靠前。但诡异的是,me点击到来源的参考页面(也就是live.com)去,翻了n页都没有找到“天高云淡”的身影。仔细检查网址和关键词,都没有错啊,真是出鬼了。

一直没有功夫弄清楚这个问题,现在StatPressCN的主体功能开发终于告一段落。出于对数据精确性的高标准严要求,me再次沉静下来努力把它搞清楚。

StatPressCN中以搜索引擎、参考页面和IP为关键词进行搜索,得到如下结果:

Windows Live 59.108.96.22 http://cnweb.search.live.com/results.aspx?q=%E5%85%B3%E4%BA%8EBaidu%E5%92%8CGoogle&form=QBRE3
Windows Live 61.148.115.186 http://cnweb.search.live.com/results.aspx?q=%E8%89%BA%E6%9C%AF+%E7%94%9F%E6%B4%BB++%E5%90%8D%E8%A8%80&form=QBRE
Windows Live 61.178.180.181 http://search.live.com/results.aspx?q=%E5%8C%85%E5%90%AB%E6%98%9F%E6%9C%9F%E5%86%9C%E5%8E%86%E7%9A%84%E5%88%B7%E6%9C%BA%E5%8C%85&src=IE-SearchBox
Windows Live 61.183.129.114 http://search.live.com/results.aspx?q=motorola+a1200+%E5%A4%A9%E9%AB%98%E4%BA%91%E6%B7%A1&go=&form=QBRE
Windows Live 64.111.114.111 http://cnweb.search.live.com/results.aspx?q=twitter&go=&form=QBRE
Windows Live 65.55.109.10 http://search.live.com/results.aspx?q=gtalk
Windows Live 65.55.109.100 http://search.live.com/results.aspx?q=april&form=QBHP
Windows Live 65.55.109.100 http://search.live.com/results.aspx?q=print&form=QBHP
Windows Live 65.55.109.100 http://search.live.com/results.aspx?q=twitter
Windows Live 65.55.109.100 http://search.live.com/results.aspx?q=twitter&form=QBHP
Windows Live 65.55.109.101 http://search.live.com/results.aspx?q=twitter

奇怪的是那些看起来无效的搜索都源自某些有规律的IP,形如65.55.109.10、65.55.109.100、65.55.109.101等。拿65.55.109.35做关键词在Google中搜索了下,发现这个IP好像来自己微软官方。这就奇怪了,既然是微软官方的,并且号称搜索引擎,那为什么都是无效搜索呢。

拿live.com query term在Google中搜索,没有找到有价值的信息,继续拿live.com search term identify做关键词在Google中搜索,终于找到了相关研究和信息。让我们来看看是怎么回儿事儿。

有人发现了和me类似的情况—— Live.com Sexually Explicit Search Terms症状也是无效搜索来源,本以为是其他冒牌伪装的垃圾访问,后来确实是微软官方行为后,还以为是微软为了防止两性类话题而做的额外检查,另外一个帖子讨论结果认为可能是微软在完善自己的live.com搜索引擎时手动检查结果而导致的不良访问。大家主观上还是没有恶意冤枉微软意图的。

The Art of Web的仔细分析和研究彻底暴露了这件事的真相:此事是微软官方行为,属恶意或者不负责任的垃圾访问,有靠此行为认为提高市场份额统计数据的作假嫌疑,且行动是隐秘进行的,持续时间很长了,更严重的是在网友批露后变换了代码仍然在搞。据说微软官方进行了回应,不但不道歉,不按照行业规矩接受机器人协议,还希望大家能接受它这种行为,并且以可能会丧失掉来自live.com的流量为由威胁大家不要屏蔽它,呵呵,自我感觉真好啊,真够无耻啊。

刚在Google的市场份额还在叹息windows live的份额也下滑了,没想到就这十几个点的占有率也是掺了大水份的啊!想想微软这么大的块头和高级的技术平台,感觉真够滑稽的。当看戏了,闹剧啊!

刚又在数据库中搜了下,发现以65.55.109.开头的IP几乎全部涉案。建议大家把来自search.live.com且IP以65.55.109.开头的所有来访全部屏蔽了吧。

——————————————(更新:2008年10月27日)

已经升级了StatPressCN,删除了687条来自Windows live的无效搜索数据(有效的当然要保留),并且能够识别无效来访,在统计系统中不做记录。

—————————————(更新:2008年10月27日)

StatPressCN中统计系统更新(StatPressUpdate)后,发现还有不少Windows Live的无效搜索,检查发现以65.55.110开头的IP也全军覆没了。更新banip.dat数据后在进行统计系统升级,又删除了785条记录。再看搜索引擎占比(即市场份额约数),Windows Live立马从两位数降为个位数了,最近三十天的搜索占比为2.8%,所有统计时间内的占比为4.6%。又发现65.55.165和65.55.232也全军覆没了,共删除399条记录。经过如是修正后,Windows Live的占比从16%下降至了0.2%,唉,微软啊,不行就算了,何必装象呢!

—————————————(更新:2008年11月17日)

偶用中国站长网的查询工具得到如下结果:

Windows Live垃圾搜索示样
Windows Live垃圾搜索示样

百度和Google收录的是几百条,人家Windows Live可是几千条啊,呸,垃圾Live。