编者按:本文来自微信公众号“CSDN”(ID:CSDNnews),作者 郭芮。36氪经授权转载。
近期,一起关于爬虫与反爬虫的诉讼案件再次被推到了公众面前。
公交作为互联网从业者的必备通勤工具之一,是出行领域必争的板块。实时公交 APP 也就成为了热门的应用场景,它们不仅可以为用户提供定位、公交路线查询等信息,还涉及路线规划、实时公交信息地理位置等服务。在这其中,“酷米客”和“车来了”是大众使用较为频繁的两款实时公交出行 APP。
2012 年 10 月,深圳谷米科技有限公司推出了酷米客实时公交 APP。通过在公交车上安装定位器,酷米客获得了海量的实时公交位置数据,具有定位精度高、实时误差小等明显优势,并迅速吸引了大批市场用户。目前,酷米客 APP 拥有超过 5000 万的注册量,每日活跃用户超过 400 万。
但是 2015 年 11 月的时候,同为实时公交 APP 的“车来了”为了提升市场份额和信息查询准确度,竟授意五位程序员员工利用爬虫软件获取酷米客公司服务器的公交车行驶信息、到站时间等实时数据。
厉害的是,这五位程序员分工十分明确:一位负责编写爬虫软件程序;一位负责不断更换爬虫软件程序内的 IP 地址,以防止被察觉;一位利用所设置的不同 IP 地址及爬虫程序向酷米客发出数据请求;一位负责破解酷米客客户端的加密算法;在破解失败后,另一位员工又聘请其他公司的技术人员帮忙攻破加密系统,使得爬虫工作得以顺利实施。这一系列数据操作“成效”斐然,帮助“车来了”获取了大量的酷米客实时数据,日均可达 300-400 万条。
花费了巨大人力、时间和经济成本所获得的信息却被同行窃取了,还直接挤压了自身的竞争优势和交易机会,这让酷米客怎么甘心?
一怒之下,2016 年,酷米客将车来了告上了法庭。历时两年之久,这场纠纷案才最终一锤定音。今年 5 月,法院裁定车来了立即停止获取、使用酷米客实时公交位置数据的不正当竞争行为,并赔偿其经济损失。
想必看到这里,大家最为关心的问题是那五位程序员会获罪吗?虽然在诉讼过程中,五位程序员员工利用网络爬虫二次获取公交车辆实时信息的行为都只是因为履行工作职责,没有用于谋取个人私利。然而,酷米客后台服务器存储的数据具有巨大的商业价值,未经其许可,任何人不得非法获取该软件的后台数据并用于经营行为——因此他们必须承担连带责任。
对此,中关村大数据联盟副秘书长陈新河老师告诉 CSDN(ID:CSDNnews),“数据爬虫的违法边界一直是互联网争议的热点,尤其是在大数据时代,随着内容数据价值的日益凸显,爬虫侵权案也越来越多。”身处其中的程序员们,面对上级下发的“爬虫需求”,是难以置身事外的,一不小心可能就入了局。
事实上,爬虫犯罪一直是个难以界定的灰色地带。
网络爬虫是一种自动获取网页内容的程序,通常情况下它是不违法的,比如很多人都会用到的百度搜索,除去其自营的百度知道、百度百科等,几乎都是爬虫采集下来的。作为一门技术,爬虫本身并不违法,所以大多数情况下都可以放心大胆地用。一般而言,常见的爬虫手段包括有构造合理的 HTTP 请求头、设置 cookie、降低访问频率、隐含输入字段值、使用代理等等。
比如 CSDN 此前就曾分享过北京二手房数据、网易云音乐评论、马蜂窝出行数据、大众点评、福彩 3D 信息等应用数据爬取。但并不是所有数据都有“可爬之机”,陈新河表示,“让不让爬,能不能超越规则之外的爬,能不能用技术手段跨越封锁......这些打擦边球的爬虫就很容易擦枪走火。”——尤其是当站点明确声明禁止爬虫采集或转载商业化,或当网站声明了 Robots 协议时。
Robots 协议也称为爬虫协议、机器人协议,其全称为“网络爬虫排除标准”(Robots Exclusion Protocol)。网站通过 Robots 协议告诉爬虫哪些页面可以抓取,哪些页面禁止抓取。
Robots 协议是搜索引擎行业内公认的、应当被遵守的商业道德。
尽管如此,以身试险的“勇者”仍是不计其数,包括我们耳熟的百度、360 搜索、大众点评、今日头条等:
2012 年,360 搜索违反 Robots 协议,强行抓取百度旗下百度知道、百度百科、百度贴吧、百度旅游等内容,最终被裁定赔偿百度 70 万元。
2016 年,大众点评网起诉百度公司。自 2012 年以来,百度公司未经许可在百度地图、百度知道中大量抄袭、复制大众点评网的用户点评信息,直接替代大众点评网向用户提供的内容,给其自身造成巨大损失。百度最终败诉,停止了在百度地图等产品中使用点评信息,并赔偿 300 万元。
2017 年,秀淘破解了今日头条服务器的防抓措施,使后者损失技术服务费两万元。最终法庭判决,涉事者因为触犯非法获取计算机信息系统数据罪,被判九个月至一年不等的有期徒刑,并处罚金。这也是国内首起“爬虫入刑”案。
......
其实可以预料的是,因为目前监管法律的不完善,仍有很多漏网之鱼。但是随着数据价值的不断挖掘,未来的爬虫侵权案只会越来越多。
那面对日益猖獗的爬虫行径,作为网站方该如何应对?
既然有“爬虫”,那自然会有“反爬虫”。网站一般采用的反爬虫技术可以分为四个种类:通过 User-Agent 来控制访问、通过 IP 限制来反爬虫、通过 JS 脚本来防止爬虫、通过 robots.txt 来限制爬虫。
下面我们通过几个热门站点分析下常见的反爬虫机制:
一、豆瓣
很多的爬虫新手都会爬取豆瓣来练手,但豆瓣并不是完全开放的态度。它的反爬虫机制如下:
在没有携带 cookie 的情况下,如果某个 IP 短时间高并发请求网站,该 IP 会立马被封。当 IP 被封,登录豆瓣网站会解封。
在携带 cookie 的情况下,某个 IP 请求网站过于频繁。豆瓣的反爬虫机制变为只封 cookie 不封 IP。也就说退出登录或换个账号还能继续访问。
可以看出,豆瓣是一个十分体谅爬虫新手的网站。爬虫者只要在代码中登录账号并降低并发数,再随机延迟等待一段时间,爬虫程序就不会被封。
二、拉勾网
拉勾网最初的反爬虫机制没有现在这么严格,但是随着关注者的增多,网站管理员为了保护服务器增加了一些手段。该网站的反爬虫机制如下:
在没有登录的情况下,程序只能连续访问 3 个 Url。如果再继续访问,网站会将链接重定向,然后提示我们登录。
如果在登录情况下,连续请求部分 Url 之后 IP 会被封。
针对这样的爬虫机制,爬虫者只能使用 IP 代理池来突破。
三、汽车之家
汽车之家论坛的反爬虫机制比较高级,它利用前端页面自定义字体的方式来实现反爬的技术手段。具体使用到是 CSS3 中的自定义字体模块,将自定义的 Web 字体嵌入到了指定网页中去。这就导致在爬取论坛帖子的口碑时,获取到的返回文本中每隔几个字就出现一个乱码符号。
每次访问论坛页面,其中字体不变,但字符编码是变化的。因此,爬虫者需要根据每次访问动态解析字体文件。具体需要先访问爬取的页面,获取字体文件的动态访问地址并下载字体,读取 JS 渲染后的文本内容,替换其中的自定义字体编码为实际文本编码,才可复原网页为页面所见内容。
......
但是,反爬虫不是万能的。“以保护用户数据之名,行数据垄断之实的全面禁止爬取策略也将受到数据经济时代新反垄断法的挑战。”陈新河如是说。
但是,技术无罪,那么程序员就该有罪吗?听从上级吩咐写个几行代码就莫名其妙被关起来了?可怕的是不仅一脸懵还无处申冤。
在知乎上,也有很多关于爬虫犯罪的疑问。在“爬虫究竟是合法还是违法的?”(https://www.zhihu.com/question/291554395)问题下,知乎用户@笔芯设计匠 表示,爬虫开发者的道德自持和企业经营者的良知才是避免触碰法律底线的根本所在:
我们身边的网络已经密密麻麻爬满了各种网络爬虫,它们善恶不同,各怀心思。作为爬虫开发者,如何在使用爬虫时避免进局子的厄运呢?
1. 严格遵守网站设置的 Robots 协议;
2. 在规避反爬虫措施的同时,需要优化自己的代码,避免干扰被访问网站的正常运行;
3. 在设置抓取策略时,应注意编码抓取视频、音乐等可能构成作品的数据,或者针对某些特定网站批量抓取其中的用户生成内容;
4. 在使用、传播抓取到的信息时,应审查所抓取的内容,如发现属于用户的个人信息、隐私或者他人的商业秘密的,应及时停止并删除。
所以,面对上级危险的爬虫请求,程序员们该好好衡量下了。
对于涉及法律风险的数据爬取要求,程序员最好在采集前和上级深聊一下,给后者科普一下其中的法律风险。如果对方仍执意采集,建议事先和公司签署一份免责协议,避免在风险降临时被拉下水。
参考资料:
https://blog.csdn.net/ChenXinHe2020/article/details/81326431;
https://www.zhihu.com/question/291554395;