简单街和IT生活网教您怎么自己书写一个保护网站隐私的Robots协议(robots.txt)
我相信很多刚接触网站建设和推广的新站长都和IT生活我一样是从虚拟空间开始起家的,一开始的流量,带宽都是有限制的,而搜索引擎对网站的抓取必然也是要占用流量的,所以避免搜索引擎"无效的抓取"并指引其进行高效的抓取就显得十分重要了,那我们如何才能屏蔽掉这些目录呢?这时我们只需要书写一个国际互联网界通行的Robots协议(也就是robots.txt)便可解决这一难题!
先来一下基础的了解什么是Robots协议(robots.txt)?
Robots协议是国际互联网界通行的道德规范,网站通过它告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。其目的是保护网站数据和敏感信息、确保用户个人信息和隐私不被侵犯。因其不是命令,故需要搜索引擎自觉遵守。
Robots协议(robots.txt)的基本语法是什么,它是如何奏效的?
当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,各搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。
百度官方建议,仅当您的网站包含不希望被搜索引擎收录的内容时,才需要使用robots.txt文件。
如果您希望搜索引擎收录网站上所有内容,请勿建立robots.txt文件。
编写robots的基本语法
robots.txt必须放置在一个站点的根目录下,而且文件名必须全部小写。
User-agent: 定义搜索引擎的类型
Disallow: 定义禁止搜索引擎收录的URL地址
Allow: 定义允许搜索引擎收录的URL地址
说明
设定禁止访问的部分,可以用完整url,也可以用相对路径,可以是单个文件,也可以是整个文件夹,也可以用通配符限定指定类型
设定允许访问的部分,不过因为默认是全部允许的,这个语法通常是配合disallow使用的,用它来完成 如"除了xxx.html该目录下全部不能访问"这样的设定。
要注意的是allow和disallow的顺序是有讲究的,搜索引擎会以它先看到的规则为判断标准。
鉴于网络安全与隐私的考虑,搜索引擎遵循robots.txt协议。通过根目录中创建的纯文本文件robots.txt,网站可以声明不想被robots访问的部分。每个网站都可以自主控制网站是否愿意被搜索引擎收录,或者指定搜索引擎只收录指定的内容。当一个搜索引擎的爬虫访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果该文件不存在,那么爬虫就沿着链接抓取,如果存在,爬虫就会按照该文件中的内容来确定访问的范围。
简单街和IT生活网教您怎么自己书写一个保护网站隐私的Robots协议(robots.txt)
我们常用的搜索引擎类型有:(User-agent区分大小写)
google蜘蛛:Googlebot
百度蜘蛛:Baiduspider
360蜘蛛:360Spider
sogou蜘蛛:Sogou Web Spider
yahoo蜘蛛:Yahoo!slurp
alexa蜘蛛:ia_archiver
bing蜘蛛:MSNbot
Soso蜘蛛:Sosospider
Google Adsense蜘蛛:Mediapartners-Google
有道蜘蛛:YoudaoBot
泽许蜘蛛: Zexuwhte
altavista蜘蛛:scooter
lycos蜘蛛:lycos_spider_(t-rex)
alltheweb蜘蛛:fast-webcrawler
inktomi蜘蛛:slurp
robots.txt文件使用误区
特别提示:robots里面内容的大小写不可更改,Disallow后面的冒号必须为英文状态的
误区一
在robots.txt文件中设置所有的文件都可以被搜索蜘蛛抓取,这样可以增加网站的收录率。
网站中的脚本程序、样式表等文件即使被蜘蛛收录,也不会增加网站的收录率,还只会占用服务器存储空间。因此必须在robots.txt文件里设置不要让搜索蜘蛛索引脚本程序、样式表等文件,具体哪些文件需要排除,在robots.txt使用技巧一文中有详细介绍。
误区二
搜索蜘蛛抓取网页太浪费服务器资源,在robots.txt文件中设置所有的搜索蜘蛛都不能抓取全部的网页。
如果这样的话,会导致整个网站不能被搜索引擎收录。
robots.txt文件字符编码
robots.txt使用什么字符编码,并没有相关规定,都是各搜索引擎自已定义的。虽然google和其它搜索引擎建议大家使用 utf-8 字符编码格式的robots.txt,但几乎所有的搜索引擎都支持 ANSI 编码格式,而google自已对 utf-8 编码格式的robots.txt,会出现首字乱码。所以为了达到最大的兼容性,建议大家使用 ANSI 格式编码,或者使用 utf-8 编码格式,但需要空出首行。
还有一个建议就是robots.txt中最好不要出现中文,即使是注释也要使用英文。
robots.txt文件生效时间
robots.txt文件一般生效时间为7-15天,即1-2周。如果新网站源码中包含robots.txt文件,那样蜘蛛进行爬行时就会生效,如果是后来添加的,那样蜘蛛需要对数据进行更新,时间一般在7-15天。
Sitemap:指示蜘蛛去爬取网站的sitemap文件
关于通配符:"$" 匹配行结束符;"*"匹配0或多个任意字符。
我的网站示例:
User-agent: *
Disallow: /admin/
Disallow:/install/
sitemap:http://jiandanjie.com/sitemap.xml
更多的示例如下,收集于网络:
简单街和IT生活网教您怎么自己书写一个保护网站隐私的Robots协议(robots.txt)
用法举例
例1.禁止所有搜索引擎访问网站的任何部分 | User-agent: * Disallow: / |
例2.允许所有的robot访问 (或者也可以建一个空文件 "/robots.txt") | 第1种写法 User-agent: * Allow: / 第2种写法 User-agent: * Allow: 第3种写法 User-agent: * Disallow: |
例3. 仅禁止Baiduspider访问您的网站 | User-agent: Baiduspider Disallow: / |
例4. 仅允许Baiduspider访问您的网站 | User-agent: Baiduspider Allow: / |
例5. 禁止spider访问特定目录 在这个例子中,该网站有三个目录对搜索引擎的访问做了限制,即robot不会访问这三个目录。需要注意的是对每一个目录必须分开声明,而不能写成 "Disallow: /cgi-bin/ /tmp/"。 | User-agent: * Disallow: /cgi-bin/ Disallow: /tmp/ Disallow: /~joe/ |
例6. 允许访问特定目录中的部分url | User-agent: * Allow: /cgi-bin/see Allow: /tmp/hi Allow: /~joe/look |
例7. 使用"*"限制访问url 禁止访问/cgi-bin/目录下的所有以".htm"为后缀的URL(包含子目录)。 | User-agent: * Disallow: /cgi-bin/*.htm |
例8. 使用"$"限制访问url 仅允许访问以".htm"为后缀的URL。 | User-agent: * Allow: / .htm$ |
例9. 禁止访问网站中所有的动态页面 | User-agent: * Disallow: /*?* |
例10. 禁止Baiduspider抓取网站上所有图片 仅允许抓取网页,禁止抓取任何图片。 | User-agent: Baiduspider Disallow: /*.jpg$ Disallow: /* .jpeg$ Disallow: /* .gif$ Disallow: /* .png$ Disallow: /*.bmp$ |
例11. 仅允许Baiduspider抓取网页和。gif格式图片 允许抓取网页和gif格式图片,不允许抓取其他格式图片 | User-agent: Baiduspider Allow: .gif$ Disallow: /.jpg$ Disallow: / .jpeg$ Disallow: / .png$ Disallow: /.bmp$ |
例12. 仅禁止Baiduspider抓取。jpg格式图片 | User-agent: /Baiduspider Disallow: /.jpg$ |
图片搜索 Baiduspider-image
视频搜索 Baiduspider-video
新闻搜索 Baiduspider-news
百度搜藏 Baiduspider-favo
百度联盟 Baiduspider-cpro
商务搜索 Baiduspider-ads
网页以及其他搜索 Baiduspider
简单街和IT生活网教您怎么自己书写一个保护网站隐私的Robots协议(robots.txt)