一、为什么要反爬虫
1、爬虫占总PV比例较高,这样浪费钱(尤其是三月份爬虫)。
三月份爬虫是个什么概念呢?每年的三月份我们会迎接一次爬虫高峰期。
最初我们百思不得其解。直到有一次,四月份的时候,我们删除了一个url,然后有个爬虫不断的爬取url,导致大量报错,测试开始找我们麻烦。我们只好特意为这个爬虫发布了一次站点,把删除的url又恢复回去了。
但是当时我们的一个组员表示很不服,说,我们不能干掉爬虫,也就罢了,还要专门为它发布,这实在是太没面子了。于是出了个主意,说:url可以上,但是,绝对不给真实数据。
于是我们就把一个静态文件发布上去了。报错停止了,爬虫没有停止,也就是说对方并不知道东西都是假的。这个事情给了我们一个很大的启示,也直接成了我们反爬虫技术的核心:变更。
后来有个学生来申请实习。我们看了简历发现她爬过携程。后来面试的时候确认了下,果然她就是四月份害我们发布的那个家伙。不过因为是个妹子,技术也不错,后来就被我们招安了。现在已经快正式入职了。
后来我们一起讨论的时候,她提到了,有大量的硕士在写论文的时候会选择爬取OTA数据,并进行舆情分析。因为五月份交论文,所以嘛,大家都是读过书的,你们懂的,前期各种DotA,LOL,到了三月份了,来不及了,赶紧抓数据,四月份分析一下,五月份交论文。
就是这么个节奏。
2、公司可免费查询的资源被批量抓走,丧失竞争力,这样少赚钱。
OTA的价格可以在非登录状态下直接被查询,这个是底线。如果强制登陆,那么可以通过封杀账号的方式让对方付出代价,这也是很多网站的做法。但是我们不能强制对方登录。那么如果没有反爬虫,对方就可以批量复制我们的信息,我们的竞争力就会大大减少。
竞争对手可以抓到我们的价格,时间长了用户就会知道,只需要去竞争对手那里就可以了,没必要来携程。这对我们是不利的。
3、爬虫是否涉嫌违法? 如果是的话,是否可以起诉要求赔偿?这样可以赚钱。
这个问题我特意咨询了法务,最后发现这在国内还是个擦边球,就是有可能可以起诉成功,也可能完全无效。所以还是需要用技术手段来做最后的保障。
二、反爬虫
1、网站不同地方的文本内容添加不同的自带标签,增加对方数据清理难度。
2、关键数据由文本转图片,甚至添加水印等。目前市场上图片ocr识别无法有效转文字,让对方即使获取了图片也无法有效使用。
3、网站相关页面的列表查询,限制总页数的展示。比如数据一共1K页,相关接口却只对外展示前十页。对方找不到入口最多爬取10页数据。
4、间接关闭网站核心数据查看入口,比如内容的查看像百度文库一样改为word、pdf或者ppt下载模式,高频下载需要验证码或者账号积分。
5、网站不提供注册入口,或者注册需要内部推荐或者评审,加大爬虫方获取账号的难度。
6、网站的请求url复杂化,比如弄的像淘宝一样没有规律,id改为UUID等。
7、前端页面尽可能不暴露数据的唯一键,对唯一键如主键id等进行伪装,可以增加对方爬取后的去重成本。因为对方爬数据可能是在你的多个模块页面进行多维度爬取,会有大量的重复数据。
8、前端html页面别一次性加载列表,根据用户点击js动态加载。即查询页面源码时,只能看到列表的第一条数据。
9、当确定访问异常时,大量返回虚假数据。爬虫几乎没有判断数据真假的能力,只有人才有。对方发现的越晚,我们的处理应对时间就越充裕。
10、核心数据提高安全等级,单独加密等。