Jack Chen

起源

爬虫在这个大数据时代已经不是什么新鲜事了,早前我们说的爬虫可能单指网页的爬虫,用来建立网页索引。在数据分析和机器学习火热的当下,互联网上的爬虫更加普遍,这些爬虫日夜不停的爬取数据导致以下这些行业更是爬虫的重灾区:

  • 火车飞机票务
  • 金融行情数据
  • 区块链要闻
  • 简历个人信息
  • 房屋商品价格

据统计互联网上约有 51% 左右的流浪是机器流量,这些流量是失控的、野蛮的。

蚂蚁吃大象

2019 年 4 月中旬,本人进入了一个数据旷工群组,群中近千号人都在热聊一件事情。都在讨论「关于如何绕过 XX 公司的爬虫防护策略」的开源工具。他们利用这个工具爬取了文书网,在此之前我对文书网的站点不是很了解,进群后才知道这是一个政府开放的个人传票信息查询网站。 后来文书网在 4 月发布了停机升级公告,已经被爬虫爬的无法正常对外服务了。再后来他们更换了反爬虫供应商。。。

残酷的竞争

互联网上广告和游戏也是是一个重要的赢利点,但是前提是要拥有众多的用户群体你才能参与进这样的揽金行业。马蜂窝和携程都拥有旅游信息业务板块,他们之间也出现了「携程起诉马蜂窝爬虫其游记和旅游评论信息」这样的微博热文。这样的商业竞争行为在互联网上还有很多,大家都是为了“争”业务、“抢”用户。

恶意报复

携程算是反爬虫领域做得比较早的一家企业,发布的关于反爬虫方面的材料也非常的有深度和见解。 但是最早也是因为被爬挂了,才有的反爬虫的诉求。

反爬虫我们要防御什么

反爬虫业务面对的三大场景分别是刷量、占用资源、信息资产盗取;

刷量

在广告、娱乐行业按量付费是很典型的场景。 按量结算量越高自然价钱越多,所以结算方或者其它第三方很有可能会利用爬虫去刷量。 一般刷量方法有机器刷量和人工刷量两种,其中机器刷量的成本相对会更加低廉,被各种中间平台广泛采用。

占用资源

恶意爬虫的访问会占用很多的服务器资源,有些服务商的站点或者服务并没有储备太多的额外业务并发。恶意爬虫的批量爬取可能会造成服务商的站点受影响,导致正常用户访问速度变慢,甚至可能导致站点直接崩溃。

信息资源盗取

信息资源盗取在新闻、机票、素材、直播等行业非常猖獗。 这些行业存在很多原创有价值的内容,黑产经常会盯上这些内容然后通过爬虫爬取资源后倒卖,作为中间商赚差价。这样也会严重影响原服务商和创作者的积极性。

反爬虫技术防御视角

很早之前互联网上并没有反爬虫这一说,但是随着爬虫的肆虐反爬虫的技术也在慢慢发展,举几个常见的反爬虫手段

  • IP 频率限制
  • UA 频率显示
  • API 数据加密
  • 数据蜜罐
  • 前端数据收集
  • 账户权限

以上都是我们常见的反爬虫手段,只是以前这个方法没有关联上“反爬虫”风控业务。反爬虫安全威胁是从前几年才进入大家的视线的,被认为是继应用层防火墙 WAF 之后的业务层防火墙。国内竞争可能不明显,但是在国外频频有关于反爬虫业务安全公司被 WAF 厂商收购的消息。其中最大的两家 distil 和 shieldsquare 在今年被收购了,绿盟 WAF 同样也在今年内规划了反爬虫功能。

反爬虫的挑战在哪里

传统的反爬虫方案一直存在,但是大厂还在不断规划新版本,一些未参与的厂商进来也慢慢参与进反爬虫业务。大家是为什么关注起反爬虫了?反爬虫业务到底面临着什么样的挑战。

传统方案难以应对分布式爬虫

当前分布式爬虫应用随着云服务的兴起也流行了起来,很多开源的爬虫方案都能够很好的支持分布式爬取。这种爬虫拥有大量的 IP、UA、账号、设备等资源,传统反爬虫方案的灵敏度、数据维度、资源池都受到严重的挑战。没有大数据和机器学习的参与很难从中寻找到合适的分辨线索和方法。

数据采集难度大

反爬虫业务贯穿整个数据链路,从设备环境、网络传输、应用层协议、业务特性等层面参与检测。传统的反爬虫方案主要集中在资源这一个点上,而且防御过程大部分和业务结合的太过于紧密,很难实现策略的灵活配合。 排开这些不说最大的问题是前端数据采集仅仅是聊胜于无。 我们知道很大部分的爬虫部署在云端,使用了大量的代理,在没有 UI 的状态下疯狂的爬取数据。但是反爬虫很多情况就就是找不到足够的证据,更无从防御。总结下来「云服务检测」、「代理检测」、「真人识别」、「协议分析」、「数据频率」、「账号团伙」、「设备团伙」、「IP 风险」这些业务诉求都对传统的方案提出了重大的挑战,也是反爬虫风控业务面临新技术挑战。

反爬虫防御现状

市面上已经有几家不同的反爬虫防御厂商的产品,下面简单介绍下大家的反爬虫思路。

利用 IP 和 UA 防护

这类产品很多云 WAF 厂商都用,优点是开发成本小、策略简单,缺点是数据需要及时更新、误封率高。某些情况下还不如控制自己的账号权限、接口频率来的实在。

利用加密 js 和动态 URL

这个方案是一个比较新奇的私立,通过动态刷新 js 来提高破解难度,通过动态 URL 导致爬虫找不到正确的 URL。 改方案可以干掉绝大多数的爬虫,但是确无法很好的保护数据接口,对搜索引擎的杀伤力也十分巨大。搜索引擎很深就是一个爬虫,它无法去知道正确的 URL。同时这个方案一旦被破解了 js,那么使用该方案的所有客户都会被影响,风险非常大。

利用机器学习产生统一的设备指纹

这个方案的优势在于从设备角度标识用户,保证同一个设备无论在什么环境下访问网站都可以产生同一个设备 ID,然后再通过该设备指纹对接口限制频率,再通过时序检测分析出各个有害的设备进行拦截。这样可以在全网建立一个比较大的设备指纹,策略非常简答有效。这个方案最大的问题就是方案本身,从哪里去找到这样一个设备指纹?目前基本无法 100% 准确且无遗漏的标识一个设备,对于网吧这种统一装机的,更是蒙圈。

通过动态 HTML

通过使用 css tricky 和动态 HTML 的内容导致爬虫无法准确提取到关键数据来进行反爬,即时数据被爬了,但是爬到的是错误的
真假混杂的数据,自然也就没有继续爬取的必要了。该方案多见于内容型的业务,比如微信文章、招聘网站的电话号码等。

利用数据链路和流量观测进行分析

对于一个用户的所有访问请求进行时序关联分析,发现恶意有风险的操作行为,配合验证码对用户的访问行为进行图灵测试。该方案对于技术要求难度比较大,但是对抗性比较强、误封率低。如果可以再配合数据蜜罐的话还能对误封体验做进一步优化,可以有风险返回 10 条数据,没风险返回 100 条 数据等

本篇主要介绍了反爬虫的背景和现状,大家对这个主题有兴趣欢迎随时回复帖子和我交流,也可多加入我的QQ群:727982278

07-16 02:24