Manual:robots.txt/zh
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 Archiver对raw 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__
魔法字可能是一个更可靠的选项,可以将它们排除在搜索结果之外。