robots.txt 用于指导网络爬虫(蜘蛛、搜索引擎)访问网站指定目录,英文也称之为“The Robots Exclusion Protocol”。robots.txt 的格式采用面向行的语法:空行、注释行(以 #
打头,具体使用方法和 UNIX 中的惯例一样)、规则行。规则行的格式为:Field: value。常见的规则行:User-Agent、Disallow、Allow行。robots 文件往往放置于根目录下,包含一条或更多的记录,这些记录通过空行分开(以 CR, CR/NL, or NL 作为结束符),每一条记录的格式如下所示:
<field>:<optional space><value><optionalspace>
robots 是站点与 spider 沟通的重要渠道,站点通过 robots 文件声明该网站中不想被搜索引擎收录的部分或者指定搜索引擎只收录特定的部分。请注意,仅当您的网站包含不希望被搜索引擎收录的内容时,才需要使用 robots.txt 文件。如果您希望搜索引擎收录网站上所有内容,请勿建立 robots.txt 文件(或建立空 robots.txt 文件)。
robots.txt 文件中的记录通常以一行或多行 User-agent 开始,后面加上若干 Disallow 和 Allow 行,详细情况如下:
- User-agent: robot-name
- Disallow: /path
或者
- User-agent: robot-name
- Allow: /path
robot-name:
该值用于描述搜索引擎 robot(蜘蛛)的名称。在"robots.txt"文件中。
本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利
- 如果有多条 User-agent 记录说明有多个 robot 会受到 "robots.txt" 的限制,对 "robots.txt""robots.txt" 文件来说,至少要有一条 User-agent 记录;
- 如果该项的值设为 *,则对任何 robot 均有效;
- 在 "robots.txt" 文件中,"User-agent: *"这样的记录只能有一条;
- 如果在"robots.txt"文件中,加入 "User-agent: Somebot-A" 和若干 Disallow、Allow 行,那么名为 "Somebot-A" 只受到 "User-agent: Robot-A"后面的 Disallow 和 Allow 行的限制。
Disallow:
该项的值用于描述不希望被访问的一组 URL,这个值可以是一条完整的路径,也可以是路径的非空前缀,以 Disallow 项的值开头的URL 不会被 robot 访问。例如:
本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利
- "Disallow:/help" 意思是禁止 robot访问 /help.html、/helpabc.html、/help/index.html
- "Disallow:/help/" 则允许 robot 访问 /help.html、/helpabc.html,不能访问 /help/index.html。
- "Disallow: " 中,空字符串起通配符效果,说明允许 robot 访问该网站的所有 URL。在 "/robots.txt" 文件中,至少要有一条 Disallow 记录。如果"/robots.txt"不存在或者为空文件,则对于所有的搜索引擎 robot 来说,该网站都是开放的。
Allow:
该项的值用于描述希望被访问的一组 URL,与 Disallow 项相似,这个值可以是一条完整的路径,也可以是路径的前缀,以 Allow 项的值开头的 URL 是允许 robot 访问的。例如:
- "Allow: /hibaidu" 允许 robot 访问 /hibaidu.htm、/hibaiducom.html、/hibaidu/com.html
一个网站的所有 URL 默认是 Allow 的,所以 Allow 通常与 Disallow 搭配使用,实现允许访问一部分网页同时禁止访问其它所有 URL的功能。
本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved
使用 "*" 或 "$":
一些蜘蛛,例如百度的 Baiduspider,支持使用通配符 "*" 和 "$" 来模糊匹配 URL。
本文禁止无授权转载 - 时光在路上 www.timezls.com 保留所有权利
- "*" 匹配 0 或多个任意字符;
- "$" 匹配行结束符。
使用 Crawl-delay 和 Request-rate
Crawl-delay,可以通过它对蜘蛛设定一个较低的抓取请求频率。可以加入“Crawl-delay: xx”指示,其中,“XX”是指在爬虫两次进入站点时,以秒为单位的最低延时。一些搜索引擎,例如 google,已经不支持这种方式了,在站长工具里提供一个功能可以更直观的控制抓取速率。百度于 2012 年 9 月 20 在百度站长平台发出通知。该通知表明:百度对网站访问频率不再参考该设置,即不支持 Crawl-delay 配置
Request-rate,用来限制爬虫抓取 URL 的频率,用于控制不同的时间段采用不同的抓取速率。目前 google 和 baidu 都已经不支持这个规则了
使用 /robots.txt 时有两点需要注意:
- 有些搜索引擎 robot(蜘蛛、爬虫),特别是恶意搜索引擎,它们会无视你的 /robots.txt ,扫描整个网站,以获取网站漏洞、邮件地址等信息。
- /robots.txt 文件是公开可见的。任何人都可以从你网站上查看此文件,知道你不想让哪些蜘蛛爬取你的网站或网站的特定 URL。
因此,不要试图使用 /robots.txt 去隐藏网站信息。
本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved
robots.txt 用法举例
- 禁止蜘蛛(爬虫)访问网站任何部分:
- User-agent: *
- Disallow: /
- 允许所有蜘蛛(爬虫)访问(等同于建立一个空 robots.txt 文件):
- User-agent: *
- Allow: /
- 仅禁止某个蜘蛛访问:
- User-agent: BadBot-A
- Disallow: /
- 仅允许某个蜘蛛访问:
- User-agent: Somebot-A
- Allow: /
- User-agent: *
- Disallow: /
本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved
- 仅允许某几个蜘蛛访问:
- User-agent: Somebot-A
- Allow: /
- User-agent: Somebot-B
- Allow: /
- User-agent: *
- Disallow: /
或者写成:
- User-agent: Somebot-A
- User-agent: Somebot-B
- Allow: /
- User-agent: *
- Disallow: /
本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved
- 禁止蜘蛛访问特定目录(每个目录必须单独声明):
- User-agent: *
- Disallow: /cgi-bin/
- Disallow: /tmp/
- Disallow: /junk/
- 允许蜘蛛访问特定目录中的 部分URL:
- User-agent: *
- Allow: /~joe/part-A
- Allow: /tmp/part-B
- Allow: /junk/part-C
- Disallow: /~joe/
- Disallow: /tmp/
- Disallow: /junk/
- 使用 “*”限制蜘蛛访问 URL:
- User-agent: *
- Disallow: /~joe/*.html
注意:使用 Disallow: /*comment* 这种形式的语句对一些蜘蛛并不起作用,比如谷歌的蜘蛛。百度会严格遵守 robots 的相关协议,请注意区分您不想被抓取或收录的目录的大小写,百度会对 robots 中所写的文件和您不想被抓取和收录的目录做精确匹配,否则 robots 协议无法生效。
- 使用 "$" 限定蜘蛛抓取某类文件:
- User-agent: *
- # Limit files to *.html, *.txt and *.jpg
- Allow: /*.html$
- Allow: /*.txt$
- Allow: /*.jpg$
- # Limit files to *.bmp in a separate directory, say "stuff"
- Allow: /stuff/*.bmp$
- Disallow: /
- 使用 robots 避免蜘蛛黑洞:
对于某搜索引擎(蜘蛛、爬虫)来说,蜘蛛黑洞特指网站通过极低的成本制造出大量参数过多、内容类同但 url 不同的动态 URL ,就像一个无限循环的“黑洞“,将蜘蛛困住。蜘蛛浪费了大量资源抓取的却是无效网页。在 /robots.txt 的文件用法中有这样一条规则:Disallow: /*?* ,即禁止蜘蛛访问网站中所有的动态页面。通过这种方式,对蜘蛛优先展示高质量页面、屏蔽了低质量页面,为蜘蛛提供了更友好的网站结构,避免了黑洞的形成,至于屏蔽哪些动态页面,需要根据自己的需要而定。
- 使用 robots 避免蜘蛛黑洞:
robots.txt 的补充
如果你没有对网站根目录的写入权限(无法建立 robots.txt 文件),或你想要某个指定的网页不被搜索引擎收录,可以使用元标签阻止爬虫访问,目前百度仅支持 nofollow 和 noarchive。
- <meta name="robots" content="noindex"> <!-- 禁止搜索引擎跟踪本页面上的链接,将此元标记置入网页的<HEAD> 部分 -->
- <meta name="googlerobot" content="noindex"> <!-- 阻止Google收录,将此元标记置入网页的<HEAD> 部分 -->
- <meta name="robots" content="noarchive"> <!-- 防止所有搜索引擎显示网站快照,将此元标记置入网页的<HEAD>部分 -->
- <meta name="Baiduspider" content="noarchive"> <!-- 仅防止百度显示快照(不影响索引),将此元标记置入网页的<HEAD>部分 -->
本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved
如果不想百度追踪某一条特定链接,百度还支持更精确的控制,请将此标记直接写在某条链接上:<a href="signin.php" rel="nofollow">signin</a>
本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved
相关链接: