我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,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 加密系统的行为。

观点1:遵循 robots 协议公开爬取数据原则上不构成不正当竞争

基于现行的惯例,未被 robots 协议排除的数据属于互联网上的公开数据,任何人都有权访问和收集。因而,遵循 robots 协议的前提下公开爬取数据原则上既不会侵犯信息提供者的权利,也不会构成不正当竞争。反之,如果违反 robots 协议,强行爬取他人的数据,则可能被认定为违反诚实信用和商业道德,构成不正当竞争。

观点2:破解信息提供者所设技术措施爬取数据可能构成不正当竞争

信息提供者设置此类保障措施的目的有多种,如认为所涉信息具有秘密性或公开爬取可能对网站或应用造成占用进而影响系统正常运行。无论基于何种目的,既然信息提供者对自身的系统或数据设置了安全保障措施,也即意味着信息提供者并不希望他人爬取该等数据。其最终产生的效果和 robots 协议具有一致性。因此,破解信息提供者所设的技术措施爬取数据同样有可能被认为构成不正当竞争。

从谷米诉元光案判决中可以看出,法官并未提及 robots 协议,但不可忽视的事实是元光公司破解了谷米公司“酷米客”APP的加密系统,进而才顺利爬取到实时公交数据,这一事实属于本案的关键事实。存在加密系统说明元光公司所爬取的数据并非公开信息,也就意味着元光公司获取信息的手段具有非法性,进而才导致元光爬取数据用于自身APP的行为被认定属于不正当竞争行为。

基于谷米公司指控的侵权事实发生于现行反不正当竞争法施行之前,故谷米诉元光案中法官适用了修订前的反不正当竞争法第二条作为认定依据。在现行反不正当竞争法下,应优先考虑第十二条的适用。根据第十二条,使用爬虫技术,无论是否遵循 robots 协议,亦或是否破解信息提供者设置的技术措施,只要爬取数据的行为妨碍、破坏其他经营者合法提供的网络产品或者服务正常运营的,都有可能构成不正当竞争。在第十二条不适用的情况下,则适用现行反不正当竞争法第二条认定不正当竞争行为。

观点3:破解信息提供者所设技术措施爬取数据可能构成非法获取计算机信息系统数据罪

刑法第二百八十五条规定:违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。

虽然“侵入”和爬虫常见的逆向还是有本质区别的,但法官通常不会这样认为,本案中,破解信息提供者所设的技术措施,获取计算机信息系统中的数据,是被视为具有刑事违法性,实施数据爬取行为的员工都被认定构成非法获取计算机信息系统数据罪(广州南山区人民法院:(2017)0305刑初153号)。

小结

爬虫中常见的逆向技术,在法庭上通常被认为是侵入,即便是两者有本质上的区别,但基于先行法律法规,法官也只能以侵入来定性,这样的案例不在少数,这是一个存在多年且可能还将持续多年的问题,只能期待相关法规完善的那天早点儿到来,此外爬虫工程师们需要注意的就是不正当竞争,如果自己的产品和爬取数据的目标产品属于同质产品,很容易被视为破坏他人市场竞争优势,并为自己谋取竞争优势有主观故意,违反诚实信用原则,扰乱竞争秩序,将会构成不正当竞争行为。

【k哥爬虫普法】爬取数据是否一定构成不正当竞争?的更多相关文章

  1. sumafan:python爬虫多线程爬取数据小练习(附答案)

    抓取 https://www.cnbeta.com/ 首页中新闻内容页网址, 抓取内容例子: https://hot.cnbeta.com/articles/game/825125 将抓取下来的内容页 ...

  2. Python使用Scrapy框架爬取数据存入CSV文件(Python爬虫实战4)

    1. Scrapy框架 Scrapy是python下实现爬虫功能的框架,能够将数据解析.数据处理.数据存储合为一体功能的爬虫框架. 2. Scrapy安装 1. 安装依赖包 yum install g ...

  3. python爬虫项目-爬取雪球网金融数据(关注、持续更新)

    (一)python金融数据爬虫项目 爬取目标:雪球网(起始url:https://xueqiu.com/hq#exchange=CN&firstName=1&secondName=1_ ...

  4. 【Spider】使用CrawlSpider进行爬虫时,无法爬取数据,运行后很快结束,但没有报错

    在学习<python爬虫开发与项目实践>的时候有一个关于CrawlSpider的例子,当我在运行时发现,没有爬取到任何数据,以下是我敲的源代码:import scrapyfrom UseS ...

  5. 【个人】爬虫实践,利用xpath方式爬取数据之爬取虾米音乐排行榜

    实验网站:虾米音乐排行榜 网站地址:http://www.xiami.com/chart  难度系数:★☆☆☆☆ 依赖库:request.lxml的etree (安装lxml:pip install ...

  6. 爬虫必知必会(6)_提升scrapy框架爬取数据的效率之配置篇

    如何提升scrapy爬取数据的效率:只需要将如下五个步骤配置在配置文件中即可 增加并发:默认scrapy开启的并发线程为32个,可以适当进行增加.在settings配置文件中修改CONCURRENT_ ...

  7. Python爬虫之爬取慕课网课程评分

    BS是什么? BeautifulSoup是一个基于标签的文本解析工具.可以根据标签提取想要的内容,很适合处理html和xml这类语言文本.如果你希望了解更多关于BS的介绍和用法,请看Beautiful ...

  8. 第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息

    第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息 crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻rul地址 有多 ...

  9. 总结:从Node爬取数据到前端图表展示

    最近寒假在家学习Node.js开发,光看书或者跟着敲代码还不够,得找一点有趣的事情来玩一玩,于是我决定写一个Node爬虫,爬取一些有意思或者说是有用的数据.这个决定只与我的兴趣有关,与Python或者 ...

  10. scrapy-redis实现爬虫分布式爬取分析与实现

    本文链接:http://blog.csdn.net/u012150179/article/details/38091411 一 scrapy-redis实现分布式爬取分析 所谓的scrapy-redi ...

随机推荐

  1. 快来一起玩转LiteOS组件:RHas

    摘要:RHash是一个C语言编写的哈希函数库,用于计算和验证磁力链接和各种消息摘要的控制台实用程序. 本文分享自华为云社区<LiteOS组件尝鲜-玩转RHas>,作者:Lionlace . ...

  2. 再谈BOM和DOM(2):DOM节点层次/属性/选择器/节点关系/操作详解

    DOM模型将整个文档(XML文档和HTML文档)看成一个树形结构,并用document对象表示该文档. 根据W3C DOM规范,DOM是HTML与XML的应用编程接口(API),DOM将整个页面映射为 ...

  3. iOS应用上架详细图文教程

    ​ App Store作为苹果官方的应用商店,审核严格周期长一直让用户头疼不已,很多app都"死"在了审核这一关,那我们就要放弃iOS用户了吗?当然不是!本期我们从iOS app上 ...

  4. 企业诊断屋:服饰美妆电商如何用A/B测试赋能业务

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   随着社会经济复苏,服饰美妆的消费市场回暖,国潮品牌正强势崛起和海外品牌进军,让不断增长的美妆市场竞争更加加剧. ...

  5. Unable to find @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest

    test下的包名和java下的包名不一致会产生下面错误 java.lang.IllegalStateException: Unable to find a @SpringBootConfigurati ...

  6. faker造数据

    faker是一个开源的python库,安装完成后只需要调用Facker库,就可以帮助我们创建需要的数据. pip install Faker demo from faker import Faker ...

  7. 跟着老猫来搞GO,系好安全带,准备发车!

    为什么想要开篇这么一个系列博客主题? 我想有很多小伙伴想要问我这个,其实主要有以下几个原因. 在粉丝面前丢脸了 之前写过几篇关于java分布式系统的一些坑,然后就有小伙伴挺崇拜的,认为老猫啥都会,甚至 ...

  8. Mac | HomeBrew 安装 & 配置 MySQL

    这个是我最新并且一直推崇的方法: 1.安装:brew install mysql 2.开启mysql:mysql.server start 3.使用mysql的配置脚本:/usr/local/opt/ ...

  9. 什么是「滑动窗口算法」(sliding window algorithm),有哪些应用场景?

    今天是算法数据结构专题的第2篇文章,我们一起来学习一下「滑动窗口算法」. 前言 最近刷到leetCode里面的一道算法题,里面有涉及到Sliding windowing算法,因此写一篇文章稍微总结一下 ...

  10. AtCoder Beginner Contest 204 (AB水题,C题DFS,D题位运算DP,E题BFS好题)

    补题链接:Here A - Rock-paper-scissors 石头剪刀布,两方是一样的则输出该值,否则输出该值 int s[4] = {0, 1, 2}; void solve() { int ...