一、Robots.txt协议
Robots协议,也称为爬虫协议、机器人协议等,其全称为“网络爬虫排除标准(Robots Exclusion Protocol)”。网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。也既是Robots的用法有两种,一种是告诉搜索引擎哪些页面你不能抓(默认其他的就可以抓);一种是告诉搜索引擎你只能抓取哪些页面(默认其他的不可以抓)。
 
当一个搜索机器人(蜘蛛)访问一个站点时,它会首先检查网站根目录下是否存在robots.txt,如果存在,就会按照文件中的内容确定访问范围,如果不存在,则沿着链接抓取。
 
协议的历史
 
Robots Exclusion Protocol协议是由 Martijn Koster 在1994年2月,于Nexor工作期间在 www-talk 邮件列表中提出的。该协议提出后,Koster的服务器甚至遭到了反对者的拒绝服务攻击。而该协议迅速成为事实上的标准,为大多数的人所接受。
 
文件的写法:
 
User-agent:*
*是一个通配符,表示所有的搜索引擎种类
Disallow:/admin/
这表示禁止搜索引擎爬寻admin目录下的内容
Disallow:*?*
这表示禁止搜索引擎爬寻包含?的网页
Sitemap:sitemap.xml
这里通过Sitemap指定固定的网站地图页面。目前对此表示支持的搜索引擎公司有Google, Yahoo, Ask and MSN。而中文搜索引擎公司,显然不在这个圈子内。这样做的好处就是,站长不用到每个搜索引擎的站长工具或者相似的站长部分,去提交自己的sitemap文件,搜索引擎的蜘蛛自己就会抓取robots.txt文件,读取其中的sitemap路径,接着抓取其中相链接的网页。
 
京东的Robots.txt。(时间:2015-11-25)
 
二、Robots.txt以外的内容
 
除了Robots.txt以外,还可以使用Robots Meta来向搜索引擎传递信息,先看示例如下:
<META NAME="ROBOTS" CONTENT="INDEX,FOLLOW">
content部分有四个选项:index、noindex、follow、nofollow,指令间用“,”分隔。
 
共有四种组合:
<META NAME="ROBOTS" CONTENT="INDEX,FOLLOW">
<META NAME="ROBOTS" CONTENT="NOINDEX,FOLLOW">
<META NAME="ROBOTS" CONTENT="INDEX,NOFOLLOW">
<META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW">
 
其中:
<META NAME="ROBOTS" CONTENT="INDEX,FOLLOW">可以写成<META NAME="ROBOTS" CONTENT="ALL">;
<META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW">可以写成<META NAME="ROBOTS" CONTENT="NONE">
 
目前看来,绝大多数的搜索引擎机器人都遵守robots.txt的规则,而对于Robots META标签,目前支持的并不多,但是正在逐渐增加,如著名搜索引擎GOOGLE就完全支持,而且GOOGLE还增加了一个指令“archive”,可以限制GOOGLE是否保留网页快照。例如:
<META NAME="googlebot" CONTENT="index,follow,noarchive">
表示抓取该站点中页面并沿着页面中链接抓取,但是不在GOOLGE上保留该页面的网页快照。
 
三、Robots.txt使用上应注意的一些问题
 
1、每当用户试图访问某个不存在的URL时,服务器都会在日志中记录404错误(无法找到文件)。每当搜索蜘蛛来寻找并不存在的robots.txt文件时,服务器也将在日志中记录一条404错误,所以你应该在网站中添加一个robots.txt。
 
2、如果后台和前台在一个域名下,不希望爬虫抓取后台程序的,可以在Robots.txt明确不让爬虫抓取的目录。但这会不会被某些恶意分子一下子就能够知道后台目录呢?
 
3、国内常见搜索机器人的名字
 
参考资料:

Robots.txt 协议详解及使用说明的更多相关文章

  1. 【转载】TCP /IP协议详解

    首先,TCP/IP不是一个协议,而是一个协议族的统称. 里面包括了IP协议,IMCP协议,TCP协议,以及http.ftp.pop3协议等等. TCP/IP协议分层 提到协议分层,我们很容易联想到IS ...

  2. bt协议详解 基础篇(上)

    bt协议详解 基础篇(上) 最近开发了一个免费教程的网站,产生了仔细了解bt协议的想法,所以写了这一篇文章,后续还会写一些关于搜索和索引的东西,都是在开发这个网站的过程中学习到的技术,敬请期待. 1 ...

  3. zz:NETCONF协议详解

    随着SDN的大热,一个诞生了十年之久的协议焕发了第二春,它就是NETCONF协议.如果你在两年前去搜索NETCONF协议,基本得到的信息都是"这个协议是一个网管协议,主要目的是弥补SNMP协 ...

  4. TCP /IP协议详解【转】

    转自:https://www.jianshu.com/p/0cf648510bce?utm_campaign=maleskine&utm_content=note&utm_medium ...

  5. HTTP协议详解(转)

    转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的 ...

  6. HTTP协议详解

    Author :Jeffrey 引言 HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展. ...

  7. 动态选路、RIP协议&&OSPF协议详解

    动态选路.RIP协议&&OSPF协议详解 概念 当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就出现了动态选路.路由器之间必须采用选路协议进行通信,这样的选路协议 ...

  8. ASP.NET知识总结(3.HTTP协议详解)

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

  9. 接口测试之HTTP协议详解

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

随机推荐

  1. 关于svn的使用

    svn听课笔记 1. 下载并安装svn2. 将svn安装目录中bin目录添加到用户path变量中.3. 创建svn根目录svnroot4. 启动svn服务 在dos启动命令: svnserve -d ...

  2. 浅谈java性能分析

    浅谈java性能分析,效能分析 在老师强烈的要求下做了效能分析,对上次写过的词频统计的程序进行分析以及改进. 对于效能分析:我个人很浅显的认为就是程序的运行效率,代码的执行效率等等. java做性能测 ...

  3. document获取节点byTagName

    /* *对于页面中的超链接,新闻链接通过新窗口打开 *当然是要获取其中被操作的超链接对象. *可是通过Document获取超链接,拿到的是页面中所有的超链接节点. *只想获取一部分如何办呢? *只要获 ...

  4. 【7集iCore3基础视频】7-2 iCore3原理图介绍

    iCore3原理图介绍: 高清源视频:http://pan.baidu.com/s/1hsPkifM 密码:ei8ciCore3 购买链接:https://item.taobao.com/item.h ...

  5. PHP 判断客户端是IOS还是Android

    <?php if(strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone')||strpos($_SERVER['HTTP_USER_AGENT'], 'iPad ...

  6. jQuery 中 attr() 和 prop() 方法的区别

    前几天,有人给 Multiple Select 插件 提了问题: setSelects doesn't work in Firefox when using jquery 1.9.0 一直都在用 jQ ...

  7. RAC One Node转换为RAC

    1.查看状态 [oracle@rone1 ~]$ srvctl config database -d rone Database unique name: rone Database name: ro ...

  8. 2Sigma OA prepare: Friends Circle

    DFS & BFS: 关键在于构造graph package twoSigma; import java.util.ArrayList; import java.util.HashSet; i ...

  9. nodejs框架express快速开始

    认识express 创建应用 get请求 简述中间件 all方法 use方法1 use方法2 回调函数 获取主机.路径名 Get请求 - query Get请求 - param Get请求 - par ...

  10. StructureMap使用方法(转)

    终于到了题目中的MVC使用StructureMap依赖注入的配置与实现了.在ASP.Net三层架构应用中StructureMap的是最老的IOC/DI工具,也就是依赖注入,很多线上的项目都使用了Str ...