续表
2019年5月28日,国家互联网信息办公室就《数据安全管理办法(征求意见稿)》(以下简称“征求意见稿”)向社会公开征求意见,这是我国数据安全立法领域的里程碑事件。以法律的形式规范数据收集、存储、处理、共享、利用以及销毁等行为,强化对个人信息和重要数据的保护,可维护网络空间主权和国家安全、社会公共利益,保护自然人、法人和其他组织在网络空间的合法权益。以网络爬虫为主要代表的自动化数据收集技术,在提升数据收集效率的同时,如果使用不当,则可能会影响网络运营者正常开展业务。为解决上述问题,征求意见稿第十六条确立了利用自动化手段(网络爬虫)收集数据不得妨碍他人网站正常运行的原则,并明确了严重影响网站运行行为的具体判断标准,这将对规范数据收集行为、保障网络运营者的经营自由和网站安全起到积极的作用。
目前,我国已有法律对网络爬虫进行规制,主要集中在刑法有关计算机信息系统犯罪的相关条文上。从刑法所追求的法益来看,刑法规范的是对目标网站造成严重影响并具有社会危害性的数据抓取行为。若行为人违反刑法的相关规定,通过网络爬虫访问收集一般网站所存储、处理或传输的数据,则可能构成刑法中的非法获取计算机信息系统数据罪;如果在数据抓取过程中实施了非法控制行为,则可能构成非法控制计算机信息系统罪。此外,若使用网络爬虫时对目标网站的功能造成干扰,导致其访问流量增大、系统响应变慢,影响其正常运营,则可能构成破坏计算机信息系统罪。
目前,多数网站允许将爬虫爬取的数据归为个人使用或者用于科学研究。但如果将爬取的数据用于其他用途,尤其是转载或者商业用途,则依据各网站的具体情况后果有所不同,严重的将会触犯法律或者引起民事纠纷。
需要注意的是,以下两种数据不能爬取,更不能用于商业用途。
(1)个人隐私数据,如姓名、手机号码、年龄、血型、婚姻情况等,爬取此类数据会触犯个人信息保护法。
(2)明确禁止他人访问的数据,例如,用户设置过权限控制的账号、密码或加密过的内容等。
另外,还需注意版权相关问题,有作者署名的受版权保护的内容不允许爬取后随意转载或用于商业用途。
当使用爬虫爬取网站的数据时,需要遵守网站所有者针对所有爬虫所制定的协议,即robots协议(也称为爬虫协议、机器人协议等),全称是“网络爬虫排除标准”(Robots Exclusion Protocol)。
该协议通常存放在网站根目录下,里面规定了此网站中哪些内容可以被爬虫获取,以及哪些内容不允许爬虫获取。爬虫应当遵守这份协议,否则很可能会被网站所有者封禁,甚至网站所有者会采取进一步法律行动。
在浏览器中打开网站后,在网站首页的地址后面添加“/robots.txt”,如果网站设置了访问许可,按回车就可以看到网站的robots协议,即robots.txt文件的内容。如果没有robots.txt,则说明网站对所有爬虫的爬取无限制。
由于爬虫爬取网站时模拟的是用户的访问行为,所以必须约束自己的行为,接受网站所有者的规定,避免引起不必要的麻烦。
一些知名网站的robots.txt文件的存放路径如下。
(1)淘宝网:https://www.taobao.com/robots.txt。
(2)亚马逊网:https://www.amazon.com/robots.txt。
(3)豆瓣网:https://www.douban.com/robots.txt。
(1)文件中包含一个或多个记录,每个记录由一行或多行空白行隔开。每行形式为<field>:<optional space><value><optional space>。
(2)User-agent的使用方式是User-agent[agent name],其中典型的agent name有两种,即*和具体的爬虫标识。其中,*代表0或多个字符。
(3)Disallow和Allow的使用决定了不同的访问许可。一个目录如果没有显式声明为Disallow,则它是允许访问的。其中,/代表根目录,#表示注释。
图1-13 不同网站根目录下的robots.txt文件
例如,Disallow:/pop/*.html表示不允许爬虫访问/pop目录下任何扩展名为.html的文件,Disallow:/*.asp$表示不允许爬虫访问以.asp结尾的文件。
Allow一般和Disallow一起使用,不会单独使用,用来排除某些限制。User-agent描述了搜索爬虫的名称,设置为*时代表该协议对任何爬虫有效,Disallow指定了不允许抓取的目录,设置为/时代表不允许抓取所有页面。若Allow设置为/public,则表示允许抓取public目录,一般只允许所有搜索爬虫爬取public目录。
禁止所有爬虫访问任何目录的代码如下:
允许所有爬虫访问任何目录的代码如下:
常见的搜索爬虫的名称和对应的网站见表1-1。
表1-1 常见的搜索爬虫
robots.txt是网络爬虫采集某个网站Web内容之前应当读取并解析的文件。网络爬虫与Web服务器建立网络连接之后,应当按照以下流程建立访问许可。
(1)检查虚拟根目录下是否存在robots.txt文件。
(2)如果服务器返回404错误,表明文件不存在,则转到步骤(6)。
(3)如果存在,则将robots.txt文件读到本地。
(4)解析robots.txt文件中的每个记录,如果爬虫的User-agent在这些记录中,则读取记录中的Disallow或Allow部分。如果是一个未知的User-agent,则定位到以“User-agent:*”为开头的记录,读取该记录的Disallow或Allow部分。
(5)根据提取的Disallow或Allow部分,构建许可列表。
(6)结束。