反爬虫探索(3)-反爬虫平台Anticraw

潘洪敏

个人介绍:潘洪敏,2015年7月加入去哪儿。目前在大住宿事业部大前端工作,负责爬虫类型分析,反爬虫策略研发,以及反爬虫平台的开发与维护,同时负责反爬虫平台产出的数据分析,以及数据清洗工作。

既然反爬虫是个长期工程,那么将反爬虫系统化、工程化就很重要。 怎么上下策略,怎么匹配规则,怎么更换惩罚等,都需要一个成熟的平台来操作。而不是说每次都重复相同的步骤,做着重复性的工作,劳心费力。

将反爬虫系统化、平台化是在一场持久战中胜利的必要条件。所谓工欲善其事,必先利其器,就是这个道理。

反爬虫平台目标

在做反爬虫平台之前,我们需要明确反爬虫平台需要达成的目标:

·提供可快速上下策略的功能

·提供可以个性化配置的策略选择

·提供可以个性化配置的惩罚规则匹配功能

·提供反爬虫策略池,规则池,惩罚池,以供选择

·提供一个稳定的反爬虫系统

·提供完善的监控

·提供有价值的识别日志

·对数据有保护

·对爬虫有快速响应的能力

反爬虫平台整体系统结构

前面也提到了,反爬虫平台会提供完善的反爬虫识别日志。识别日志至少有两个用途,之一是用识别日志来清洗数据,清洗之后的日志才是可以“说话”的能反应真实情况的真实数据;之二是日志还可以作为机器学习的学习范本或支持库,以供机器学习训练使用,以至于达到机器防抓的目的。

反爬虫平台包括四个组成部分,业务线接入系统、反爬虫系统、管理系统、配置管理系统。业务接入系统负责对接业务线,并提供环境探测功能;反爬虫系统负责整体反爬虫流程控制以及代理转发;管理系统负责所有的管理工作,包括业务线基本信息管理,策略管理,惩罚规则管理,惩罚方案管理等。配置管理系统负责策略、惩罚等的历史版文本维护。

在上篇文章中,我们将反爬虫分为前端反爬虫,中间层反爬虫,后端反爬虫。根据实时性,将反爬虫分为实时反爬虫和非实时反爬虫。反爬虫平台的反爬虫系统属于中间层的实时反爬虫,在客户端与服务器之间设置拦截过滤,有效减少服务器端的压力。

如果将反爬虫平台比作一个反导弹系统,那么配置管理系统管理着反导弹,反爬虫系统相当于反导弹系统的发射系统,负责发射反导弹,管理系统负责安装反导弹,业务接入负责掌控要保护的范围,以为外围环境侦查工作。这些系统相互合作,构成了一个完整的反爬虫平台。

反爬虫平台功能

反爬虫平台服务于需要保护的接口,主要包括以下功能:

1、爬虫识别:这是任何一个反爬虫系统都需要的基本功能。我们将识别爬虫的方法称为反爬虫策略。在反爬虫平台中,维护有策略库,里面有多种反爬虫策略,可以针对性的识别多种爬虫。

2、代理转发:反爬虫平台作用于接口,通过反爬虫策略的接口,需要代理转发到接口的真实服务器。

3、数据保护:对代理返回的数据进行混淆加密,返回给用户的也是经过混淆的数据,爬虫不能直接接触接口数据。

4、快速更新反爬虫策略:这是针对发爬虫的特征定制的功能,反爬虫的策略可能随时被攻破,需要用有效策略及时替换无效策略。这就需要支持反爬虫策略的快速上下线功能。反爬虫平台相当于架起了一个可部分拆卸安装的防护墙,哪一部分的防护功能被攻破,就替换当前防护墙部分。当然也提供了方便拆卸安装的工具,可以快速更新。有效组织“快攻”,实现快速反击,减少策略的失效时间。

5、beta 环境自定义功能,反爬虫平台是数据中间层反爬虫,需要代理的功能。但是业务线的 beta 环境可能有多套,代理目标必须支持自定义,才能满足业务线的代理需求。

6、基本信息在线维护功能。业务线接口的基本信息,有管理系统负责维护。

7、数据清洗,用反爬虫日志清洗业务日志,区分正常用户,善意爬虫与恶意爬虫的数量。

反爬虫平台的特点

反爬虫平台有以下几个特点:

1、业务线低成本接入: 判断一个工具好不好用的标志之一是,易不易用。一个工具再好,但是使用成本太高,也不会有很好的推广性。我们牢记这一简单易用原则,将反爬虫的接入成本降至最低,业务方可以快速方便的接入。

2、反爬虫方案自定义:接入反爬虫,默认会有公有的反爬虫方案,但是也不妨碍用户定义自己的私有反爬方案,也就是说业务线可以定义自己的反爬虫方案。

3、快速上下线策略:这个“快攻”的其中一个体现,提供了支撑策略的支架与快速上下线策略的方法,一旦策略失效,快速替换策略。

4、测试环境自定义:为了不给用户的测试环境增加任何的测试负担,完全支持界面化的测试环境自定义,简单快捷。

写在最后

反爬虫平台目前已经支持 pc 页面以及 h5 页面的接入,未来还会支持客户端页面的以及微信小程序反爬虫。反爬虫平台不仅能反爬虫,也能根据反爬虫的产出对用户数据进行清洗,过滤掉爬虫,返回给业务线一个可靠、真实的用户数据,让真实数据来说话。

兵家有言,先谋而后动,不打无准备之仗。要打好反爬虫的战争,需要建设一个好的反爬虫平台,想要反导弹发射的远准狠,就需要一个好的发射器。Anticraw 是一个结构完整,功能完备的反爬虫平台。支持多业务线接入,业务线再也无需浪费人力写反爬虫策略。对新的爬虫或升级的爬虫能够快速反应,支持策略的快速更新,减少反爬虫策略的失效时间。且多策略同时拦截,有效避免了“一点攻的”弊端 。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180727G08QTS00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券