Manual:robots.txt/zh

From Linux Web Expert


robots.txt机器人例外标准的一部分,并可帮助手册:搜索引擎优化 。它描述网络爬虫如何对一个站点建立索引。robots.txt必须被放置在网站根目录下。

-{zh-hans:示例; zh-hant:範例;}-

阻止建立所有索引

组织所有机器人建立站点页面索引的代码:

User-agent: *
Disallow: /

如果您仅仅想阻止某些网络蜘蛛,将星号替换成爬虫的用户代理即可。

阻止对非条目页面建立索引

MediaWiki生成了许多仅对真人有用的页面:例如旧版本和差异页面倾向于复制文章中的内容。 编辑页面和大多数特殊页面是动态生成的,这使得它们仅对人工编辑有用,并且服务、维护成本相对较高。 如果没有其他指示,爬虫可能会尝试索引数千个相似的页面,从而使Web服务器负载过重。

使用短URL

如果您使用的是维基百科样式的短网址,很容易防止蜘蛛抓取非文章页面。 假设可以通过/wiki/Some_title访问文章,而其他所有内容都可以通过/w/index.php?title=Some_title&someoption=blah获得:

User-agent: *
Disallow: /w/

不过要小心!如果您不小心把这条线放进去:

Disallow: /w

您将阻止访问/wiki目录,搜索引擎将删除您的Wiki!

请注意,此解决方案还会导致CSS、JavaScript和图像文件被阻止,因此Google之类的搜索引擎将无法呈现Wiki文章的预览。 要解决此问题,不需要禁止整个/w目录,只需要禁止index.php

User-agent: *
Disallow: /w/index.php?

这是可行的,因为CSS和JavaScript是通过/w/load.php检索的。 另外,您也可以像在维基媒体网站矩阵上那样进行操作:

User-agent: *
Allow: /w/load.php?
Disallow: /w/

不使用短URL

如果您没有使用短网址,则限制爬虫会更加困难。如果您正在运行PHP CGI并且没有美化URL,那么可以通过/index.php?title=Some_title访问文章:

User-agent: *
Disallow: /index.php?diff=
Disallow: /index.php?oldid=
Disallow: /index.php?title=Help
Disallow: /index.php?title=Image
Disallow: /index.php?title=MediaWiki
Disallow: /index.php?title=Special:
Disallow: /index.php?title=Template
Disallow: /skins/

如果您正在运行PHP作为Apache模块,并且没有美化URL,因此可以通过/index.php/Some_title访问文章:

User-agent: *
Disallow: /index.php?
Disallow: /index.php/Help
Disallow: /index.php/MediaWiki
Disallow: /index.php/Special:
Disallow: /index.php/Template
Disallow: /skins/

末尾没有colons(:)的行限制了这些命名空间的对话页。

非英语语言的维基可能需要在这行上方加入翻译语句。

您可能希望省略/skins/的限制,因为这将阻止访问属于皮肤的图像。 提供预览图像的搜索引擎,如谷歌,如果无法访问/skins/目录,将显示缺少图像的文章。

你也可以尝试

Disallow: /*&

因为像Googlebot这样的一些机器人接受robots.txt标准的通配符扩展,这阻止了我们不希望机器人筛选的大部分内容,就像上面的/w/解决方案一样。 然而,这确实受到了同样的限制,因为它阻止了对CSS的访问,阻止了搜索引擎正确渲染预览图像。 可以通过添加另一行Allow: /load.php来解决这个问题,但在撰写本文时,这还未经过测试。

允许Internet Archiver对原始页面进行索引

您可能希望允许Internet Archiverraw pages进行索引,以便页面的原始wikitext将被永久记录。这样,在维基瘫痪的情况下,人们可以更容易地将内容放在另一个维基上。您将使用:

# Allow the Internet Archiver to index action=raw and thereby store the raw wikitext of pages
User-agent: ia_archiver
Allow: /*&action=raw

问题

速率控制

您只能指定允许机器人爬行的“路径”。当一个超过20万页的蜘蛛每秒请求两到三页时,即使只允许普通页面区域也可能是一个巨大的负担。

一些机器人对此有自定义规范;Inktomi响应“Crawl-delay”行,该行可以指定两次点击之间的最小延迟(以秒为单位)。(默认值为15秒。)

不遵守规定的机器人程序

有时,自定义编写的机器人不是很聪明,或者完全是恶意的,根本不遵守robots.txt(或者遵守路径限制,但蜘蛛速度很快,在网站上爬行)。可能需要屏蔽特定的用户代理字符串或违法者的个人IP。

更普遍地说,request throttle可以在不需要您重复干预的情况下停止此类机器人程序。

一种替代或补充策略是部署spider trap

蜘蛛抓取与索引的对比

虽然robots.txt阻止(非邪恶的)机器人下载URL,但它并没有阻止他们对其进行索引。 这意味着,只要有指向它们的外部链接,它们仍然可能出现在谷歌和其他搜索引擎的结果中。 (更糟糕的是,由于机器人不会下载此类页面,因此放置在其中的noindex元标签将不会产生任何效果。) 对于单个wiki页面,__NOINDEX__魔法字可能是一个更可靠的选项,可以将它们排除在搜索结果之外。