善意伪装,恶意伪装和如何检测

2009-06-11
  • 1852
  • 8

Stephan Spencer 2007年3月

“伪装”-“Cloaking”很不好很糟糕的吗?在SEO行业这是一个非常具有争议性的话题,甚至人们没有对“伪装”的定义达成共识。下面我想通过一个例子来说明什么是搜索引擎可能认为的“好的”伪装,由测试页面产生的中立伪装,以及如何检测传统意义上的“坏的”伪装。

在2005年12月,4大主要搜索引擎在Search Engine Strategies Chicago就如何划分善意伪装及恶意伪装制定标准。我向参加小组提出“搜索引擎是否可以接受有选择性的对于搜索引擎爬虫,用搜索引擎友善的链接去替代原来的一些搜索引擎不友好的版本(例如那些有Session ID和多余参数的)”,4位成员的答案一致表示赞同。

URL重写?不是伪装!

我觉得他们对于伪装的立场基本没有变化。伪装的标准定义就是提供给搜索引擎的页面与提供给访问者的不同,这是非常不好的一定要避免。但是清除不利于搜索引擎蜘蛛爬行的URL元素,是可以的。事实上,在我私下与Google的工程师交谈中发现,他们根本就不认为这是一种伪装。

因为搜索引擎会非常高兴看到你为搜索引擎蜘蛛简化你的URL,去掉Session ID,用户ID,符号等等-因为这样做对于搜索引擎(而不是访问者)来说是合情合理的。也可能是因为要将所有的URL简化是有一定困难的,需要一定的财力和人力。还有就是要简化URL里的参数会影响到一些功能性的要求,比如放入购物车里的东西,跟踪点击的路径等等。

许多电子商务网站想要跟踪访问者喜欢点击哪些链接来到同一个页面(当很多链接同时指向同一个页面的时候)。他们会在URL中加入一些跟踪标签,例如“source=topnav”,“source=sidebar”,这样会使搜索引擎的蜘蛛重复爬行和索引同一页面,会影响该页面的PR值和链接权重,因为原本要给同一页面的投票,会被其他复制出来的属于这同一页面的不同URL分享。

那么你为什么不去使用善意的伪装而去掉哪些会对搜索引擎蜘蛛有影响的跟踪代码呢?

要提到一点,不是一定要为搜索引擎爬虫简化您的URL。还有一种选择:您可以使用Javascript在点击动作上添加您的不同跟踪代码。例如,REI.com通过JavaScript附加“vcat=”参数在“按品牌分类”页面的所有品牌链接上,因此没有一个含有vcat的url被Google索引。

网站测试算不算恶意伪装?

不同版本的测试算不算恶意伪装?这发生在像Offermatica或Google的“Website Optimizer”向不同的用户展示拥有相同URL的不同内容的页面。这样搜索引擎可能认为是伪装,因为搜索引擎和访问者访问相同的URL却会得到不同的页面内容。搜索引擎爬虫并不能参与到测试过程,因此测试的内容对于搜索引擎爬虫来说是不可见的;这由于AjAX,JavaScript,DHTML或一些Cookies对于测试平台在用户浏览器运行的要求。Google的工程师告诉我他们想让Google机器人参与到测试中来,只是现在的技术还没能支持这样功能。

发现基于User Agent的伪装

搜索引擎认为故意展示给搜索引擎蜘蛛完全不同于访问者所能看到的页面内容的行为是一种恶意的伪装。这些网站通常是通过让搜索引擎爬虫很难判断其版本的方式试图隐藏其踪迹。他们通常将一个“noarchive”命令嵌入meta tags,Google机器人和其它主要搜索引擎爬虫会遵循这个指令而不会存档这样的页面,从而导致在此页面搜索列表中的“Cached”链接消失。

要想知道搜索引擎爬虫被提供了什么是比较复杂的。如果伪装仅仅是基于“User Agent”的话,我们可以用火狐浏览器的“User Agent Switcher”的插件。

发现基于IP的伪装

但是那些中坚的外装专家们则不会用这种把戏。他们会在已知的IP地址提供给爬虫内容。除非你在搜索引擎当中-使用这些IP地址之一,如果它通过避免搜索引擎缓存而隐藏的话,否则您不会看到伪装后的页面。

事实上,还有一种机会看到这些伪装, 有的时候Google翻译可以用来看到伪装的内容,因为很多伪装专家们不会花时间在区别不同作用的爬虫 (比如翻译或爬行)。无论哪种方式,都是运用Google的IP地址。因此,当一个伪装专家做IP方式的时候他们会提供仅供Google机器人的页面给它的翻译工具。尽管这种漏洞可以解决,但是很多伪装专家会错过。