2010-09-16 42 views
1

我正在通过AJAX加载其数据的网站上工作。我也希望整个网站可以被像谷歌和雅虎这样的搜索引擎抓取。 我想使网站的2个版本... [1]当用户来超链接应该像GMAIL(#'ed超链接) [2]当爬虫来了超链接应该正常工作(AJAX模式关闭)识别搜索引擎爬虫

我如何识别爬行者?

回答

0

您不应该为您的用户和抓取工具呈现不同形式的网站。如果Google发现您这样做,他们可能会因此而降低您的搜索排名。此外,如果您的版本仅适用于抓取工具,则可能会在您没有注意到的情况下崩溃,从而导致搜索引擎收到错误的数据。

我推荐的是构建一个不需要AJAX的站点版本,并且在每个页面上都有显着的非AJAX版本链接。这也可以帮助那些不喜欢AJAX版本或者浏览器不能正确处理的用户。

+1

如果我给一个选项注册用户使用AJAX版本? – 2010-09-16 16:44:51

0

爬网程序的http标头应该包含一个User-Agent字段。你可以在你的服务器上检查这个字段。

Here是用户代理吨的列表。一些示例:

Google robot 66.249.64.XXX -> 
Googlebot/2.1 (http://www.googlebot.com/bot.html)  

Harvest-NG web crawler used by search.yahoo.com 
Harvest-NG/1.0.2  
+0

谢谢我将会搜索更多关于这个 – 2010-09-16 16:45:28

+0

未来的搜索引擎怎么样 – 2010-09-16 16:46:07

+0

这是trickey的一部分,不是吗。 – 2010-09-16 18:41:02

1

通常可以使用User-Agent HTTP标头标识爬行程序。专门查看this page以获取搜寻器的用户代理列表。一些实例是:

谷歌:

此外,以下是获取各种语言的用户代理字符串的一些示例:

PHP: 
$_SERVER['HTTP_USER_AGENT'] 

Python Django: 
request.META["HTTP_USER_AGENT"] 

Ruby On Rails: 
request.env["HTTP_USER_AGENT"] 

... 
+0

感谢您的答案,我会搜索更多的..但作为布赖恩说,它可能会影响搜索引擎排名:( – 2010-09-16 16:47:20

0

这种方法只是让你生活困难。它要求您维护两个完全独立的网站版本,并尝试猜测向任何给定用户提供的版本。搜索引擎不是唯一没有可用和可用JavaScript的用户代理。

遵循unobtrusive JavaScriptbuild on things that work的原则。这避免了需要确定给用户的版本,因为JS可以正常失败,同时留下工作的HTML版本。

+0

我明白这是我的计划是做它简单的HTML方式... 只是为了增强,因为该网页在用户浏览器加载,如果用户具有JS功能的URL将被改变为AJAX形式,如... from(abc.com?var = xyx)到(abc#var = xyz) 所以我会使传统的版本以及基于ajax的... 现在我已经意识到了缺点我会重新考虑它 谢谢.. – 2010-09-16 16:57:23