【发布时间】:2023-06-25 06:25:01
【问题描述】:
我正在开发一个通过 AJAX 加载数据的网站。我还希望整个网站都可以被谷歌和雅虎等搜索引擎抓取。 我想制作该网站的 2 个版本... [1] 当用户来的时候,超链接应该像 GMAIL 一样工作(#'ed超链接) [2] 当爬虫到来时,超链接应该正常工作(AJAX模式关闭)
如何识别爬虫??
【问题讨论】:
标签: ajax web web-crawler
我正在开发一个通过 AJAX 加载数据的网站。我还希望整个网站都可以被谷歌和雅虎等搜索引擎抓取。 我想制作该网站的 2 个版本... [1] 当用户来的时候,超链接应该像 GMAIL 一样工作(#'ed超链接) [2] 当爬虫到来时,超链接应该正常工作(AJAX模式关闭)
如何识别爬虫??
【问题讨论】:
标签: ajax web web-crawler
爬虫通常可以通过 User-Agent HTTP Header 来识别。查看this page 以获取专门针对爬虫的用户代理列表。一些例子是:
谷歌:
此外,这里有一些获取各种语言的用户代理字符串的示例:
PHP:
$_SERVER['HTTP_USER_AGENT']
Python Django:
request.META["HTTP_USER_AGENT"]
Ruby On Rails:
request.env["HTTP_USER_AGENT"]
...
【讨论】:
您不应向您的用户和抓取工具展示您网站的不同形式。如果 Google 发现您这样做,他们可能会因此降低您的搜索排名。此外,如果您有一个仅用于爬虫的版本,它可能会在您不注意的情况下中断,从而为搜索引擎提供不良数据。
我建议您构建一个不需要 AJAX 的网站版本,并在每个页面上都有指向非 AJAX 版本的醒目链接。这也将有助于可能不喜欢 AJAX 版本或浏览器无法正确处理的用户。
【讨论】:
爬虫的 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
【讨论】:
这种方法只会让你的生活变得困难。它要求您维护站点的两个完全独立的版本,并尝试猜测要为任何给定用户提供哪个版本。搜索引擎并不是唯一没有 JavaScript 可用和启用的用户代理。
遵循unobtrusive JavaScript 和build on things that work 的原则。这避免了确定向用户提供哪个版本的需要,因为 JS 可以在离开工作的 HTML 版本时优雅地失败。
【讨论】: