2005年11月



    摘要:看到一篇很有趣的文章,原文:http://www.rinf.com/news/nov05/googlefacts.html 来自费乐沃的译文:http://web.mblogger.cn/philewar/posts/48991.aspx 我在原文下追加自己的观点,带边框的表格里是费乐沃翻译的内容。    (全文共5386字)——点击此处阅读全文



今天爬到了一个blog 关于站点探测的问题,今天闹了一个笑话。上面提到了"经常从GOOGLE里搜到一些论坛的隐藏论坛里面的文章,而这些论坛至少游客是无法访问的,一般的论坛都使用SESSION或者COOKIE来做限制,不知道用这次讨论的原理该怎么解释"。其实正像作者猜测的,就是故意而为,即所谓的Cloaking技术。

Cloaking技术被一些人认为是SEO SPAM的一种,但我个人觉得就像传销、小姐、央视专家等词一样,Cloaking只不过是一个被用烂的中性词。举例来说,用中文IE访问Google首页,你看到的是简体中文版的Google(前提是没作任何个性化设置),但用英文版Firefox访问Google首页,你看到的是英文版Google。这其实就是Cloaking的正面例子。类似的例子还有中国IP的用户访问www.yahoo.com会看到左上方有Y!China的图标连接。

所谓搜索引擎Cloaking,也就是给不同的索搜引擎爬虫准备不同版本的页面。因为搜索引擎爬虫的名字是作为User Agent发送给服务器的,即在服务器眼里,无论IE\Firefox\FlashGet还是Googlebot(还有Alexa Toolbar-不想提它),都是一个浏览器,只不过这些浏览器背后的用户可能是活人,可能是机器,还可能是装成机器的活人(Alexa 作弊者),也可能是装成活人的机器(抓Cloaking作弊的搜索引擎爬虫),晕么?

下面从纯技术角度演示如何针对User Agent进行Cloaking。先看几行LOG,是我从某Apache LOG中挑出来有代表性的几个(某些地方加了马赛克):

  • ###.9.97.98 - - [02/Nov/2005:06:51:14 -0600] "GET /index.html / HTTP/1.1" 200 13961 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"

    这个是IE 6的用户,后面Mozilla开始是User Agent。

  • ###.133.94.71 - - [02/Nov/2005:07:40:35 -0600] "GET /index.html HTTP/1.1" 200 13961 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8) Gecko/20051025 Firefox/1.5"

    使用Gecko引擎的Firefox用户

  • ###.14.12.120 - - [02/Nov/2005:07:50:24 -0600] "GET /agreement.pdf HTTP/1.0" 200 7133 "-" "FlashGet"

    有人用FlashGet下载了agreement.pdf文件

  • 66.249.66.41 - - [02/Nov/2005:08:06:57 -0600] "GET /index.html HTTP/1.1" 200 13961 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

    Googlebot来了

  • 64.4.8.121 - - [02/Nov/2005:09:26:24 -0600] "GET /index.html HTTP/1.0" 200 13961 "-" "msnbot/1.0 (+http://search.msn.com/msnbot.htm)"

    MSN Bot也来了

  • ###.72.108.3 - - [02/Nov/2005:06:47:25 -0600] "GET /index.html HTTP/1.0" 200 13961 "http://www.###.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Alexa Toolbar; mxie)"

    装Alexa Toolbar的用户访问网站后,Alexa又访问一次。

下面是PHP代码针对前4个User Agent的Cloaking:

 <?
 $user_agent = $_SERVER['HTTP_USER_AGENT'];
 if(strpos($user_agent, 'MSIE 6.0') > -1)
 {
  echo "IE 6.0 User. This is a private forum.";
/*如果你是Firefox的拥趸,可以在这里显示那个Get Firefox的标志,而不让下面那种已经用了Firefox的人看到 - 因为他们不会点了 - 这有助于你提高转换率  - 又是一个Cloaking的正面例子*/
 }
 else if(strpos($user_agent, 'Firefox') > -1)
 {
  echo "Firefox User. This is a private forum.";
 }
 else if(strpos($user_agent, 'FlashGet') > -1)
 {
  echo "FlashGet User. Do not download my site.";
 }
 else if(strpos($user_agent, 'Googlebot') > -1)
 {
  echo "Hello Google. Please index this page.";
 }
?>

用不同的浏览器访问这个php页面,你会看到不同的结果。注:

  1. Flashget需要手工修改一下User Agent: 工具->选项->协议,因为默认不是FlashGet。
  2. 以上代码尽用作演示,从技术角度真正实现应该在服务器端搞,如Apache的.htaccess。因为并不是所有页面都是.php,还有html静态页甚至pdf\zip等
  3. 即便如此也不应该去Cloaking搜索引擎爬虫,还记得那些装成活人的爬虫么。

下面给论坛的拥有者提示几句:我非常不赞成这种做法。如果你的论坛是公开的,就行该让任何访问者都可以阅读(但没有发帖、跟帖等权限)。有些论坛使用参数很多很长的URL,此时应该准备一个纯文本版用做给搜索引擎索引(别忘屏蔽搜索引擎对参数很长的那个URL的访问)。如果你的论坛属于自己的小圈子,就应该在robots.txt中屏蔽所有user agent,再在论坛程序中设好权限和密码。那些对虫类公开,对人类屏蔽的做法反映了很不好的心态:你是人的话想看我的内容就要注册,你是虫的话就索引我的网站,这样可以带来更多的人 - 当然他们想看还得注册。这样只能导致注册量提高,而实际有意义的成员有多少?况且Google Cache已经能用了。




Google Analytics是一个Web Log分析工具,顺便说,这个Web Log是Apache、IIS产生的服务器日志,而不是weBLOG。我觉得Google Analytics特别适合中国的Webmaster,一来因为中国的站长们很少分析自己的Log,二来中国的站长们喜欢很不专业的在网站某个位置显示一个计数器。但愿Google Analytics的免费开放可以使站长们养成分析Log的习惯。

Google Analytics的意义

分析Log有两种方式,一种是下载Log到本地,然后用一些日志分析软件生成报告,这样的软件比较著名的有FastStats Log Analyzer (美), WebLog Expert (俄),  123LogAnalyzer (中)。123曾经是我的最爱,但后来这种下载日志并分析的方法被直接在服务器端分析取代了,即在服务器端装一个软件直接分析Log文件。对于Linux服务器来说,最为著名的是免费开源的AWSTATS。AWSTATS随Linux Server管理软件Cpanel一起发布,更助于其普及(当然即使没有装Cpanel,也可以手工安装AWSTATS)。另一个服务器端分析Log的软件叫Urchin,区别是Urchin是一个商业软件,要收费的。不过如果你关注Google并且记性不错,就会知道今年三月Google收购Urchin的新闻。又顺便说一句:普通消费者于有钱人的区别 -普通消费者喜欢某个产品,会把它买下来;有钱人喜欢某个产品,会把他买下来:) 原本以为Google买Urchin只是为了自己用着舒服,没想到Google今天把它给Free了:如果你现在访问Urchin的网站www.urchin.com,会被转向(Google用的是302转向)到Google Analytics网站:http://www.google.com/analytics/。Google Analytics的意义是给那些不愿用客户端Log分析软件并且因种种原因无法安装服务器端Log分析产品的站长提供免费的商业级产品。

如何在Donews Blog里使用Google Analytics

使用Google Analytics只需用Google Account登录Google Analytics的主页,然后需要开设Google Analytics账号(提供姓名、国籍和电话),并接受一个协议。

然后会要求输入今后要分析的网站,输入该网站的URL即可。问题是Google无法访问你网站的Log文件,所以需要添加Google Analytics的Javascript带码。Google会提供这段代码给你,放在<head></head>之间。说到这里,Google Analytics也适合Donews Blog这种可以自定义页面结构的网站,以下是给Donews Blog加入统计代码的方法:

  1. 在Google Analytics里输入Blog的URL,如我的http://blog.donews.com/concorde/ 就输入blog.donews.com/concorde/

     注:此处有BUG。Google Analytics 输入URL的界面用Javascript检测输入的URL是否合法。尽管该页明确表示可以输入网站目录做URL,但该检测Javascript程序没有放过URL代有"/"符号的URL,会显示invalid input的错误。

    (具体而言在https://www.google.com/analytics/home/ujs/ugen.js的224、227行的正则表达式有误)

     11月16日更新:Google Analytics小组似乎有更重要的事情要做,还顾不上修复这个小BUG,以下是Google的反映:

    “Thank you for bringing this to our attention. We are aware of the 'invalid input' error you are seeing and are currently working to resolve this issue.

    If you would like to go ahead and get started with Google Analytics, I
    recommend removing the directory path from your URL when specifying the
    Website URL for your profile. ...”

    但是Google忘了Google Analytics 的作用就是提供Log统计给那些没办法(或不愿意)下载Log,而又无法使用根域名统计服务的网站,比如这种放在目录里的Blog。

 12月更新:眼不见心不烦,Google居然把网站目录的例子给去掉了,终于可以不认账了-_-!!!。

现在只好直接输入blog.donews.com,然后添加一个filter专门统计自己的blog,觉得不爽也只好这样了。


  1. 选项>配置>公告最后输入Google提供的js代码

    <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
    </script>
    <script type="text/javascript">
    _uacct = "UA-####-#"; //这个是每个站的ID
    urchinTracker();
    </script>

  2. 就行了。

Urchin的Report会有几小时的延迟,会提供:访问数量、地理位置、来源URL、新访问者/返回访问者。对于使用Adwords的网站,还可以提供ROI有关的报告。