
我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K 哥特设了“K哥爬虫普法”专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识,知晓如何合法合规利用爬虫技术,警钟长鸣,做一个守法、护法、有原则的技术人员。
谷米公司为开发和运营“酷米客”APP(提供实时公交查询服务),与公交公司达成合作,在公交车上安装定位器,以获取实时公交位置数据。谷米公司所收集的实时数据不仅被用于酷米客APP运营,还被提供给深圳市交委。深圳市交委基于信息化建设工作将该实时数据提供给深圳北斗应用技术研究院开展研究工作。经深圳市交委同意,深圳北斗应用技术研究院将深圳公交电子站牌数据测试接口开放给元光公司“车来了”(提供实时公交查询服务)APP应用。深圳公交电子站牌数据测试接口数据包含谷米公司所收集的公交车实时数据。但相比谷米直接从定位器上获取的实时数据,谷米提供给深圳市交委的数据存在一定的延迟。
2015年11月左右,邵凌霜、C某某为了提高元光公司开发的智能公交APP“车来了”在中国市场的用户量及信息查询的准确度,保证公司更好的经营,邵凌霜授意C某某,指使公司员工L某某、L某某、Z某某等人利用网络爬虫软件获取包括谷米公司在内的竞争对手公司服务器里的公交车行驶信息、到站时间等实时数据。Z某某负责编写爬虫软件程序;L某某负责不断更换爬虫程序内的IP地址,使用变化的IP地址获取数据,以防元光公司察觉;L某某负责编写程序,利用L某某设置的不同IP地址及Z某某编写的爬虫程序向谷米公司发出数据请求,大量爬取谷米公司开发的智能公交APP“酷米客”的实时数据,日均300万至400万条。起初,Z某某破解“酷米客”客户端的加密算法没有成功,C某某便出面聘请其他公司技术人员帮忙将谷米公司APP的加密系统攻破,使L某某、L某某、Z某某顺利爬取到谷米公司服务器里的大量公交车行驶实时数据。爬取的数据直接为元光公司所用,使该公司的智能公交APP“车来了”准确度提高。
谷米公司认为,元光公司通过技术手段非法获取其海量数据的行为构成不正当竞争,遂提起诉讼,请求判令:1. 元光公司立即停止获取、使用谷米公司实时公交位置数据的不正当竞争行为;2. 元光公司和邵凌霜等五人连带赔偿谷米公司经济损失人民币3000万元;3.连带赔偿谷米公司因维权所支付的合理费用人民币100万元;4.连带在新浪、腾讯等网站和《深圳特区报》、《楚天都市报》首页显著位置发表声明,公开赔礼道歉;5.连带承担案件的全部诉讼费用。
本案的核心争议在于数据爬取是否属于不正当竞争行为?破解加密算法的行为是否属于非法获取计算机信息系统数据罪?
谷米公司系“酷米客”软件著作权人,对该软件所包含的信息数据的占有、使用、收益及处分享有合法权益。未经谷米公司许可,任何人不得非法获取该软件的后台数据并用于经营行为。其次,元光公司未经谷米公司许可,利用网络爬虫技术进入谷米公司的服务器后台非法获取数据,其数据来源不合法。再次,元光公司将爬取获得数据用于同质产品一种“不劳而获”、“食人而肥”的行为,具有非法占用他人无形财产权益,破坏他人市场竞争优势,并为自己谋取竞争优势的主观故意,违反了诚实信用原则,扰乱了竞争秩序,构成不正当竞争行为。法院综合考虑元光公司获取数据的范围、侵权行为持续时间、获取数据数量等因素确定元光公司赔偿谷米公司经济损失及合理维权费用共计50万元。
邵凌霜、C某某、L某某、L某某、Z某某违反国家规定,采用其他技术手段,获取计算机信息系统中储存的数据,情节特别严重,其行为已构成非法获取计算机信息系统数据罪。判决:一、邵凌霜犯非法获取计算机信息系统数据罪,判处有期徒刑三年,缓刑四年,并处罚金人民币十万元。二、C某某犯非法获取计算机信息系统数据罪,判处有期徒刑二年,缓刑三年,并处罚金人民币五万元。三、L某某犯非法获取计算机信息系统数据罪,判处有期徒刑一年六个月,缓刑二年,并处罚金人民币四万元。四、L某某犯非法获取计算机信息系统数据罪,判处有期徒刑一年四个月,缓刑二年,并处罚金人民币三万元。五、Z某某犯非法获取计算机信息系统数据罪,判处有期徒刑一年四个月,缓刑二年,并处罚金人民币三万元。
裁判文书参考:https://aiqicha.baidu.com/wenshu?wenshuId=493f49a5be1f9b234ad5106601c97bc5cf7d2802
互联网时代,数据爬取行为极其常见。所谓爬取数据,就是按照一定的规则自动获取互联网站点的数据。与爬虫技术相伴相生的另一概念即是“robots 协议”(网络爬虫排除标准)。通过爬虫技术可以访问和收集互联网站点的诸多信息,为了维护互联网秩序,尊重信息提供者的意志和隐私等,信息提供者可以在自己的站点设置 robots 协议,以告知爬虫哪些信息是提供者不希望被爬取的。robots 协议是国际公认的互联网领域内通行标准,但其性质在法律上并没有明确的规定,因此一般也被视为“君子协议”。
信息提供者除了设置 robots 协议外,还可以就自己的系统或数据采取一定的技术保障措施。采取技术保障措施后,爬虫可能无法顺利爬取相关数据,或所爬取的数据需要经过解密才能使用。
本案中,法院判决未提及 robots 协议,但元光公司存在破解谷米公司 APP 加密系统的行为。
基于现行的惯例,未被 robots 协议排除的数据属于互联网上的公开数据,任何人都有权访问和收集。因而,遵循 robots 协议的前提下公开爬取数据原则上既不会侵犯信息提供者的权利,也不会构成不正当竞争。反之,如果违反 robots 协议,强行爬取他人的数据,则可能被认定为违反诚实信用和商业道德,构成不正当竞争。
信息提供者设置此类保障措施的目的有多种,如认为所涉信息具有秘密性或公开爬取可能对网站或应用造成占用进而影响系统正常运行。无论基于何种目的,既然信息提供者对自身的系统或数据设置了安全保障措施,也即意味着信息提供者并不希望他人爬取该等数据。其最终产生的效果和 robots 协议具有一致性。因此,破解信息提供者所设的技术措施爬取数据同样有可能被认为构成不正当竞争。
从谷米诉元光案判决中可以看出,法官并未提及 robots 协议,但不可忽视的事实是元光公司破解了谷米公司“酷米客”APP的加密系统,进而才顺利爬取到实时公交数据,这一事实属于本案的关键事实。存在加密系统说明元光公司所爬取的数据并非公开信息,也就意味着元光公司获取信息的手段具有非法性,进而才导致元光爬取数据用于自身APP的行为被认定属于不正当竞争行为。
基于谷米公司指控的侵权事实发生于现行反不正当竞争法施行之前,故谷米诉元光案中法官适用了修订前的反不正当竞争法第二条作为认定依据。在现行反不正当竞争法下,应优先考虑第十二条的适用。根据第十二条,使用爬虫技术,无论是否遵循 robots 协议,亦或是否破解信息提供者设置的技术措施,只要爬取数据的行为妨碍、破坏其他经营者合法提供的网络产品或者服务正常运营的,都有可能构成不正当竞争。在第十二条不适用的情况下,则适用现行反不正当竞争法第二条认定不正当竞争行为。
刑法第二百八十五条规定:违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。
虽然“侵入”和爬虫常见的逆向还是有本质区别的,但法官通常不会这样认为,本案中,破解信息提供者所设的技术措施,获取计算机信息系统中的数据,是被视为具有刑事违法性,实施数据爬取行为的员工都被认定构成非法获取计算机信息系统数据罪(广州南山区人民法院:(2017)0305刑初153号)。
爬虫中常见的逆向技术,在法庭上通常被认为是侵入,即便是两者有本质上的区别,但基于先行法律法规,法官也只能以侵入来定性,这样的案例不在少数,这是一个存在多年且可能还将持续多年的问题,只能期待相关法规完善的那天早点儿到来,此外爬虫工程师们需要注意的就是不正当竞争,如果自己的产品和爬取数据的目标产品属于同质产品,很容易被视为破坏他人市场竞争优势,并为自己谋取竞争优势有主观故意,违反诚实信用原则,扰乱竞争秩序,将会构成不正当竞争行为。

我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我有一个驼峰式字符串,例如:JustAString。我想按照以下规则形成长度为4的字符串:抓取所有大写字母;如果超过4个大写字母,只保留前4个;如果少于4个大写字母,则将最后大写字母后的字母大写并添加字母,直到长度变为4。以下是可能发生的3种情况:ThisIsMyString将产生TIMS(大写字母);ThisIsOneVeryLongString将产生TIOV(前4个大写字母);MyString将生成MSTR(大写字母+tr大写)。我设法用这个片段解决了前两种情况:str.scan(/[A-Z]/).first(4).join但是,我不太确定如何最好地修改上面的代码片段以处理最后一种
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
我正在尝试在Rails上安装ruby,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf
文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,
SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手