如何应对爬虫,反爬虫混淆方案浅析

前言

最近在梳理之前工作中遇到的场景,在互联网技术日益竞争激烈的情况下,公司的业务数据非常重要,爬虫与反爬虫的对抗,也显得异常重要。比如京东、淘宝等页面上的商品销量、价格,旅游网站上门票的价格、销量。

APP常规请求流程

一次常规的APP请求
上图是一次常规的APP请求,一般来讲先到公司的Nginx服务器,再到后端的网关层,一般网关层返回统一的展示数据,然后再APP上展示。这个时候,如果有恶意的软件可以模拟所有的请求,自动的访问所有的展示层页面,那么等于所有的数据都会被这个恶意软件拿到,这是非常可怕的,如果到了竞争对手公司,他们可以利用这些数据进行恶意竞争。

爬虫的识别

这里笔者不准备展开讲,因为爬虫识别技术非常多,爬虫与反爬虫的对抗一直都在创新,大有道高一尺,魔高一丈的态势。
一般来讲,爬虫在Nginx层都会识别,便于做一些策略,个别的可能需要业务系统识别,这种的话更大部分其实不属于爬虫请求了,是特殊的业务风险请求了。
这里简述爬虫的识别方案有哪些:
1. 暴力些的,通过以往的数据收集、行为分析,识别的一些ip、uuid、url等资源设为静态的,只要是他们就识别为爬虫。
2. 根据访问频率异常、用户行为异常、参数异常等等动态策略分析出异常请求,识别为爬虫。
3. 更高端的,需要前后配合的比如人机识别、签名验证、增加暗水印等等。

爬虫的对抗

了解了爬虫的识别,这里我们简单介绍下对抗的方案:
其实主要分两个方面:
一、直接拦截
这种方式是说,我们在Nginx层识别爬虫后,直接拦截掉,比如丢弃掉请求,不让他们返回业务系统。
二、标记爬虫
这种方式,便于我们做更多动作。一般来讲,网络爬虫是http请求,那么标记爬虫请求只需要在header 或者 其他地方增加相关的爬虫标记,供业务系统识别处理就可以了。
常见的比如:
强制登录,强制该请求必须登录才能访问。
图灵验证,增加相关的验证,比如验证码、滑块验证等等
数据混淆,发现了是爬虫请求,返回假数据,起到对数据保护的作用。

爬虫混淆

这里我们介绍下数据混淆的方案。
爬虫数据混淆
处理分析:
如果你是单一的业务,那么对返回值,做一定的混淆处理就可以了。比如你返回的价格数据时1元,你返回 1.2元,这样就可以。但是这就有一个问题,如果别人破解了你的混淆系数,那岂不是你的混淆都白费了吗?
这种情况下,要设计复杂的混淆公式,混淆因子,根据不用的商品、不同的地区,不一致,这样情况下,就需要一个配置中心,专门配置这些参数。这就是类似于一个简单的配置管理系统,让后业务系统里定期从redis这种缓存里进行拉取配置,这里不做多余的介绍了。
刚刚说了混淆策略的处理,这里我们讲如何识别每个接口的结构,举例A页面接口返回值 和 B页面接口返回值不同,这种情况,就需要针对不同的接口做一些配置,跟混淆因子一样,定期拉取,识别出需要混淆的接口及相关的数据进行混淆即可。
好了,现在混淆因子 和 混淆接口的事情都搞定了,就差真正运作的代码在哪里了,很明显不能影响业务,那么这个时候两个方案:
1. 在启动一个反扒微服务,统一请求,业务会疯掉的。。。多了一层无意义的rpc,而且大部分请求都是正常请求,多少无意义的调用。
2. 将混淆的代码,直接放在业务侧,引入SDK的方式,SDK里封装所有的逻辑,比如拦截业务请求,修改返回值,获取反扒相关的配置等等。
在这里插入图片描述

爬虫的误伤

再高端的识别策略,也难免有误伤的情况,如果误伤率较高,我们就要考虑爬虫的识别策略是否有问题了。但是这里,我们主要想说误伤之后,要有相应的处理措施,比如对此用户进行加白处理等等

总结

啰嗦了半天,跟大家介绍了爬虫以及应对爬虫的策略,希望对大家有帮助,如果大家有疑问也可以一起探讨。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值