当前位置:网站首页>转转反爬攻防战
转转反爬攻防战
2022-08-02 09:39:00 【InfoQ】
一、背景
二、现状
- 规律性
- 高频次
- 正面进攻:这种模式的特点是大量的请求,粗糙的伪装,聚焦在一个接口上,靠数量与多样性取胜。
- 间谍行动:较少但更有规律的请求,它们会尽量伪装成真实用户,模仿用户的行为,进而获取关键接口更核心的信息。
- 数据安全性: 作为电商平台,最关键的商品信息,以及用户信息一旦被爬取,极有可能造成商品流失、用户信息泄露、甚至电信诈骗等一系列安全问题。
- 大数据异常: 数据统计如dau,pv,uv等都依赖于各接口每天的请求日志,这些日志一旦记录了非真实用户的爬虫数据,便会失去统计效力。
- 服务稳定性: 由于上面提到的第一种攻击模式,爬虫会进行大量的请求,有的甚至接近于洪泛攻击,这会极大地增加服务器的负荷,如果同时还有拉新等活动,则会造成流量暴增,进而导致系统瘫痪。
- 个性化失效: app会根据所有用户的搜索内容提供给一般用户搜索关键词,爬虫如果侵入搜索接口,并大量搜索恶意关键词,则会使推给正常用户的关键词变得不准确,从而影响用户体验。
三、前人研究
- 登录限制: 要求用户请求接口时必须登录,这种方式可以很大程度上增加爬虫成本,但较为霸道,在关键节点很容易影响到用户体验。
- cookie校验: 用户请求cookie里可以携带一些用于鉴别身份的数据,这些数据有自己的一套生成规则,支持合法性校验,对这些数据进行验证,可以鉴别出是否是真实用户。但是当爬虫破解了生成规则,或是利用真实用户的cookie进行请求时,这种方法就无法做到有效的防御了。
- 频次校验: 利用对每次请求的常见特征(由于ip的成本最高,所以一般选择ip)的频次统计,决定是否对该特征进行封禁。由于爬虫规律性,高频次的特点,这种方法可以有效地阻止大量的爬虫请求,但这也带来另一个问题,同一ip有时不止一个用户在用,可能误伤用户。而不选择ip,选择其他维度,伪造成本又太低。
- 验证码校验: 同一ip或用户进行多次请求达到一定阈值,则要求用户输入验证码,验证码有很多种,如文字、图形、滑动等。其中滑动图形验证码的效果最好,因为图像识别的成本较高,但需要前端配合,而且也会影响到用户体验。
- 数据加密: 前端对请求数据进行加密计算,并把加密值作为参数传给服务端,在服务器端同样有一段加密逻辑,生成一串编码,与请求参数进行匹配,匹配通过则会返回数据。这种方法依旧需要客户端参与,并且加密算法明文写在JS里,爬虫还是可以分析出来。
四、Cleaner爬虫清洁工
- 准确性:有能力抓出爬虫,又要避免误伤。
- 实时性:秒级别的响应,如果等爬虫都抓完数据,满载而归了,再去封禁就没有意义了。
- 正面进攻:合法性校验,频次控制。
- 间谍行动:用户行为分析。
4.1 系统模型

4.1.1 数据处理中心

4.1.2 封禁中心

- 用户唯一标识合法性: 由于用户的唯一标识具有一定的生成规则,转转也不例外,我们自然可以利用这些规则判断请求是否为真实用户。大量的非法请求都不需要其他判断,仅用生成规则即可屏蔽,这种策略主要是用来阻挡正面进攻。
- 频次: 同样地,这种策略主要是用来阻挡正面进攻。只不过它是用来弥补标识合法性策略的不足,当爬虫利用真实用户的标识进行大量请求时,我们可以利用它们高频次的特点,对特定接口设置阈值频次,当请求次数超过限制,则对指定用户特征进行封禁。
- El表达式: 上面两种策略可以极大地削弱正面进攻的影响,但是对于间谍行动则几乎无能为力,因为当一些狡诈的爬虫在多次受挫,摸清了反爬策略,频次阈值后。它们就会选择模仿真实用户的行为进行请求,放弃短时间获取大量信息的幻想,转而寻求虽然时间长但可以获取完整数据的途径。这时EL表达式就派上了用场,由于封禁中心可以得到用户的一个请求串,Cleaner可以分析在这串请求中用户的行为,看看它们和正常用户的请求有何偏差,这时的爬虫虽然没有了高频次的特点,但周期性,规律性的特点,是爬虫的原罪,它们永远无法避免。根据一些接口请求顺序的不同,频次比例的不同等特点可以推断出该用户是否非法。
- 封禁记录: 辅助策略,把命中封禁的用户维度落入数据库中,作为日后判定是否封禁的一项指标。
- 黑白名单: 指定特征跳过或强制封禁,支持手动添加,以防系统失效或紊乱。
- 接入其他封禁库:辅助策略,结合其他业务的封禁信息,完善判断结果。
4.1.3 封禁库
4.2 效果

五、总结
- 基本特性:实时性,准确性。
- 基本功能:合法性校验,频次控制,用户行为分析。
- 基本模块:大数据处理中心,封禁策略中心。
- 基本策略:合法性校验策略,频次策略,EL表达式策略,黑白名单策略。
- 两个动态:反爬策略的完善、插拔;计分标准的调整。
- 一种平衡:爬虫和反爬虫是一个漫长的博弈过程,二者最终会达到一种平衡状态,面对爬虫的不断反弹,我们能做的是持续地监控,迅速地压制。
边栏推荐
- Re23:读论文 How Does NLP Benefit Legal System: A Summary of Legal Artificial Intelligence
- 练习16-两道模拟题
- typeinfo类型支持库学习
- Implementation of mysql connection pool
- HCIA动态主机配置协议实验(dhcp)
- 【微信小程序】本地服务页面案例实现
- Supervised learning of Li Hang's "Statistical Learning Methods" Notes
- 李航《统计学习方法》笔记之感知机perceptron
- php组件漏洞
- State Management in Jetpack Compose
猜你喜欢
享年94岁,图灵奖得主、计算复杂性理论先驱Juris Hartmanis逝世
8月份的.NET Conf 活动 专注于 .NET MAUI
数据库mysql
AutoJs学习-AES加解密
干货|如何在海量文件系统中选择合适自己的文件系统
QT专题:自定义部件
Re22:读论文 HetSANN An Attention-based Graph Neural Network for Heterogeneous Structural Learning
【云原生】快出数量级的性能是怎样炼成的?就提升了亿点点
The god-level Alibaba "high concurrency" tutorial "basic + actual combat + source code + interview + architecture"
李航《统计学习方法》笔记之k近邻法
随机推荐
向量点积(Dot Product),向量叉积(Cross Product)
【Redis】Jedis
Chapter 15 Generics
稳定币:对冲基金做空 Tether 的结局会是什么?
State Management in Jetpack Compose
【SeaTunnel】从一个数据集成组件演化成企业级的服务
Naive Bayesian Method of Li Hang's "Statistical Learning Methods" Notes
Use the scrapy to climb to save data to mysql to prevent repetition
迭代器失效问题
腾讯T8架构师,教你学中小研发团队架构实践PDF,高级架构师捷径
QT专题:组合会话框和文本编辑器
Have you ever learned about these architecture designs and architecture knowledge systems?(Architecture book recommendation)
CFdiv2-The Number of Imposters-(两种点集图上染色问题总结)
Tencent T8 architect, teach you to learn small and medium R&D team architecture practice PDF, senior architect shortcut
2022牛客暑期多校训练营4(ADHKLMN)
十、 网络管理
食品安全 | 鱼肝油不是鱼油,家有宝宝的注意了
第十七章 Excel操作
瑞吉外卖项目剩余功能补充
Daily practice of dynamic programming (2)