在互联网数据合规的大背景之下,数据爬取行为越来越受到关注。本文拟根据数据爬取的技术实质,结合现行法律规定和生效刑事判例,分析数据爬取行为的刑事风险,并提出相应的防范思路。
一、爬虫、反爬虫及反反爬虫
爬虫的实质是一种获取网页并提取和保存信息的自动化程序。爬虫的运行可分为三个步骤:
第一步:获取网页源代码。网页源代码中包含网页上的全部数据、结构和样式,决定了我们所看到的网页内容和形态。因此,网页源代码就是爬虫获取的目标。常见的网页源代码包括HTML代码、CSS代码和Javascript代码等等。在网络中,网页的位置都是固定的,这个位置被称为URL。为了获取某一段代码,爬虫需要根据URL向服务器发送请求。服务器对请求的响应,其中就包括网页源代码。事实上,无论是爬虫,还是人操作计算机或手机访问网页,本质上都是在向服务器发送请求并获取服务器响应的代码。当真人访问网页时,大多数情况下是浏览器帮我们解析了源代码,将可视化的网页展示在屏幕上。爬虫则无需解析代码,而是直接从源代码中提取需要的数据。
第二步:提取数据。网页源代码中包含大量数据,对于不同的爬取者而言,意义不同。因此,成功获取网页源代码后,下一步可以根据实际需要,从源代码中提取出需要的信息。这一过程一般也是通过程序进行自动化处理。
第三步:保存数据。最后一步是保存获取的数据。保存数据的格式很多。对于文本格式的内容,可以保存为txt或json文本等许多格式。对于二进制格式的音视频数据,可以保存成对应的音视频文件格式。这些数据存储的环境也非常丰富,既包括硬盘、U盘等常见的存储设备,也包括服务器、云服务器、云存储等大规模的存储设备。
由于爬虫向服务器发送请求并接收服务器响应所产生的网络流量,远高于真人操作所产生的流量,会挤占资源并给互联网平台运营带来一定的风险。因此,平台会采取一定手段识别每个请求的身份。如果认定为爬虫或疑似爬虫,则不返回数据。这种技术就是反爬虫。
常见的反爬虫技术,可以粗略地分为两类:一类技术的核心,在于识别爬虫身份,限制爬虫访问,不响应爬虫请求。典型的技术包括识别请求来源的IP地址, 请求中包含的User-Agent, Cookie/Token, 签名验证等特征数据,以及实施人机校验等等。这一类技术大致作用于爬虫的第一步。一旦服务器识别为爬虫,则不响应任何数据。另一类技术的核心,在于提高爬虫从网页源代码中提取数据的难度。典型的技术包括代码混淆、图片伪装、字体变换等等。这一类技术大致作用于爬虫的第二步。此时,爬虫其实已经成功地获取了服务器的响应内容,只是无法或者很难直接从中提取出需要的数据。
面对这些反爬虫技术的阻拦,如果要成功地获取数据,就必须要克服这些反爬虫技术。这种克服反爬虫的技术,可以被称为反反爬虫。对应以上两类反爬虫技术,反反爬虫技术也可粗略地分为两类:一类是伪装爬虫身份,绕过或突破服务器的反爬虫措施,使服务器误以为爬虫发出的请求是正常的请求。当服务器响应请求,返回数据时,爬虫就可以成功获得数据。另一类则是针对提高爬虫获取数据难度的反爬虫,通过分析困难产生的要点,使用相应工具解决难题,获得数据。例如,对于动态渲染页面,使用相应工具模拟浏览器渲染页面的过程,从而获得数据;对于植入图片的关键数据,通过OCR文本识别、AI识别等方式将数据解析出来等等。
在实施爬虫、反爬虫、反反爬虫等一系列技术时,主要牵涉《刑法》保护的两类法益。一类法益是计算机信息系统的安全,对应现行《刑法》第285-287条。所谓“计算机信息系统”,根据最高人民法院、最高人民检察院《关于办理危害计算机信息系统安全刑事案件应用法律若干问题的解释》(以下简称“《计算机刑事案件解释》”),是指具备自动处理数据功能的系统,包括计算机、网络设备、通信设备、自动化控制设备等。据此,网络平台、移动客户端、App 软件等,实质上都是自动处理数据的系统,都属于信息系统的一部分,应当属于“计算机信息系统”。[1]爬虫在与被爬取网站服务器进行交互时,如果绕过或者突破了服务器的安全保护措施,则可能会影响服务器的运行安全,进而可能对计算机信息系统的安全造成损害。
另一类法益则是数据,以及通过数据方式存储和传输的信息和内容。网络中的信息和内容主要以数据的方式存在和传播。因此,爬虫获取数据时,可能既包括普通的数据或信息,也包括公民个人数据信息、国家秘密、商业秘密、作品或录音录像制品等。爬虫获取数据以及后续使用数据时,有可能针对该等客体造成法益侵害的后果。
还有一些犯罪行为系利用信息扰乱社会公共秩序,如传播虚假、恐怖、淫秽色情信息等。这些行为同样可以通过爬虫技术在信息网络上实施,会产生严重的危害后果。但是,这类违法信息内容并非法益保护客体,爬虫也只是实施犯罪的纯粹手段和工具。因此,这类犯罪与侵犯上述两类法益的罪名有本质不同,故不在本文的讨论范围之内。
二、爬虫涉及的主要罪名分析
根据前述分析,爬虫技术可能涉及的罪名包括:刑法第285条的非法侵入计算机信息系统罪、非法获取计算机信息系统数据罪,第286条的破坏计算机信息系统罪等侵犯计算机信息系统安全类犯罪;刑法第253条的侵犯公民个人信息罪、第217条的侵犯著作权罪、第219条的侵犯商业秘密罪,以及第282条非法获取国家秘密罪等。
但从司法实践来看,前述罪名中仅三个罪名较为容易触发,即非法获取计算机信息系统数据罪、侵犯公民个人信息罪、侵犯著作权罪。这是由于爬虫一般只爬取公开网站的数据,不爬取政府或其他单位的内部保密网络系统,故而极少涉及非法获取国家秘密、侵犯商业秘密犯罪。而非法侵入计算机信息系统罪中的“计算机信息系统”系专指国家事务、国防建设、尖端科学技术领域的系统,爬虫涉罪概率同样很低。另外,虽然爬虫对服务器的请求频次一般高于真人发出的网络访问请求,但除非特殊情况,一般难以达到网络攻击,致使目标服务器宕机、瘫痪的程度。[2]因此爬虫构成破坏计算机信息系统罪的概率也很低。
1.非法获取计算机信息系统数据罪
《刑法》第285条第2款规定,违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。
该条属于选择性罪名,针对不同的实行行为,依据犯罪构成的不同,可分别构成非法获取计算机信息系统数据罪、非法控制计算机信息系统罪,以及非法获取计算机信息系统数据、非法控制计算机信息系统罪。从罪状来看,爬虫主要涉及非法获取计算机信息系统数据罪,具体而言表现为侵入计算机信息系统后获取数据或采用其他技术手段获取数据。
对于“侵入”,法律和司法解释都没有进行明确解释,但目前司法和学术界已经基本达成共识,是指未经授权或者超越授权,进入计算机信息系统的行为。例如,最高检在2017年10月发布的第九批指导案例第36号案[3]中指出,“侵入”是指违背被害人意愿、非法进入计算机信息系统的行为,其表现形式既包括采用技术手段破坏系统防护进入计算机信息系统,也包括未取得被害人授权擅自进入计算机信息系统,还包括超出被害人授权范围进入计算机信息系统。最高检还在2020年4月发布的第十八批指导案例第68号案[4]中指出,在认定“专门用于侵入计算机信息系统的程序”时,应当结合计算机信息系统被侵入的具体情形,查明涉案程序是否在未经授权或超越授权的情况下,获取计算机信息系统数据。
对于“其他技术手段”,法律和司法解释同样没有进行明确限定,应当属于开放式的兜底条款,指侵入以外的技术手段。这种行为的非法性,应当同样在于未经授权或者超越授权,否则就无所谓非法。
涉嫌侵入或以其他技术手段非法获取数据的反反爬虫技术
实务中,针对层出不穷的技术手段,司法机关在判断采取的技术手段是否构成非法获取计算机信息系统数据时,会重点关注技术是否具有“避开或者突破计算机信息系统安全保护措施”的功能。对于爬虫技术来说,当遇到目标服务器的反爬虫等自我防护措施时,如果采取反反爬虫技术,绕过或者突破了这种防护措施,则有较大可能使整个爬虫程序构成避开或者突破计算机信息系统安全保护措施,未经授权或者超越授权获取数据的程序,从而属于具有侵入性的程序。如果使用这种爬虫程序获取数据,涉嫌非法获取计算机信息系统数据罪的风险较高。
根据刑事判例,涉及本罪的反反爬虫技术包括以下几种:[5]
• 伪造header信息、User-Agent信息等网络请求身份标识信息,绕过服务器身份验证机制:这种技术实际是专门修改了HTTP协议规定的一项网络请求中的“请求头”部分必然携带的身份标识信息,从而绕过反爬技术对“请求头”中特有或可疑身份标识信息的识别。从技术层面来看,这种识别单一身份标识信息的手段,属于比较初级的反爬措施,使用范围很广。在刑事判例中,这种伪造身份标识信息的技术,与其他技术结合起来,认定为绕过或者突破技术保护措施的案例为数不少。[6]
• 使用大量IP或注册账户,绕开人机验证和访问频率限制:这种技术专门针对网站服务器限制单个用户或IP地址访问网络资源频率和次数的反爬措施。正常情况下,如某用户或IP地址访问网络资源频率和次数过高,则会触发反爬机制,服务器不响应网络请求,同时可能要求请求方完成“人机验证”(如复杂难认的验证码)。而反反爬虫则通过构建IP池、利用ADSL拨号上网,甚至批量注册大量账号等方法,频繁变换每次请求的IP或注册用户身份,从而绕过反爬措施。这种手段在实践中使用很广,在刑事判决中被多次认定为绕过或者突破技术保护措施。[7]
• 劫持、伪造、盗用Cookie或Token等身份认证信息,获取登录权限或绕开服务器身份验证机制:Cookie是服务器向请求方颁发的一种用于维持会话的身份认证信息。用户在访问网站时,如果网络请求中带有对应Cookie,服务器就认为该用户再次进行会话,从而保持该用户的登录状态。Token同样是一种服务器或数据库为用户下发的身份认证信息,持有Token即可访问或调取对应的数据或执行相应操作。反爬虫技术则利用这种身份认证信息,来识别真实用户和爬虫。与此同时,为了限制爬虫盗用Cookie或Token登录爬取数据,如果带有相同Cookie或Token的请求的次数达到一定阈值,服务器也会拒绝返回数据。因此,为了绕过反爬措施,爬虫可能会劫持、伪造或盗用Cookie或Token,并将其加入到网络请求中,使服务器误以为请求来源是正常用户。同时,爬虫还可能会构建一个Cookie或Token“池”,通过间隔更换Cookie或Token的方式,以绕过反爬虫措施。刑事判例中,劫持或盗用Cookie或Token本身,即可构成非法获取计算机信息系统数据罪中的“获取身份认证信息”。[8]而利用Cookie或Token获取数据或公民个人信息,同样可构成非法获取计算机信息系统数据罪[9]和侵犯公民个人信息罪。[10]
• 破解加密算法,伪造真实合法请求:为了防止数据被大量爬取,一些网站或者APP的开发者,会在客户端发送的网络请求中规定一些特殊的参数,并根据特殊算法进行混淆和加密。如果网络请求不包含相应参数,或参数与规则或算法不匹配,服务器收到请求后都不会返回数据,从而实现反爬虫的效果。这是一种相对比较高级的反爬虫措施。而反反爬虫则是要找到加密的参数和具体加密算法,使爬虫发出的请求得以骗过服务器的校验机制,从而成功获得数据。在司法实务中,一些用于实现高速秒杀、大量购买流量卡的程序,使用了破解加密算法方法,对服务器实施高频率和大规模的请求,已被法院认定相关程序构成侵入、非法控制计算机信息系统的工具。[11]而这种高频大量向服务器发送请求的行为,与爬虫的技术实质是共通的。
• 使用“打码平台”识别验证码,绕过服务器人机验证机制[12]:“打码”,是指“识别验证码”。验证码的初衷就是为了将来自机器的恶意访问挡在系统之外,因此是一种重要的反爬虫措施。“打码平台”是专门识别验证码的自动化程序或者真人团伙,是一种网络黑灰产。爬虫过程中使用“打码平台”,是为了在遇到验证码时予以识别,通过服务器人机验证,从而成功获取数据。在刑事案例中,使用“打码平台”被多次认定为绕过或突破计算机信息系统安全保护措施,其中以“撞库扫号”[13]类案件居多。
• 构造非常规网络请求,绕过或突破服务器身份验证机制:无论是真人访问网站或APP,还是爬虫爬取数据,其实都是一种网络请求。“非常规的网络请求”见于一些刑事案例中的司法鉴定意见,认定其构成绕过或突破服务器的安全保护措施,但并未说明“非常规”的实质含义。从这些案例进行推测,所谓“非常规的网络请求”,有可能是篡改了请求中的关键参数信息,使之能够绕过服务器的校验机制获取数据,也有可能是请求对象与正常用户不相同,例如直接请求服务器的内部数据接口等等。[14]
入罪风险分析
2.侵犯公民个人信息罪
爬虫获取公民个人刑事不法性
入罪风险分析
3.侵犯著作权罪
网络产品中与爬虫相结合的涉嫌侵犯著作权罪行为
入罪风险分析
1.在爬取对象上,避免爬取高风险网站及数据库中的敏感数据
这些高风险网站或数据库中往往存储或传输涉罪风险较高的敏感数据,或者容易引发刑事报案、举报,从而导致刑事风险的产生:
• 属于国家事务、国防建设、尖端科学技术领域计算机信息系统
• 可能存储国家秘密、商业秘密的数据库、服务器等计算机信息系统
• 收集、存储大量公民个人信息、隐私信息,涉及人身安全、财产安全、通信秘密的数据信息的网站、数据库或服务器
• 专门发布涉黄、涉暴等违法违规信息的网站
• 发布授权新闻,收费图片,提供正版小说、热门影视的知名网络平台
• 直接竞争对手运营网站、APP或其他互联网应用
2.在爬取手段上,避免使用具有侵入性,能够绕过、突破网站服务器安全保护措施,或影响网络服务正常运行的技术
以下具有侵入性的手段应该尽量避免:
• 针对识别爬虫身份的反爬虫措施,伪装爬虫身份,使服务器误以为访问请求来源于正常用户,绕过或突破服务器的安全保护措施,获取数据
• 无权或者超越授权,盗用、使用或者突破网站服务器或数据库的登录权限,获取数据
• 暴力破解、攻击目标网站服务器或客户端程序以获取数据
• 获取数据过程中,干扰、破坏、影响目标网站服务器或客户端的正常运行,或直接导致其宕机
3.在数据使用上,避免以外界可感知的方式使用数据,避免直接使用爬取数据或利用爬取的数据牟利,避免替代数据控制者的网络产品或服务
尤其应当避免的数据使用行为包括:
• 售卖爬取的数据,盗版资源,个人信息等
• 有偿为他人提供或帮助他人实施侵入性手段爬取数据
• 向用户提供,尤其是付费提供爬取的数据或作品内容,如盗版小说阅读,盗版影视播放等
• 直接将爬取自竞争对手或知名网络平台的数据,用于己方网络产品或服务的运营
• 利用爬取的数据运营己方网络产品或服务,直接替代数据来源方向其用户提供网络产品或服务
注释:
1.林维、高艳东、谢虹燕、汤隽:《利用爬虫加粉软件“打劫”个人信息牟利如何适用法律》,《人民检察》2019年第18期,第42-43页;
2.DoS和DDoS网络攻击,是利用极大量的网络请求,制造极大量的网络流量,超过攻击目标服务器负荷,致使目标服务器断网或资源用尽,最终停止提供服务。相关详细解释参见最高人民检察院发布的《网络犯罪案件技术法律术语解释汇编(一)》。在某种意义上,爬虫和DoS、DDoS类的网络攻击,本质上都是频繁向服务器发送请求,制造非真人用户访问的网络流量。前者的目的是为了获取数据,而不是导致服务器宕机,服务器宕机,则无法返回数据,爬虫的目的无法实现。但如果爬虫程序设置不当,导致服务器宕机,则实际后果与网络攻击无异。相关实例参见:《“爬虫造成服务器宕机”司法案件的技术分析》,链接:https://mp.weixin.qq.com/s/eUAFxXAkpSJ-wnErGbt80w;
3.最高检第九批指导案例第36号:卫梦龙、龚旭、薛东东非法获取计算机信息系统数据案(发布日期:2017年10月10日)。链接:https://www.spp.gov.cn/spp/jczdal/201710/t20171017_202593.shtml;
4.最高检第十八批指导案例第68号:叶源星、张剑秋提供侵入计算机信息系统程序、谭房妹非法获取计算机信息系统数据案(发布日期:2020年4月8日)。链接:https://www.spp.gov.cn/spp/jczdal/202004/t20200408_458415.shtml;
5.有关反反爬虫技术的介绍,笔者主要参阅韦世东著:《Python3反爬虫原理与绕过实战》,人民邮电出版社2020年1月第1版;崔庆才著:《Python3网络爬虫开发实战》,人民邮电出版社2018年4月第1版;
6.认定伪造网络请求身份标识信息构成侵入性手段的典型案例包括:(2017)京0108刑初2384号、(2018)辽0191刑初418号、(2017)豫0105刑初1616号、(2016)浙0603刑初1223号;
7.认定使用大量IP或注册账户获取数据构成侵入性手段的典型案例包括:(2017)京0108刑初2384号、(2017)浙0110刑初664号、(2019)闽08刑终223号、(2016)浙0681刑初1102号、(2016)沪0115刑初2220号、(2016)浙0602刑初1145号;
8.认定获取Cookie属于“身份认证信息”,构成非法获取计算机信息系统数据罪的典型案例包括:(2014)深南法刑初字第692号、(2014)杭余刑初字第1231号;
9.认定劫持、盗用、伪造Cookie或Token构成侵入性手段的典型案例包括:(2019)浙0602刑初1143号、(2014)青刑初字第1345号、(2017)京0108刑初392号;
10.认定利用劫持、盗取或者伪造的Cookie或Token获取账户登录权限,获取账户内的公民个人信息行为构成侵犯公民个人信息罪的典型案例包括:(2018)浙01刑终441号、(2018)辽0191刑初418号、(2019)皖0404刑初24号;
11.认定破解加密算法,伪造真实合法请求行为构成侵入性手段的典型案例包括:(2017)豫0105刑初1616号、(2014)温鹿刑初字第1155号、(2017)粤0305刑初153号(判决内容载(2017)粤03民初822号民事判决书)、(2016)沪0105刑初1027号;
12.注:验证码的英文全名叫Completely Automated Public Turing Test to Tell Computers and Humans Apart,缩写CAPTCHA,直接翻译的全名即“全自动区分计算机和人类的图灵测试”;
13.撞库和扫号是对一类非法获取用户账户信息和账户内数据案件的代称,在技术实质上和爬虫有共通之处,均需要绕过或者突破目标网站服务器的安全保护措施。主要分为三个步骤:第一步:从其他非法渠道获取某平台(如微博)泄露的账户或密码;第二步:利用用户在多个平台一般不会设置多个不同密码的习惯,通过频繁向目标平台(如支付宝、淘宝等)发送登录请求的方式,“碰撞”测试出哪些账户和密码是匹配的。在这一步上,和爬虫类似,同样是一种频繁向服务器发送请求的行为,同样会触发服务器的安全保护措施;第三步:利用匹配出来的账户和密码,登录该用户在目标平台的账户,获取该用户在目标平台中的数据或者其他信息;
14.认定构造“非常规网络请求”构成绕过或突破服务器安全保护措施的案例包括:(2018)粤5103刑初73号、(2017)桂0821刑初71号、(2017)粤0305刑初153号,判决内容载(2017)粤03民初822号民事判决书、(2017)晋0106刑初583号、(2016)浙0681刑初1102号;
15.(2014)深南法刑初字第692号毛起捷非法获取计算机信息系统数据罪一审刑事判决书;
16.(2014)杭余刑初字第1231号(一审)、(2015)浙杭刑终字第378号(二审)黄后荣、翁秀豪非法获取计算机信息系统数据、非法控制计算机信息系统罪一审刑事判决书;
17.(2017)京0108刑初2384号上海晟品网络科技有限公司、侯明强等非法获取计算机信息系统数据罪一审刑事判决书;
18.赵秉志:《公民个人信息刑法保护问题研究》,《华东政法大学学报》2014年第1期。喻海松:《刑法的扩张——〈刑法修正案(九)及新近刑法立法解释司法适用解读》,《人民法院出版社》2015年11月第1版,第152页;
19.注:《信息安全技术 个人信息安全规范》第5.6条规定的“征得授权同意的例外”,其中第h)项为“从合法公开披露的信息中收集个人信息的,如合法的新闻报道、政府信息公开等渠道”;
20.(2019)京0115刑初570号谢财安等侵犯公民个人信息一审刑事判决书;
21.(2016)内0402刑初396号肖凡、周浩、李晓波、王丽元、宋晓波侵犯公民个人信息一审刑事判决书;
22.最高人民法院、最高人民检察院《关于办理侵犯知识产权刑事案件具体应用法律若干问题的解释(三)》第2条第2款:在涉案作品、录音制品种类众多且权利人分散的案件中,有证据证明涉案复制品系非法出版、复制发行,且出版者、复制发行者不能提供获得著作权人、录音制作者许可的相关证据材料的,可以认定为刑法第二百一十七条规定的“未经著作权人许可”“未经录音制作者许可”。但是,有证据证明权利人放弃权利、涉案作品的著作权或者录音制品的有关权利不受我国著作权法保护、权利保护期限已经届满的除外;
23.(2015)浦刑(知)初字第12号北京易查无限信息技术有限公司、于东侵犯著作权刑事判决书。本案判决书内容较为简略。详细的案情分析,详见叶菊芬、桑清圆:《转码小说网页后的存储构成侵权》,人民法院报2017年3月2日星期四,第7版。链接:http://rmfyb.chinacourt.org/paper/images/2017-03/02/07/2017030207_pdf.pdf;
24.(2017)沪0104刑初325号段某某侵犯著作权一审刑事判决书。