作者:投稿用户 | 更新时间:2025-12-12 | 热度:306
大家好,今天来为大家解答robots协议这个问题的一些问题点,包括Robots协议可以限制爬虫程序采集某些网页的数据也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~

robots协议(Robots协议可以限制爬虫程序采集某些网页的数据)
2013年1月28日,北京一中院受理某度诉某虎不正当竞争纠纷案并在2014年8月7日作出2668号判决。昨天介绍了诉讼爆发的背景,今天直接看判决内容。
争议行为
双方观点
对《自律公约》的评价
本案原被告双方都援引《自律公约》,主张对方行为不当。
但作为在互联网协会的牵头组织下,由搜索引擎行业内具有较高代表性且占有绝大部分市场份额的企业共同达成的行业共识,《自律公约》可以反映和体现了行业内的公认商业道德和行为标准。
争议焦点
搜索引擎的工作原理简单说就是用户发出搜索要求后,搜索引擎按照事先确定的计算方法,从海量的网上信息中,将符合用户要求的网页挑出,按照特定的排序提供给用户。
这种“挑出”不是收到用户搜索要求后才进行的,而是事先采用网络爬虫技术对信息作出收集、处理,并存储在搜索引擎服务器上,用以提升处理效率。
判决提及,搜索引擎的出现提升了用户获取信息的效率,但也因为搜索方会千方百计增加网络爬虫访问网页的效率,对当时薄弱的互联网基础设施(网站的服务器容量、网络带宽等)产生冲击,引发网站服务商或所有者的不满。
为了解决这个问题,行业中有人发起和制定Robots协议,通过在网站程序写入robots.txt文件,标示限制搜索引擎爬虫机器人访问的信息。
法院认为,Robots协议具有技术规范、单方宣示、普遍遵守、非技术措施四个属性,并非法律意义上的协议或合同,也不会起到强制禁止访问的「技术措施」作用。但是,Robots协议已经成为了一种国内外互联网行业内普遍通行、普遍遵守的技术规范。从国内外因搜索引擎拒绝遵守Robots协议而引起的纠纷甚为少见,也可以侧面看出这一点。
-未完待续-

robots协议(Robots协议可以限制爬虫程序采集某些网页的数据)
根据协议,网站管理员可以在网站域名的根目录下放一个robots.txt 文本文件,里面可以指定不同的网络爬虫能访问的页面和禁止访问的页面,指定的页面由 正则表达式 表示。网络爬虫在采集这个网站之前,首先获取到这个文件,然后解析到其中的规则,然后根据规则来采集网站的数据。
注意,这个协议的存在更多的是需要网络爬虫去遵守,而起不到防止爬虫的功能。
互联网上的网页是通过超级链接互相关联起来的,从而形成了网页的网状结构。爬虫的工作方式就像蜘蛛在网上沿着链接爬来爬去,最基本的 流程 可以简化如下:
了解了上面的流程就能发现:对爬虫来说网站非常 被动 ,只有老老实实被抓取的份。
所以,对于网站的管理者来说,就存在这样的需求:
某些路径下是个人隐私或者网站管理使用,不想被搜索引擎抓取,比如说 日本爱情动作片 ;
不喜欢某个搜索引擎,不愿意被他抓取,最有名的就是之前 淘宝不希望被百度抓取 ;
小网站使用的是公用的虚拟主机,流量有限或者需要付费,希望搜索引擎抓的温柔点;
某些网页是动态生成的,没有直接的链接指向,但是希望内容被搜索引擎抓取和索引。
网站内容的所有者是网站管理员,搜索引擎应该尊重所有者的意愿,为了满足以上等等,就需要提供一种网站和爬虫进行沟通的途径,给网站管理员表达自己意愿的机会。有需求就有供应, robots 协议 就此诞生。
京东的Robots协议
百度的Robots协议
上面, *代表所有,/代表根目录
既然网络爬虫在爬取一个网站之前,要先获取到这个文件,然后解析到其中的规则,那么,Robots就必须要有一套通用的语法规则。
最简单的robots.txt只有两条规则:
User-agent:指定对哪些爬虫生效
Disallow:指定要屏蔽的网址
先说User-agent,爬虫抓取时会声明自己的身份,这就是User-agent,没错,就是http协议里的User-agent。robots.txt利用User-agent来区分各个引擎的爬虫,比如说google网页搜索爬虫的User-agent为Googlebot。
可能有读者要问了,我怎么知道爬虫的User-agent是什么?你还可以查 相关搜索引擎的资料 得到官方的数据,比如说百度的爬虫列表是这样的:
Disallow 行列出的是要拦截的网页,以正斜线 (/) 开头,可以列出特定的网址或模式。要屏蔽整个网站,使用正斜线即可;要屏蔽某一目录以及其中的所有内容,在目录名后添加正斜线;要屏蔽某个具体的网页,就指出这个网页。
下面介绍一些实例:
或者也可以建一个空文件 /robots.txt file。
我们再来结合两个真实的范例来学习一下。先看这个例子:
这个是淘宝网的Robots协议内容,相信你已经看出来了,淘宝网禁止百度的爬虫访问。
再来看一个例子:
这个稍微复杂点,京东有2个目录不希望所有的爬虫来抓。同时,京东完全屏蔽了一淘网的蜘蛛(EtaoSpider是一淘网的蜘蛛)。
sitemap
爬虫会通过网页内部的链接发现新的网页。但是如果没有链接指向的网页怎么办?或者用户输入条件生成的动态网页怎么办?能否让网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页?这就是 sitemap , 最简单的 Sitepmap 形式就是 XML 文件 ,在其中列出网站中的网址以及关于每个网址的其他数据(上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度等等),利用这些信息搜索引擎可以更加智能地抓取网站内容。
新的问题 来了,爬虫怎么知道这个网站有没有提供sitemap文件,或者说网站管理员生成了sitemap,(可能是多个文件),爬虫怎么知道放在哪里呢?
由于robots.txt的位置是固定的,于是大家就想到了把sitemap的位置信息放在robots.txt里。这就成为robots.txt里的新成员了。
节选一段google robots.txt:
Sitemap:
Sitemap:
插一句,考虑到一个网站的网页众多,sitemap人工维护不太靠谱,google提供了工具可以自动生成sitemap。
meta tag
其实严格来说这部分内容不属于robots.txt。
robots.txt的初衷是为了让网站管理员管理可以出现在搜索引擎里的网站内容。但是,即使使用 robots.txt文件让爬虫无法抓取这些内容,搜索引擎也可以通过其他方式找到这些网页并将它添加到索引中。例如,其他网站仍可能链接到该网站。因此,网页网址及其他公开的信息(如指向相关网站的链接中的定位文字或开放式目录管理系统中的标题)有可能会出现在引擎的搜索结果中。如果想彻底对搜索引擎 隐身 那咋整呢?答案是:元标记,即meta tag。
比如要完全阻止一个网页的内容列在搜索引擎索引中(即使有其他网站链接到此网页),可使用 noindex 元标记。只要搜索引擎查看该网页,便会看到 noindex 元标记并阻止该网页显示在索引中,这里注意 noindex 元标记提供的是一种逐页控制对网站的访问的方式。
要防止所有搜索引擎将网站中的网页编入索引,在网页的部分添加:
这里的 name取值 可以设置为某个搜索引擎的 User-agent 从而指定屏蔽某一个搜索引擎。
除了noindex外,还有其他元标记,比如说nofollow,禁止爬虫从此页面中跟踪链接。详细信息可以参考Google支持的元标记,这里提一句:noindex和nofollow在 HTML4.01规范 里有描述,但是其他tag的在不同引擎支持到什么程度各不相同,还请读者自行查阅各个引擎的说明文档。
Crawl-delay
除了控制哪些可以抓哪些不能抓之外,robots.txt还可以用来控制爬虫抓取的速率。如何做到的呢?通过设置爬虫在两次抓取之间等待的秒数。这种操作可以进行缓解服务器压力。
表示本次抓取后下一次抓取前需要等待5秒。
注意 : google已经不支持这种方式了,在webmaster tools里提供了一个功能可以更直观的控制抓取速率。
这里插一句题外话,几年前曾经有一段时间robots.txt还支持复杂的参数:Visit-time,只有在visit-time指定的时间段里,爬虫才可以访问;Request-rate:用来限制URL的读取频率,用于控制不同的时间段采用不同的抓取速率。后来估计支持的人太少,就渐渐的废掉了,目前google和baidu都已经不支持这个规则了,其他小的引擎公司貌似 从来都 没有支持过。
网络爬虫:
自动或人工识别robots.txt,再进行内容爬取
约束性:
Robots协议是建议但非约束性,网络爬虫可以不遵守,但存在法律风险。
原则:类人行为可以不参考Robots协议。
Robots协议不是什么技术壁垒,而只是一种互相尊重的协议,好比私家花园的门口挂着“闲人免进”,尊重者绕道而行,不尊重者依然可以推门而入。目前,Robots协议在实际使用中,还存在一些问题。
缓存
robots.txt本身也是需要被抓取的,出于效率考虑,一般爬虫不会每次抓取网站网页前都抓一下robots.txt,加上robots.txt更新不频繁,内容需要解析。通常爬虫的做法是先抓取一次,解析后缓存下来,而且是相当长的时间。假设网站管理员更新了robots.txt,修改了某些规则,但是对爬虫来说并不会立刻生效,只有当爬虫下次抓取robots.txt之后才能看到最新的内容。尴尬的是,爬虫下次抓取robots.txt的时间并不是由网站管理员控制的。当然,有些搜索引擎提供了web工具可以让网站管理员通知搜索引擎那个url发生了变化,建议重新抓取。注意,此处是建议,即使你通知了搜索引擎,搜索引擎何时抓取仍然是不确定的,只是比完全不通知要好点。至于好多少,那就看搜索引擎的良心和技术能力了。
ignore
不知是无意还是有意,反正有些爬虫不太遵守或者完全忽略robots.txt,不排除开发人员能力的问题,比如说根本不知道robots.txt。另外,本身robots.txt不是一种强制措施,如果网站有数据需要保密,必需采取技术措施,比如说:用户验证,加密,ip拦截,访问频率控制等。
恶意爬虫
在互联网世界中,每天都有不计其数的爬虫在日夜不息地爬取数据,其中恶意爬虫的数量甚至高于非恶意爬虫。遵守Robots协议的爬虫才是好爬虫,但是并不是每个爬虫都会主动遵守Robots协议。
恶意爬虫可以带来很多潜在威胁,比如电商网站的商品信息被爬取可能会被竞争对手利用,过多的爬虫还会占用带宽资源、甚至导致网站宕机。
你学会了吗~~~?
点个赞吧!!!
据说互联网上50%以上的流量都是爬虫创造的,也许你看到很多热门数据都是爬虫所创造的,所以可以说无爬虫就无互联网的繁荣。
前天写了一篇文章《只因写了一段爬虫,公司200多人被抓!》,讲述程序员因写爬虫而被刑侦的事件。文章传播很广,评论中讨论最热是:爬虫究竟是合法还是违法的?
这个话题涉及到我们很多程序员的日常工作,所以有必要和大家细聊一下。
01.技术无罪?
在今年国家颁布《中华人民共和国网络安全法》之后,很多以前处于灰色地带的业务都不能做了。
君不见之前曾经非常火的各种社工库网站,现在绝大部分都已经消失匿迹了吗?因为最新的安全法强调:贩卖个人信息超过50条属于“情节严重”,需要追求其法律责任。
很多草根站长都纷纷主动关闭了网站;还有很多涉及版权信息的网站,比如书籍、影视剧、课程等后期也会面临越来越严格的审查,这就是目前大的形势。
2014年12月20日,人人影视字幕站发布微博称,人人影视正式关闭,并表示或将继续为正版商提供翻译服务,也可能转变为讨论社区的形式。
2019年6月,吾爱破解因版权问题关站整改...
.....
随着中国经济的不断往前走,知识产权问题会越来越重视,非法爬虫是现在一个重要的打击部分,
如果有程序员走在灰色的边缘尽早收手,不要因为一点小的收益导致触犯法律,从而得不偿失。
技术是无罪的,但是用到了错的地方代价也是非常巨大的。
02.爬虫岗位人人自危
我在拉钩上搜索:爬虫工程师,显示有217条相关招聘信息,薪资从10-60k都有,说明市场上对爬虫的需求是很大的。
简单回答一下这些问题:
还有朋友认为这事责任在企业不在程序员,日常工作中项目初期设计和最后上线需要通过公司的法务批准,所有代码必须有其他程序员同事评审通过才能提交。
这位朋友说的挺对的,按道理每个公司都应该有法务和风控在前面,后面才是产品设计和程序员开发的事情,但如果一家公司为了利益,老板可以直接让这两个部门闭嘴,后面程序员可以不干吗?
更甚至很多公司其实就没有这两个部门或者说形同虚设。那么做为程序员自己也需要操一份心,凡是涉及到入侵类的程序都不能干,因为有一个东西叫做:单位犯罪。
单位犯罪,是指公司、企业、事业单位、机关、团体为单位谋取利益,经单位决策机构或者负责人决定实施的,法律规定应当负刑事责任的危害社会的行为。
我国刑法对单位犯罪原则上采取双罚制度,即单位犯罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员判处刑罚。
03.什么样的爬虫是非法的?
爬虫不能涉及个人隐私!
如果爬虫程序采集到公民的姓名、身份证件号码、通信通讯联系方式、住址、账号密码、财产状况、行踪轨迹等个人信息,并将之用于非法途径的,则肯定构成非法获取公民个人信息的违法行为。
也就是说你爬虫爬取信息没有问题,但不能涉及到个人的隐私问题,如果涉及了并且通过非法途径收益了,那肯定是违法行为。
另外,还有下列三种情况,爬虫有可能违法,严重的甚至构成犯罪:
现在网上有很多付费的课程,比如极客时间、Gitchat、慕课网、知识星球等等,这些付费内部信息如果被非法爬取手法出售获利,一种违法行为。
之前我就遇到一个网友,把各个知识星球的内容都抓下来,合到一起自己去卖,自作聪明觉得发现了一个大的商机,其实自己不知道这个行为其实很危险,风险和收益明显不对等。
我这两天看的时候,他的一个公众号都被封了,后来又转移了一个小号继续搞,迟早又是被封的命运,真的很不值当。最可怜是那些买他服务的用户,因为他宣传时承诺永久,肯定永久不了。
04.什么样的爬虫是合法的?
1、遵守Robots协议
Robots协议也叫robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。
Robots协议就是告诉爬虫,哪些信息是可以爬取,哪些信息不能被爬取,严格按照Robots协议爬取网站相关信息一般不会出现太大问题。
2、不能造成对方服务器瘫痪
但不是说只要遵守Robots协议的爬虫就没有问题,还涉及到两个因素,第一不能大规模爬虫导致对方服务器瘫痪,这等于网络攻击。
2019年05月28日国家网信办发布的《数据安全管理办法(征求意见稿)》中,拟通过行政法规的形式,对爬虫的使用进行限制:
网络运营者采取自动化手段访问收集网站数据,不得妨碍网站正常运行;此类行为严重影响网站运行,如自动化访问收集流量超过网站日均流量三分之一,网站要求停止自动化访问收集时,应当停止。
3、不能非法获利
恶意利用爬虫技术抓取数据,攫取不正当竞争的优势,甚至是牟取不法利益的,则可能触犯法律。实践中,非法使用爬虫技术抓取数据而产生的纠纷其实数量并不少,大多是以不正当竞争为由提请诉讼。
举个例子,如果你把大众点评上的所有公开信息都抓取了下来,自己复制了一个一模一样的网站,并且还通过这个网站获取了大量的利润,这样也是有问题的。
一般情况下,爬虫都是为了企业获利的,因此需要爬虫开发者的道德自持和企业经营者的良知才是避免触碰法律底线的根本所在。
05.最后
有风险的行业谨慎进入,比如现金贷、不合规的P2P、赌博类游戏、黑五类产品的行业。如果公司安排入侵某个网站数据,或者有同事/朋友邀请泄露公司信息的都需要保持警惕,有时候一个很小的动作都有可能导致出问题。
我们绝大多数公司和个人使用的爬虫都是没有问题的,不必人人自危,只要把握住不要爬取个人信息,不要利用爬虫非法获利,不要爬取网站的付费内容,基本上不会有问题。
程序员是世界上最单纯的一批人,也是一批高智商低情商的人,工作是工作但也需要适当保持谨慎,对于一些游走在法律边缘的事情请保持距离。
敬畏法律,遵纪守法,从我做起。
参考:
作者:纯洁的微笑.出处:www.ityouknow.com
网站的Robots规则如何写才正确?
Robots协议用来告知搜索引擎哪些页面能被抓取,哪些页面不能被抓取;可以屏蔽一些网站中比较大的文件,如:图片,音乐,视频等,节省服务器带宽;可以屏蔽站点的一些死链接。方便搜索引擎抓取网站内容;设置网站地图连接,方便引导蜘蛛爬取页面。下面是Robots文件写法及文件用法。
一、文件写法
User-agent: * 这里的*代表的所有的搜索引擎种类,*是一个通配符
Disallow: /admin/ 这里定义是禁止爬寻admin目录下面的目录
Disallow: /require/ 这里定义是禁止爬寻require目录下面的目录
Disallow: /ABC/ 这里定义是禁止爬寻ABC目录下面的目录
Disallow: /cgi-bin/*.htm 禁止访问/cgi-bin/目录下的所有以.htm为后缀的URL(包含子目录)。
Disallow: /*?* 禁止访问网站中所有包含问号 (?) 的网址
Disallow: /.jpg$ 禁止抓取网页所有的。jpg格式的图片
Disallow:/ab/adc.html 禁止爬取ab文件夹下面的adc.html文件。
Allow: /cgi-bin/这里定义是允许爬寻cgi-bin目录下面的目录
Allow: /tmp 这里定义是允许爬寻tmp的整个目录
Allow: .htm$ 仅允许访问以.htm为后缀的URL。
Allow: .gif$ 允许抓取网页和gif格式图片
Sitemap: 网站地图 告诉爬虫这个页面是网站地图
二、文件用法
例1. 禁止所有搜索引擎访问网站的任何部分
User-agent: *
Disallow: /
实例分析:淘宝网的 Robots.txt文件
User-agent: Baiduspider
Disallow: /
User-agent: baiduspider
Disallow: /
很显然淘宝不允许百度的机器人访问其网站下其所有的目录。
例2. 允许所有的robot访问 (或者也可以建一个空文件 “/robots.txt” file)
User-agent: *
Allow:/
例3. 禁止某个搜索引擎的访问
User-agent: BadBot
Disallow: /
例4. 允许某个搜索引擎的访问
User-agent: Baiduspider
allow:/
例5.一个简单例子
在这个例子中,该网站有三个目录对搜索引擎的访问做了限制,即搜索引擎不会访问这三个目录。
需要注意的是对每一个目录必须分开声明,而不要写成 “Disallow: /cgi-bin/ /tmp/”。
User-agent:后的*具有特殊的含义,代表“any robot”,所以在该文件中不能有“Disallow: /tmp/*” or “Disallow:*.gif”这样的记录出现。
User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /~joe/
Robot特殊参数:
允许 Googlebot:
如果您要拦截除Googlebot以外的所有漫游器不能访问您的网页,可以使用下列语法:
User-agent:
Disallow: /
User-agent: Googlebot
Disallow:
Googlebot 跟随指向它自己的行,而不是指向所有漫游器的行。
“Allow”扩展名:
Googlebot 可识别称为“Allow”的 robots.txt 标准扩展名。其他搜索引擎的漫游器可能无法识别此扩展名,因此请使用您感兴趣的其他搜索引擎进行查找。“Allow”行的作用原理完全与“Disallow”行一样。只需列出您要允许的目录或页面即可。
您也可以同时使用“Disallow”和“Allow”。例如,要拦截子目录中某个页面之外的其他所有页面,可以使用下列条目:
User-agent: Googlebot
Allow: /folder1/myfile.html
Disallow: /folder1/
这些条目将拦截 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: /*?$ 一行将允许包含任何以 ? 结尾的网址(具体而言,它将允许包含所有以您的域名开头、后接任意字符串,然后是问号 (?),问号之后没有任何字符的网址)。
Robots协议举例
禁止所有机器人访问User-agent:*Disallow:/
允许所有机器人访问User-agent:*Disallow:
禁止特定机器人访问User-agent:BadBotDisallow:/
允许特定机器人访问User-agent:GoodBotDisallow:
禁止访问特定目录User-agent:*Disallow:/images/
仅允许访问特定目录User-agent:*Allow:/images/Disallow:/
禁止访问特定文件User-agent:*Disallow:/*.html$
仅允许访问特定文件User-agent:*Allow:/*.html$Disallow:/
尽管robots.txt已经存在很多年了,但是各大搜索引擎对它的解读都有细微差别。Google与百度都分别在自己的站长工具中提供了robots工具。如果您编写了robots.txt文件,建议您在这两个工具中都进行测试,因为这两者的解析实现确实有细微差别。
更多青晟网络资讯请登录官方网站:
本文网址:https://www.wzmoban.cn/mysql/1434.html
版权声明: 1.本站内容部分为晟匠聚网络编辑原创文章,部分来源于网络,如需转载,请标注来源网站名字和文章出处链接。 2.本站内容为传递信息使用,仅供参考,也不构成相关建议。 3.部分内容和图片来源于网络,如有侵权,请联系我们处理。