摘要:马海祥博客解释:意思也就是禁止百度蜘蛛和Google蜘蛛抓取所有文章四、Robots协议中的语法属性解释五、Robots协议中的其它语法属性
当搜索蜘蛛访问某个站点时,它会首先检查该站点根目录中是否存在robots.txt。 如果存在,搜索机器人会根据文件内容确定访问范围; 如果该文件不存在,则所有搜索蜘蛛将能够访问网站上所有不受密码保护的页面。
1. 什么是Robots协议?
Robots协议(又称爬虫协议、机器人协议等)全称是“Robots Exclusion Protocol”。 网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。
机器人是一种协议,而不是命令。 robots.txt 文件是放置在网站根目录中的文本文件。 可以使用任何常见的文本编辑器创建和编辑它。 robots.txt是搜索引擎访问网站时第一个查看的文件。 它的主要作用是告诉蜘蛛程序可以查看服务器上的哪些文件。
如果你把网站想象成一个房间,那么robots.txt就是房主挂在房间门口的“请勿打扰”或“欢迎”标志。 该文件告诉访问搜索引擎哪些房间可以进入和访问,哪些房间不向搜索引擎开放,因为它们存放贵重物品或可能涉及居民和访客的隐私。 但robots.txt不是命令,也不是防火墙,就像看门人无法阻止小偷等恶意入侵者一样。
因此,马海翔建议站长只有在自己的网站包含不希望被搜索引擎收录的内容时才需要使用robots.txt文件。 如果您希望搜索引擎包含网站上的所有内容,请勿创建 robots.txt 文件。
2. 机器人协议原则
Robots协议是国际互联网界通用的道德准则,基于以下原则建立:
1、搜索技术应服务于人类,同时尊重信息提供者的意愿,维护其隐私权;
2、网站有义务保护用户的个人信息和隐私不受侵犯。
3. 如何编写Robots协议
只需将 robots.txt 放在站点的根目录中即可。 一份robots.txt只能控制同一协议、同一端口、同一站点的网页抓取策略。
1、robots.txt常规写法
最简单的robots.txt只有两条规则:
User-agent:指定哪些爬虫会生效
禁止:指定要阻止的 URL
整个文件分为 x 个部分,其中一个部分由 y User-agent 行和 z Disallow 行组成。 其中一个部分表示阻止 User-agent 行中指定的 y 爬网程序的 z URL。 这里x>=0,y>0,z>0。 当x=0时,表示空文件。 空文件相当于没有 robots.txt。
这两条规则详细描述如下:
(1)、用户代理
爬虫在爬行时会声明自己的身份。 这是用户代理。 是的,就是http协议中的User-agent。 Robots.txt使用User-agent来区分各个引擎的爬虫。
例如:Google 的网络搜索爬虫的用户代理是 Googlebot。 以下行指定 Google 的抓取工具。
用户代理:Googlebot
如果要指定所有爬虫怎么办? 不可能详尽无遗,您可以使用以下行:
用户代理: *
有同学可能想问,我怎么知道爬虫的User-agent是什么?这里提供了一个简单的列表:爬虫列表
当然,您也可以查看相关搜索引擎信息来获取官方数据,例如谷歌爬虫列表、百度爬虫列表
(2)、不允许
禁止行列出了要阻止的网页。 它以正斜杠 (/) 开头,可以列出特定的 URL 或模式。
要阻止整个网站,只需使用正斜杠robots 禁止百度收录,如下所示:
不允许: /
要阻止目录及其所有内容,请在目录名称后添加正斜杠,如下所示:
禁止:/无用的目录名/
要阻止特定页面,请指向该页面,如下所示:
禁止:/webpage.html
例子:
用户代理:baiduspider
不允许: /
用户代理:Googlebot
不允许: /
马海翔博客解释:这意味着禁止百度蜘蛛和谷歌蜘蛛抓取所有文章
2、robots.txt的高级编写方法
首先声明一下,高级玩法并不是所有引擎的爬虫都支持的。 一般来说,Google作为搜索引擎技术的领导者,支持是最好的。
(1)、允许
如果我们需要屏蔽seo1-seo100,但不需要屏蔽seo50,我们该怎么办?
计划一:
禁止:/seo1/
禁止:/seo2/
...
禁止:/seo49/
禁止:/seo51/
...
禁止:/seo100/
场景2:
禁止:/seo
允许:/seo50/
对比以上两种方案,大家应该知道如何使用allow了。 如果你的网站目前有这个需求,马海翔建议你可以使用方案2来解决。
但是如果你想在seo50下屏蔽seo.htm文件该怎么办呢?
禁止:/seo
允许:/seo50/
禁止:/seo50/seo.html
如果你聪明的话,一定能发现其中的规律吧? 谁更关心,谁就会听谁的。
(二)、网站地图
前面提到,爬虫会通过网页内的链接发现新的网页,但是如果链接没有指向的网页怎么办? 或者说根据用户输入条件生成的动态网页呢? 是否可以允许网站管理员告知搜索引擎其网站上可抓取的页面? 这是站点地图。
Sitepmap 最简单的形式是一个 XML 文件,它列出了站点中的 URL 以及有关每个 URL 的其他数据(上次更新时间、更改频率、相对于站点上其他 URL 的重要性等)。 ),使用这些信息搜索引擎可以更智能地抓取网站内容。
这里又来了一个新问题,爬虫怎么知道这个网站是否提供了sitemap文件,或者网站管理员生成了sitemap(可能是多个文件),爬虫怎么知道把它放在哪里呢?
由于robots.txt的位置是固定的,所以大家想到了将sitemap的位置信息放到robots.txt中,这就成为robots.txt中的新成员,比如:
网站地图:
考虑到一个网站有很多网页,手动维护站点地图并不可靠。 对此,马海翔建议大家可以使用Google提供的工具来自动生成站点地图。
(3)、元标签
其实严格来说,这部分内容并不属于robots.txt,但是却非常相关。 我不知道该放哪里,所以暂时放在这里。
robots.txt的初衷是让网站管理员能够管理可以出现在搜索引擎中的网站内容。 然而,即使您使用robots.txt文件来阻止爬虫抓取这些内容,搜索引擎也可以通过其他方式找到这些页面并将其添加到索引中。
例如,其他网站可能仍然链接到该网站,因此页面 URL 和其他公开信息(例如相关网站链接中的锚文本或开放目录管理系统中的标题)可能会出现在引擎的搜索结果中。 ,如果你想对搜索引擎完全不可见怎么办? 马海翔给你的答案是:meta tag,即元标签。
例如,要完全阻止某个网页的内容被列在搜索引擎索引中(即使其他网站链接到该网页),可以使用 noindex 元标记。 只要搜索引擎查看该页面,它就会看到 noindex 元标记并阻止该页面在索引中显示。 这里请注意,noindex 元标记提供了一种逐页控制对网站的访问的方法。
例如,如果您想阻止所有搜索引擎对您网站上的网页进行索引,您可以在网页的头部代码中添加以下内容:
这里的name值可以设置为某个搜索引擎的User-agent,以指定要屏蔽的某个搜索引擎。
除了noindex之外,还有其他元标记,例如nofollow,可以禁止爬虫跟踪此页面的链接。 这里马海翔还想提一件事:noindex和nofollow在HTML 4.01规范中都有描述,但不同引擎对其他标签的支持程度有所不同。 还要求读者查阅每个引擎的文档。
(4)、爬行延迟
robots.txt除了控制什么可以爬、什么不可以爬之外,还可以用来控制爬虫的爬行速度。 如何? 通过设置爬网程序在两次爬网之间等待的秒数。
爬行延迟:5
表示本次爬网后需要等待 5 秒才能进行下一次爬网。
马海翔的博客提醒大家:Google已经不再支持这种方法,但是站长工具中提供了一个功能,可以更直观地控制爬行速度。
这里说一句题外话。 几年前,马海翔记得曾经有一段时间robots.txt也支持复杂的参数:Visit-time。 只有在visit-time指定的时间段内,爬虫才能访问; request-rate:用于限制URL的读取频率,以控制不同时间段的不同爬行率。
后来估计支持的人太少了,所以就逐渐废除了。 有兴趣的博主可以自行研究一下。 马海翔了解到的是,谷歌和百度不再支持这一规则。 其他小型发动机公司似乎从来不支持它。 不支持。
4.Robots协议中语法属性解释
Robots协议用于告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取; 可以屏蔽一些网站中比较大的文件,如图片、音乐、视频等,以节省服务器带宽; 它还可以阻止网站的一些死区。 链接使搜索引擎更容易抓取网站内容; 或者您可以设置站点地图链接来引导蜘蛛抓取页面。
User-agent: * 这里的*代表所有搜索引擎类型,*是通配符。
Disallow: /admin/ 这里的定义是禁止爬取admin目录下的目录。
禁止:/mahaishan/*.htm 禁止访问/mahaishan/目录下所有以“.htm”为后缀的网址(包括子目录)。
禁止:/*?* 禁止访问网站中包含问号 (?) 的所有 URL。
Disallow: /.jpg$ 禁止抓取网页上所有.jpg格式的图片。
Disallow:/mahaixiang/abc.html 禁止爬取ab文件夹下的adc.html文件。
允许:/mahaishan/ 这里的定义是允许爬取mahaishan目录下的目录。
允许:/mahaishan 这里的定义是允许爬取mahaishan整个目录。
允许:.htm$ 仅允许访问带有“.htm”后缀的 URL。
允许:.gif$ 允许抓取网页和gif 格式的图像。
站点地图:/sitemap.html 告诉爬虫该页面是站点地图。
例子:
用户代理: *
不允许: /?*
禁止:/seo/*.htm
用户代理:EtaoSpider
不允许: /
马海翔的博客解释:这意味着禁止所有搜索引擎抓取SEO目录中所有包含问号(?)和.htm文章的URL。 与此同时,etao被彻底封锁。
5. Robots协议中的其他语法属性
1、Robot-version:用于指定Robot协议的版本号
示例:机器人版本:2.0 版
2. Crawl-delay:Yahoo YST的一个特定扩展,通过它我们可以为我们的爬虫设置较低的爬行请求频率。
您可以添加 Crawl-delay:xx 指令,其中“XX”是指爬虫程序两次进入站点时的最小延迟(以秒为单位)。
3. Crawl-delay:定义爬行延迟
示例:抓取延迟:/mahaishan/
4. Visit-time:只有在visit-time指定的时间段内robots 禁止百度收录,机器人才能访问指定的URL,否则无法访问。
例如: Visit-time: 0100-1300 #允许1:00到13:00访问
5、Request-rate:用于限制读取URL的频率
示例:请求速率:40/1m 0100 - 0759 在 1:00 至 07:59 之间以每分钟 40 次的频率访问。
请求率:12/1m 0800 - 1300 8:00 至 13:00 之间以每分钟 12 次的频率访问。
马海翔博客评论:
Robots协议是网站出于安全和隐私考虑而设立的,旨在防止搜索引擎抓取敏感信息。 搜索引擎的原理是自动采集互联网上的网页,并通过爬虫蜘蛛程序获取相关信息。
出于网络安全和隐私的考虑,每个网站都会建立自己的Robots协议,向搜索引擎表明哪些内容愿意并允许被搜索引擎收录,哪些内容不允许。 搜索引擎将按照Robots协议提供内容。 允许抓取。
机器人协议代表了一种契约精神。 互联网企业只有遵守这一规则,才能确保网站和用户的隐私数据不被侵犯。 违反Robots协议将带来巨大的安全隐患。