为什么需要robots协议

当前项目网站经常面临着被爬虫的风险。这些爬虫中有些是必要的,有些则是非要的,甚至是恶意的。漫无目的的爬虫将会极大消耗服务器带宽,在未经网站所有人许可的情况下随意复制、使用网站数据信息。同时,应当被爬虫的数据又不能保证搜索引擎编入索引文件中以增加曝光量。
而robots协议可以解决这些问题。seo建议各位仅当网站包含不希望被搜索引擎收录的内容时,才使用robots协议。如果您希望搜索引擎收录网站上所有内容,请勿建立robots.txt文件(robots协议的具体实现)。

网络爬虫爬取过程

互联网的网页都是通过超链接互相关联的,进而形成了网页的网状结构。所以爬虫的工作方法就如蜘蛛在网络上沿着超链接按照一定的爬取规则爬取网页。

基本流程大致为:
1) 喂给爬虫一堆 URL,称之为 种子(Seeds);
2) 爬虫爬取 Seeds,分析 HTML 网页,抽取其中的 超链接;
3) 爬虫接着爬取这些 新发现 的超链接指向的 HTML 网页;
4) 对过程 2),3)循环往复;

robots是什么

Robots 协议(也称为爬虫协议等)的全称是「网络爬虫排除标准」(Robots Exclusion Protocol)。网站通过 Robots 协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。

robots工作原理

Robots 协议通过robots.txt 进行表述。
robots.txt(统一小写)是一个文本文件,存放于网站根目录下,任何一个常见的文本编辑器都可以查看或编辑它。
当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。
一个robots.txt只能控制相同协议,相同端口的网页抓取策略。

最简单的robots.txt

1、文件名统一小写,放置到网站根目录的路径下

2、文件内容
最简单的robots.txt只有两条规则:
  User-agent:指定对哪些爬虫生效
  Disallow:指定要屏蔽的网址
Allow:与Disallow正好相反,允许爬虫访问的路径。可与disallow配合使用,谁管的越细就听谁的,范围更明确时起作用。

举个栗子,以下为不允许任何操作引擎访问任何目录

User-agent: *
Disallow: /

以下为不允许一淘spider、慧慧助手访问任何目录,不允许任何网站访问以“/login”或“/xy”开头的目录,但允许访问以"/xy-tb"开头的目录。

User-agent: *
Disallow: /login
Disallow: /xy
Allow: /xy-tb
User-agent: EtaoSpider
Disallow: /
User-agent: HuihuiSpider
Disallow: /

验证方式

语法验证工具

https://www.websiteplanet.com/zh-hans/webtools/robots-txt/

百度测试工具

打开https://ziyuan.baidu.com/robots/index,在右侧输入网站地址,点击检测,如果在根目录下已放置robots.txt文档,则会在下方显示您的Robots文件已生效。

在域名下输入指定路径进行校验,查看规则是否满足需求



google测试工具

https://support.google.com/webmasters/answer/6062598?hl=zh-Hans

通过Scrapy验证

scrapy默认支持robots协议
入门教程参考如下:
https://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html

使用爬虫的法律风险

robots协议并不是一个规范,而只是约定俗成的,不能保证被强制执行,所以并不能保证网站的隐私。在爬虫与反爬虫的对弈中,爬虫一定会胜利。因此对机密信息的保护并不能依赖robots协议。
关于Robots协议的法律属性,我国目前法律下并没有明确规定,但《互联网搜索引擎服务自律公约》第七条规定,“遵循国际通行的行业惯例与商业规则,遵守机器人协议(robots协议)”。第八条则规定“互联网站所有者设置机器人协议应遵循公平、开放和促进信息自由流动的原则,限制搜索引擎抓取应有行业公认合理的正当理由,不利用机器人协议进行不正当竞争行为,积极营造鼓励创新、公平公正的良性竞争环境。”
如前所述说,由于爬虫的批量访问会给网站带来巨大的压力和负担,因此许多网站经营者会采取技术手段,以阻止爬虫批量获取自己网站信息。常见的技术措施包括:(1)通过UA 识别爬虫、(2)设置IP访问频率,如果超过一定频率,弹出验证码(3)通过并发识别爬虫;(4)请求的时间窗口过滤统计;(5)限制单个ip/api token的访问量;(6)识别出合法爬虫(7)蜜罐资源等。
强行突破某些特定被爬方的技术措施,可能构成刑事犯罪行为。《刑法》第二百八十六条还规定,违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,构成犯罪,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。而违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,也构成犯罪,依照前款的规定处罚。
当前站点也采取了一定的技术措施,并在系统中记录有痕迹。可以通过这些措施识别出非合法爬虫,并保留法律追责权利。

附录

(一)常见语法属性

robots.txt整个文件分为x节,一节由y个User-agent行和z个Disallow行组成。一节就表示对User-agent行指定的y个爬虫屏蔽z个网址。这里x>=0,y>0,z>0。x=0时即表示空文件,空文件等同于没有robots.txt。
其它的还有allow、sitemap、Crawl-delay(貌似现在大多不支持了)等,但这些并不是所有引擎都支持的。
(1)、User-agent
  爬虫抓取时会声明自己的身份,这就是User-agent,如http协议里的User-agent,robots.txt利用User-agent来区分各个引擎的爬虫。
  举例说明:
  //指定google网页搜索引擎
User-agent:Googlebot
  //指定所有爬虫
  User-agent: *

(2)、Disallow
  Disallow行列出的是要拦截的网页,以正斜线 (/) 开头,可以列出特定的网址或模式。
  要屏蔽整个网站,使用正斜线即可,如下所示:
  Disallow: /
  要屏蔽某一目录以及其中的所有内容,在目录名后添加正斜线,如下所示:
  Disallow: /无用目录名/
  要屏蔽某个具体的网页,就指出这个网页,如下所示:
  Disallow: /网页.html

(3)、Allow ,允许访问
举个栗子,如下意为屏蔽seo开头,且不屏蔽seo50,但屏蔽seo50下的seo.html
Disallow:/seo
  Allow:/seo50/
  Disallow:/seo50/seo.html

(4)、sitemap
通知搜索引擎网站上有哪些可供抓取的网页,防止爬虫通过链接抓取不到该地址。
最简单的Sitepmap形式就是XML文件,也可以是html文件
Sitemap: /sitemap.html 告诉爬虫这个页面是网站地图。
示例如下:
https://www.fanhaobai.com/sitemap.xml

(5)、指定资源爬取频率
Request-rate: 用来限制URL的读取频率;
Crawl-delay: n 每次抓取间隔n秒;但是次数的含义,各个爬虫引擎略有不同;
Request-rate: x/n 每n秒抓取x个页面,避免重复抓取。

(二)基于路径值的网址匹配

*是一个通配符
.htm$ 仅允许访问以".htm"为后缀的URL
/pwd/ 即pwd目录下面的目录。
/pwd pwd的整个目录
/? 所有包含问号 (?) 的网址

(三)常见网站robots.txt

https://www.baidu.com/robots.txt
https://tieba.baidu.com/robots.txt
https://www.jd.com/robots.txt
https://www.taobao.com/robots.txt
https://www.zhihu.com/robots.txt
https://www.sogou.com/robots.txt
https://www.aliyun.com/robots.txt
https://cn.bing.com/robots.txt
https://www.google.com/robots.txt

robots协议限制爬虫相关推荐

  1. (转)Robots协议(爬虫协议、机器人协议)

    Robots协议(也称为爬虫协议.机器人协议等)的全称是"网络爬虫排除标准"(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以 ...

  2. Robots协议(爬虫协议、机器人协议)

    Robots协议(也称为爬虫协议.机器人协议等)的全称是"网络爬虫排除标准"(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以 ...

  3. 【K哥爬虫普法】百度、360八年乱战,robots 协议之战终落幕

    我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K哥特设了"K哥爬虫普法"专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识,知 ...

  4. 丑憨批的爬虫笔记2(爬虫引发的问题+robots协议)

    去搜 user-agent!!!! referer!!!!! 网页中怎么查看请求头header信息 点一下Name里的东西就会出来 规模大小分类 robots协议 User-agent: * /// ...

  5. python遵循什么协议_《Python网络爬虫》2.3 Robots协议的遵守方式

    在实际操作中我们这样的爬虫该如何遵守robots协议呢? Robots协议的使用 对于任何网络爬虫来讲,它应该能够自动或人工的识别robots.txt文件,根据文件的内容再进行爬取. 即使不写这样的代 ...

  6. Python爬虫——爬虫是什么都可以爬的吗?Robots协议!

    Python爬虫--爬虫是什么都可以爬的吗? 初识"爬虫"这个词时,想必大家都会和我一样,认为"爬虫"就是爬取网站上的各种内容,可以抓取网站的信息为我们所用. ...

  7. 爬虫:Robots协议

    Robots 协议也称作爬虫协议.机器人协议,它的全名叫作网络爬虫排除标准( Robots Exclusion Protocol ),用来告诉爬虫和搜索引擎哪些页面可以抓取,哪些不可以抓取 它通常是一 ...

  8. 【网络爬虫与信息提取】Robots协议

    一.网络爬虫引发的问题 网络爬虫根据尺寸可以分为三类:小规模.中规模和大规模. 其中小规模的爬虫一般是用于爬取网页,数据量不大而且对速度不敏感,一般使用requests库就足够了,占据了所有网络爬虫的 ...

  9. 爬虫Robots协议

    Robots协议是互联网爬虫的一项公认的道德规范,它的全称是"网络爬虫排除标准"(Robots exclusion protocol),这个协议用来告诉爬虫,哪些页面是可以抓取的, ...

  10. 网络爬虫的Robots协议

    目前对网络爬虫的限制主要有两种方式: 1.来源审查:判断User-Agent(在请求头中的一个键值对)进行限制,通过该键值对可以判断发起网络请求的浏览器类型,网站维护人员可以根据这个进行请求限制. 2 ...

最新文章

  1. JCIM | 用于自动生成类药分子的生成网络复合体(GNC)
  2. 百度Apollo首次披露纯视觉L4无人车方案:10摄像头,对标Mobileye
  3. 【面试必备】javascript操作DOM元素
  4. Boost:bimap双图的突变的测试程序
  5. c现代方法 13章程序设计题 自己编写答案
  6. 小师妹学JavaIO之:NIO中Channel的妙用
  7. 让你久等了!《码出高效:Java 开发手册》正式发布
  8. 香港中文大学(深圳)张大鹏教授项目组招聘PhD
  9. EventBus猜想 ----手把手带你自己实现一个EventBus
  10. 基于汇编的 C/C++ 协程 - 背景知识
  11. java monitor 翻译_Java 对象锁与monitor的区别
  12. Xmanager学习1_Xbrowser无法连接到Linux的解决办法
  13. 创业团队产品如何战胜大公司的抄袭 腾讯抄你肿么办?
  14. Android广告平台收益,Android移动广告收入首超iOS
  15. 我在ESB上走的弯路
  16. Linux服务器配置 (转载)
  17. 侠众道武功最佳练级方案_侠众道二层武功先练什么 武功选择分享
  18. 【JS】创建和添加节点示例
  19. 一下科技助力短视频行业移动视频生态发展
  20. 易航网址引导系统 - 一款极其优雅的网址引导系统+内置16套主题和防墙防举报插件

热门文章

  1. 【转】京东抢购服务高并发实践
  2. 15、Java基础---继承和访问属性
  3. 论坛报名 | DataFunCon:用户画像论坛
  4. 鸿蒙炼体 等级划分,洪荒的等级划分
  5. Unity 之游戏特效
  6. 真正了解gets() fgets() getc() fgetc()的区别
  7. 径向渐变加阴影html,CSS3 径向渐变(radial-gradient)
  8. Dubbo支持自适应等待无损下线
  9. Mac重装Homebrew
  10. ROS2初学者教程(Dashing和Eloquent)Windows