« »
2007-09-28SEO

3,438 views

robots.txt屏蔽搜索抓取

         搜索引擎通过一种程序robot(又称spider),自动访问互联网上的网页并获取网页信息。
          您可以在您的网站中创建一个纯文本文件robots.txt,在这个文件中声明该网站中不想被robot访问的部分,这样,该网站的部分或全部内容就可以不被搜索引擎收录了,或者指定搜索引擎只收录指定的内容。robots.txt文件应该放在网站根目录下。

         当一个搜索机器人(有的叫搜索蜘蛛)访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,那么搜索机器人就沿着链接抓取。

robots.txt文件的格式:
“robots.txt”文件包含一条或更多的记录,这些记录通过空行分开(以CR,CR/NL, or NL作为结束符),每一条记录的格式如下所示:
“<field>:<optionalspace><value><optionalspace>”。

在该文件中可以使用#进行注解,具体使用方法和UNIX中的惯例一样。该文件中的记录通常以一行或多行User-agent开始,后面加上若干Disallow行,详细情况如下:

User-agent:
  该项的值用于描述搜索引擎robot的名字,在”robots.txt”文件中,如果有多条User-agent记录说明有多个robot会受到该协议的限制,对该文件来说,至少要有一条User-agent记录。如果该项的值设为*,则该协议对任何机器人均有效,在”robots.txt”文件中,”User-agent:*”这样的记录只能有一条。

Disallow:
该项的值用于描述不希望被访问到的一个URL,这个URL可以是一条完整的路径,也可以是部分的,任何以Disallow开头的URL均不会被robot访问到。例如”Disallow:/help”对/help.html 和/help/index.html都不允许搜索引擎访问,而”Disallow:/help/”则允许robot访问/help.html,而不能访问/help/index.html。任何一条Disallow记录为空,说明该网站的所有部分都允许被访问,在”/robots.txt”文件中,至少要有一条Disallow记录。如果”/robots.txt”是一个空文件,则对于所有的搜索引擎robot,该网站都是开放的。
robots.txt文件用法举例:
例1. 禁止所有搜索引擎访问网站的任何部分 下载该robots.txt文件 User-agent: * Disallow: /
例2. 允许所有的robot访问 (或者也可以建一个空文件 “/robots.txt” file) User-agent: *Disallow:
例3. 禁止某个搜索引擎的访问 User-agent: BadBotDisallow: /
例4. 允许某个搜索引擎的访问 User-agent: baiduspiderDisallow: User-agent: *Disallow: /
例5.一个简单例子  在这个例子中,该网站有三个目录对搜索引擎的访问做了限制,即搜索引擎不会访问这三个目录。  需要注意的是对每一个目录必须分开声明,而不要写成 “Disallow: /cgi-bin/ /tmp/”。  User-agent:后的*具有特殊的含义,代表”any robot”,所以在该文件中不能有”Disallow: /tmp/*” or “Disallow:*.gif”这样的记录出现. User-agent: *Disallow: /cgi-bin/Disallow: /tmp/Disallow: /~joe/

Robot特殊参数:
1. Google
允许 Googlebot:
如果您要拦截除 Googlebot 以外的所有漫游器访问您的网页,可以使用下列语法:

User-agent:Disallow:/
User-agent:Googlebot
Disallow:
Googlebot 跟随指向它自己的行,而不是指向所有漫游器的行。

“Allow”扩展名:
Googlebot 可识别称为”Allow”的 robots.txt 标准扩展名。其他搜索引擎的漫游器可能无法识别此扩展名,因此请使用您感兴趣的其他搜索引擎进行查找。”Allow”行的作用原理完全与”Disallow”行一样。只需列出您要允许的目录或页面即可。

您也可以同时使用”Disallow”和”Allow”。例如,要拦截子目录中某个页面之外的其他所有页面,可以使用下列条目:

User-Agent:Googlebot
Disallow:/folder1/
Allow:/folder1/myfile.html
这些条目将拦截 folder1 目录内除 myfile.html 之外的所有页面。

如果您要拦截 Googlebot 并允许 Google 的另一个漫游器(如 Googlebot-Mobile),可使用”Allow”规则允许该漫游器的访问。例如:

User-agent:Googlebot
Disallow:/
User-agent:Googlebot-Mobile
Allow:

使用 * 号匹配字符序列:
您可使用星号 (*) 来匹配字符序列。例如,要拦截对所有以 private 开头的子目录的访问,可使用下列条目:

User-Agent:Googlebot
Disallow:/private*/
要拦截对所有包含问号 (?) 的网址的访问,可使用下列条目:

User-agent:*
Disallow:/*?*

使用 $ 匹配网址的结束字符
您可使用 $ 字符指定与网址的结束字符进行匹配。例如,要拦截以 .asp 结尾的网址,可使用下列条目:

User-Agent:Googlebot
Disallow:/*.asp$
您可将此模式匹配与 Allow 指令配合使用。例如,如果 ? 表示一个会话 ID,您可排除所有包含该 ID 的网址,确保 Googlebot 不会抓取重复的网页。但是,以 ? 结尾的网址可能是您要包含的网页版本。在此情况下,可对 robots.txt 文件进行如下设置:

User-agent:*
Allow:/*?$
Disallow:/*?
Disallow:/ *?一行将拦截包含 ? 的网址(具体而言,它将拦截所有以您的域名开头、后接任意字符串,然后是问号 (?),而后又是任意字符串的网址)。

Allow: /*?$ 一行将允许包含任何以 ? 结尾的网址(具体而言,它将允许包含所有以您的域名开头、后接任意字符串,然后是问号 (?),问号之后没有任何字符的网址)。

Sitemap 网站地图:
对网站地图的新的支持方式,就是在robots.txt文件里直接包括sitemap文件的链接。
就像这样:
Sitemap: http://www.etcis.com/sitemap.xml
目前对此表示支持的搜索引擎公司有Google, Yahoo, Ask and MSN。
不过,我建议还是在Google Sitemap 进行提交,里面有很多功能可以分析你的链接状态。

Robots.txt带来的好处:
1. 几乎所有的搜索引擎Spider都遵循robots.txt给出的爬行规则,协议规定搜索引擎Spider进入某个网站的入口即是该网站的robots.txt,当然,前提是该网站存在此文件。对于没有配置robots.txt的网站,Spider将会被重定向至404 错误页面,相关研究表明,如果网站采用了自定义的404错误页面,那么Spider将会把其视作robots.txt——虽然其并非一个纯粹的文本文件——这将给Spider索引网站带来很大的困扰,影响搜索引擎对网站页面的收录。

2. robots.txt可以制止不必要的搜索引擎占用服务器的宝贵带宽,如email retrievers,这类搜索引擎对大多数网站是没有意义的;再如image strippers,对于大多数非图形类网站来说其也没有太大意义,但却耗用大量带宽。

3. robots.txt可以制止搜索引擎对非公开页面的爬行与索引,如网站的后台程序、管理程序,事实上,对于某些在运行中产生临时页面的网站来说,如果未配置robots.txt,搜索引擎甚至会索引那些临时文件。

4. 对于内容丰富、存在很多页面的网站来说,配置robots.txt的意义更为重大,因为很多时候其会遭遇到搜索引擎Spider给予网站的巨大压力:洪水般的Spider访问,如果不加控制,甚至会影响网站的正常访问。

5. 同样地,如果网站内存在重复内容,使用robots.txt限制部分页面不被搜索引擎索引和收录,可以避免网站受到搜索引擎关于 duplicate content的惩罚,保证网站的排名不受影响。

robots.txt带来的风险及解决:
1. 凡事有利必有弊,robots.txt同时也带来了一定的风险:其也给攻击者指明了网站的目录结构和私密数据所在的位置。虽然在Web服务器的安全措施配置得当的前提下这不是一个严重的问题,但毕竟降低了那些不怀好意者的攻击难度。

  比如说,如果网站中的私密数据通过www.yourdomain.com/private/index.html 访问,那么,在robots.txt的设置可能如下:

User-agent: *
Disallow: /private/

  这样,攻击者只需看一下robots.txt即可知你要隐藏的内容在哪里,在浏览器中输入www.yourdomain.com/private/ 便可访问我们不欲公开的内容。对这种情况,一般采取如下的办法:

设置访问权限,对/private/中的内容实施密码保护,这样,攻击者便无从进入。
另一种办法是将缺省的目录主文件index.html更名为其他,比如说abc-protect.html,这样,该内容的地址即变成www.yourdomain.com/private/abc-protect.htm,同时,制作一个新的index.html文件,内容大致为“你没有权限访问此页”之类,这样,攻击者因不知实际的文件名而无法访问私密内容。
2. 如果设置不对,将导致搜索引擎将索引的数据全部删除。

User-agent: *
Disallow: /
上述代码将禁止所有的搜索引擎索引数据。

目前看来,绝大多数的搜索引擎机器人都遵守robots.txt的规则,而对于Robots META标签,目前支持的并不多,但是正在逐渐增加,如著名搜索引擎GOOGLE就完全支持,而且GOOGLE还增加了一个指令“archive”,可以限制GOOGLE是否保留网页快照。例如:

<META NAME=”googlebot” CONTENT=”index,follow,noarchive”>

表示抓取该站点中页面并沿着页面中链接抓取,但是不在GOOLGE上保留该页面的网页快照。

日志信息 »

该日志于2007-09-28 11:25由 阿猎 发表在SEO分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。

相关日志 »

相关日志

3条评论

  1. Gay Condoms 说:

    You can definitely see your expertise in the work you write. The sector hopes for even more passionate writers such as you who aren’t afraid to say how they believe. At all times go after your heart.

  2. Great blog! I am loving it!! Will be back later to read some more. I am bookmarking your feeds also

  3. I’m still learning from you, as I’m trying to achieve my goals. I certainly enjoy reading all that is posted on your website.Keep the information coming. I loved it!

发表评论 »

返回顶部