你写的代码,可能有一天会让你入狱
近期,某大数据科技公司因为涉嫌非法抓取某招聘网站用户的简历信息,公司被查封,负责编写抓取程序的程序员也将面临坐牢。
事情的大概经过是这样的:
某大数据科技公司老板丢给一个小小的程序员一个网站,告诉他把这个网站的数据抓取下来,咱们做一做分析。这个小小的程序员就吭哧吭哧的写了一段抓取代码,测试了一下,程序没问题,可以正常的把这个网站的数据给抓取下来,然后就毫不犹豫的上线了。过了几天,这个小小的程序员发现抓取的速度有点慢啊,然后他就将1个线程改成10个线程,发布上线,开始抓取,程序跑的没毛病。
过了一段时间,网站主的老板发现最近网站访问量激增,并且还经常宕机。然后组织公司程序员排查系统问题,经过排查发现,系统某一个接口频繁访问,遂怀疑有人恶意攻击,于是就报案了。警察通过访问来源IP顺藤摸瓜,查到小小程序员所在的公司,把公司全员200人全部扣留调查,这名小小程序员由于负责抓取程序的编写,将面临坐牢。
小小程序员一脸懵逼,我只负责老板交给我的任务,我犯什么法了?结局大概率是进去了。
“你写的代码,可能有一天会让你坐牢!”
最近程序员圈子不乏这样的戏谑调侃。
原因是最近发生的多起涉及爬虫技术的公司被司法部门调查。特别是近日51信用卡被查,更是将暴力催收背后非法使用爬虫技术爬取个人隐私数据的丑行,暴露在阳光之下。
爬虫的技术原理
搜索引擎收集网上信息的主要手段就是网络爬虫(也叫网页蜘蛛、网络机器人)。它是一种“自动化浏览网络”的程序,按照一定的规则,自动抓取互联网信息,比如:网页、各类文档、图片、音频、视频等。搜索引擎通过索引技术组织这些信息,根据用户的查询,快速地提供搜索结果。
设想一下,我们平时浏览网页的时候会怎么做?
一般情况下,首先,会用浏览器打开一个网站的主页,在页面上寻找感兴趣的内容,然后点击本站或其它网站在该网页上的链接,跳转到新的网页,阅读内容,如此循环往复。如下图所示:
图中的虚线圆角矩形代表一个网站,每个实线矩形表示一个网页。可以看到,每个网站一般以首页为入口,该首页链接到几个、几万个、甚至上千万个的内部网页。同时,这些网页往往又链接了很多外部网站。例如,用户从苏宁金融的网页为起点,浏览发现了PP视频的链接,点击后跳转到了PP视频主页,作为体育爱好者,在体育频道中找到了相关的新浪微博的内容,再次点击后又来到微博的页面继续阅读,从而形成了一条路径。如果把所有的可能路径呈现出来,就会看到一个网络结构。
网络爬虫模拟了人们浏览网页的行为,只是用程序代替了人类的操作,在广度和深度上遍历网页。如果把互联网上的网页或网站理解为一个个节点,大量的网页或网站通过超链接形成网状结构。爬虫通过遍历网页上的链接,从一个节点跳转到下一个节点,就像是在一张巨大的网上爬行,但是比人类的速度更快,跳转的节点更全面,所以被形象地称为网络爬虫或网络蜘蛛。
爬什么数据犯法?
1、属于著作权法保护的作品
因为有些网站发表的内容,如文章、评论等都是有著作权的,如果只是单纯的通过浏览器查看是不会触犯法律的。
但是,对于有著作权的作品,如果未经著作权人许可,以盈利为目的,对其作品进行复制是会触犯法律的。
根据《*著作权法》第46条:有下列侵权行为的,应当根据情况,承担停止侵害、消除影响、公开赔礼道歉、赔偿损失等民事责任,并可以由著作权行政管理部门给予没收非法所得、罚款等行政处罚:(一)剽窃、抄袭他人作品的;
(二)未经著作权人许可,以营利为目的,复制发行其作品的;
(三)出版他人享有专有出版权的图书的;
(四)未经表演者许可,对其表演制作录音录像出版的;
(五)未经录音录像制作者许可,复制发行其制作的录音录像的;
(六)未经广播电台、电视台许可,复制发行其制作的广播、电视节目的;
(七)制作、出售假冒他人署名的美术作品的。
如果是使用爬虫技术手段爬取数据之后将其保存下来或者传播,并且进行盈利,这种都是属于犯罪的。
2、用户的个人信息或者个人隐私
个人用户的个人信息,即使是用户自己放到一些网站上进行公开或者部分公开,如微博、微信等,不代表这些数据就可以被其他人随便获取!
根据《民法总则》第111条:任何组织和个人需要获取他人个人信息的,应当依法取得并确保信息安全。不得非法收集、使用、加工、传输他人个人信息;
根据《网络安全法》第44条:任何个人和组织不得窃取或者以其他非法方式获取个人信息。因此,如果爬虫在未经用户同意的情况下大量抓取用户的个人信息,则有可能构成非法收集个人信息的违法行为。
所以,如果爬取的数据涉及到个人信息,都是违法的!
还有些爬虫企图绕过权限校验等,爬取用户未公开的信息,如个人私密相册照片等,都是属于侵犯用户的个人隐私的,这种也是违法的。
3、反不正当竞争保护的数据
目前有很多网站中的数据系由用户生成,且该等数据和内容系原告网站的主要竞争力来源。如大众点评上面的店铺评价、评论等信息,携程网上面的关于酒店的评价评论等信息等。
根据《反不正当竞争法》第2条:经营者在市场交易中,应当遵循自愿、平等、公平、诚实信用的原则,遵守公认的商业道德。
那么,未经允许,爬取其他网站的核心数据,很明显并没有遵守自愿、平等、公平、诚实信用的原则。
在大众点评诉百度不正当竞争案件、以及新浪微博诉脉脉不正当竞争等案件中,法院都认定被告未经许可抓取、使用原告网站中的数据的行为,违反了诚实信用原则及公认的道德,损害了互联网的市场竞争秩序,损害了原告的竞争优势,从而构成不正当竞争。
因此,如果抓取大众点评、微博、豆瓣电影、知乎等UGC模式的网站上用户发布的信息,并在自己的产品或者服务中发布、使用该等信息,则有较大的风险构成不正当竞争。
避免违法,网络爬虫的礼仪
礼仪一:robots.txt文件
每个行业都有其Code of Conduct,成为行为准则或行为规范。比如,你是某个协会中的成员,那就必须遵守这个协会的行为准则,破坏了行为准则是要被踢出去的。
最简单的例子,你加入的很多微信群,一般群主都会要求不可以私自发广告,如果未经允许发了广告,会被立刻踢出群,但是发红包就没事,这就是行为准则。
爬虫也有行为准则。早在1994年,搜索引擎技术刚刚兴起。那时的初创搜索引擎公司,比如AltaVista和DogPile,通过爬虫技术来采集整个互联网的资源,与Yahoo这样的资源分类网站激烈竞争。随着互联网搜索规模的增长,爬虫收集信息的能力快速进化,网站开始考虑对于搜索引擎爬取信息做出限制,于是robots.txt应运而生,成为爬虫界的“君子协定”。
robots.txt文件是业内惯用做法,不是强制性的约束。robots.txt的形式如下:
在上面这个robots.txt例子中,所有的爬虫都被禁止访问网站的任意内容。但是Google的爬虫机器人,可以访问除了private位置的所有内容。如果一个网站上没有robots.txt,是被认为默许爬虫爬取所有信息。如果robots.txt做了访问的限制,但是爬虫却没有遵守,那就不是技术实现这么简单的事情了。
礼仪二:爬取吞吐量的控制
曾经出现假冒Google搜索引擎的爬虫去对网站进行DDoS攻击,让网站瘫痪的事情。近年来,恶意爬虫造成的DDoS攻击行为有增无减,给大数据行业蒙上了爬虫的阴影。因为其背后的恶意攻击者,往往具备更为复杂和专业的技术,能绕过各种防御机制,让防范这样攻击行为难上加难。
礼仪三:做一个优雅的爬虫
优雅的爬虫背后,一定站着一个文明人或者一个文明团队。他们会考虑自己写的爬虫程序是否符合robots.txt协议,是否会对被爬网站的性能造成影响,如何才能不侵害知识产权所有者的权益以及非常重要的个人隐私数据等问题。
出于能力的差别,并不是每个爬虫团队都能考虑到这些问题。2018年,欧盟出台的《General
Data Protection
Regulation》(通用数据保护条例)中对数据的保护做出了严格的说明。2019年5月28日,国家互联网信息办公室发布的《数据安全管理办法》(征求意见稿)对爬虫和个人信息安全做出了非常严格的规定。比如:
(1)第十六条 网络运营者采取自动化手段访问收集网站数据,不得妨碍网站正常运行;此类行为严重影响网站运行,如自动化访问收集流量超过网站日均流量三分之一,网站要求停止自动化访问收集时,应当停止。
(2)第二十七条 网络运营者向他人提供个人信息前,应当评估可能带来的安全风险,并征得个人信息主体同意。
其实,我国2017年6月1日施行的《*网络安全法》第四章第四十一条和四十四条就已经对个人隐私信息数据的收集和使用做出明文规定,这也与爬虫直接相关。
法律制度的出台,给技术的边界做出了明确的限定,技术无罪并不能作为技术实施者为自己开脱的理由。爬虫在实现自己需求的同时,必须做到严格遵守行为准则和法律条例。
你需要了解的…
对于广大爬虫工程师,如果你开发的爬虫涉及个人信息及隐私,爬虫未遵守Robots协议,爬虫企图通过技术手段绕过反爬机制等,都是触犯了法律的。
对于那些做爬虫的企业,如果涉及到爬取受著作权保护的内容,涉及到公司商业机密等内容,并且用于盈利或者不正当竞争等,也是国家法律所不允许的。
还有就是,"明知故犯"的事情不要做,也不要抱有任何侥幸心理,一定要远离**、S情网站,并拒绝为他们提供任何技术支持。
如果公司的主营业务是P2P,并且自己参与了P2P的开发,那么一定要了解清楚自己公司所做的业务是否合规,如果发现不合规,一定要趁早离职。并且不要参与除纯开发以外的其他事宜。
不要参与’外挂软件’的开发。学会保护自己!
如果你觉得你写的代码可能会触犯法律,那么希望大家第一时间找律师咨询一下,自己是否有触及到法律,以及如何避免和脱身等。
本文只是做简单的说明,事情还是需要自己有辨别,还有很多情况正在发生和即将发生,所以,希望广大程序员们,不要只顾埋头写代码,还要经常抬头看看,审视下自己所做的产品、所在的公司以及所从事的行业。
作为程序员,我们手里的技术就是工具,那么,我们有责任也有义务来保证我们的工具是用在正途的。
最后,技术无罪、人会犯错、知错能改、善莫大焉。