生活资讯
robots协议 、Robots协议可以限制爬虫程序采集某些网页的数据
2023-04-16 01:12  浏览:49

爬虫究竟是合法还是违法的?

据说互联网上 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、赌博类 游戏 、黑五类产品的行业。如果公司安排入侵某个网站数据,或者有同事/朋友邀请泄露公司信息的都需要保持警惕,有时候一个很小的动作都有可能导致出问题。

我们绝大多数公司和个人使用的爬虫都是没有问题的,不必人人自危,只要把握住不要爬取个人信息,不要利用爬虫非法获利,不要爬取网站的付费内容,基本上不会有问题。

程序员是世界上最单纯的一批人,也是一批高智商低情商的人,工作是工作但也需要适当保持谨慎,对于一些游走在法律边缘的事情请保持距离。

敬畏法律,遵纪守法,从我做起。

参考:

作者: 纯洁的微笑 .出处:

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-del***

除了控制哪些可以抓哪些不能抓之外,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协议。

恶意爬虫可以带来很多潜在威胁,比如电商网站的商品信息被爬取可能会被竞争对手利用,过多的爬虫还会占用带宽资源、甚至导致网站宕机。

你学会了吗~~~?

点个赞吧!!!

robots协议

百度百科: robots协议也叫robots.txt (统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。robots.txt应放置于网站的根目录下。如果想单独定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定的设置合并到根目录下的robots.txt,或者使用robots元数据(metadata,又称元数据)。

简单来说即:robots协议是一个君子协议,是网站所有者编写的,用来告诉搜索引擎该网站下的哪些内容可以爬取、收录,哪些内容不可以爬取和收录。

robots协议是通用共识,一般来说,大型的、有资质的搜索引擎都会遵守,robots协议是网站所有者不想要公开在网上的内容,是为了保障个人隐私,但是robots协议里规定的内容是可以获取的,只是大家默认遵守该协议,不获取协议内的内容。

robots协议是一个纯文本文件,通常是搜索引擎***个爬取的文件,搜索引擎该文件了解该网站哪些是所有者不想被收录的内容,进行有选择的爬取和收录。

robots协议命名为robots.txt,放在网站的根目录下。

简单的robots协议如下:

其中 User-agent 代表要遵守该协议的搜索引擎,如果是通配符‘*’,代表所有搜索引擎都要遵守该协议。

Disallow 代表不允许搜索引擎访问的内容, /*?* 代表不允许搜索引擎访问所有带?的路径内容, / 代表不允许搜索引擎访问该网站所有内容。

实际环境中,网站所有者依据个人情况编写该文件,robots协议的编写会影响网站的收录情况和搜索引擎的效率。

亚马逊网站robots协议解读

在分析亚马逊的robots协议之前我们先应该明确的是网络爬虫会带来的风险和问题,这样才能更好的理解亚马逊为什么***止网络爬虫访问这些内容,如果访问的话会造成什么危害。

最简单的robots.txt只有两个规则:

User-agent:指定对哪些爬虫生效

Disallow:指定要屏蔽的网址

接下来以亚马逊的robots协议为例,分析其内容。

首先,先来分析亚马逊对于网络爬虫的限制。是否有有“特殊权限”的爬虫?

爬虫抓取时会声明自己的身份,这就是User-agent,就是http协议里的User-agent。robots.txt利用User-agent来区分各个引擎的爬虫。

*代表该内容下面Disallow的部分是***止所有爬虫爬取的。因此robots协议中提及的“***区”是针对于所有网络爬虫的,没有单独提及的爬虫。

与之对应来看,我们会发现淘宝的robots协议中明确***止百度的网络爬虫爬取。而百度的一些网站是允许百度爬虫任意爬取的。

接下来分析亚马逊向网络爬虫屏蔽的内容有哪些。

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

下面代表wishlist中允许访问的目录universal*、 vendor-button* 、get-button*

仔细观察***止访问,发现了一些“看得懂”的内容:

其中***止了网络爬虫模仿用户的行为进行诸如给商品评分、发送电子邮件、分享到twitter的行为,这是十分合理的。试想若是不***止网络爬虫模仿用户的行为,不仅可能会给网站的性能造成影响,可能会出现爬虫造成的恶意评分,以亚马逊名义发送内容无法保证的邮件的事件的发生。这样的行为会对亚马逊的交易环境和形象产生影响。

同时***止爬虫访问历史、物流信息的请求可以避免用户的交易信息泄露造成麻烦。

下面***止访问的内容诸如登陆、退出账户,身份,订单地址、详细信息、历史、修改、记录,推荐浏览,浏览量,选择支付方式,选择物流,物流查询,购物车等。

其中的很多***止爬取的都是已登录的账户才可以访问的内容,若是不***止网络爬虫进行访问,则可能会出现网络爬虫模拟用户操作进行操作的现象发生,造成用户隐私泄露。

***止爬虫爬取浏览量,浏览内容,推荐浏览等内容是亚马逊防止信息被爬取后被挪作他用牟利,比如“复制网站”的情况发生。

Python爬虫必须遵守robots协议,否则等于犯罪

1、robots协议是一种存放于网站根目录下的ASCII编码的文本文件。用于对外宣誓主权,规定按照允许范畴访问网站,有效保护网站的隐私。所以您想通过技术手段访问网站的时候,请首先查看robots.txt文件,它告诉你哪些可以访问,哪些信息是不允许访问的。(Robots协议是国际互联网界通行的道德规范)

2、robots主要涉及以下三个部分:

***种:***止所有搜索引擎访问网站的任何内容

User-agent: *

Disallow: /

第二种:***止某个特定的搜索引擎访问网站的任何内容

User-agent: Baiduspider

Disallow: /

第三种:允许所有搜索引擎访问网站的任何内容

User-agent: *

Allow: /

第四种:***止部分内容被访问(tmp目录及下面的内容都***止了)

User-agent: *

Disallow: /tmp

第五种:允许某个搜索引擎的访问

User-agent: Baiduspider

allow:/

第六种:部分允许,部分不允许访问

User-agent: Baiduspider

Disallow: /tmp/bin

User-agent:*

allow:/tmp

希望以上总结对您有帮助!!!!!

关于robots协议和Robots协议可以限制爬虫程序采集某些网页的数据的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

发表评论
0评