当前位置:网站首页>转转反爬攻防战
转转反爬攻防战
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表达式策略,黑白名单策略。
- 两个动态:反爬策略的完善、插拔;计分标准的调整。
- 一种平衡:爬虫和反爬虫是一个漫长的博弈过程,二者最终会达到一种平衡状态,面对爬虫的不断反弹,我们能做的是持续地监控,迅速地压制。
边栏推荐
猜你喜欢

Two-dimensional array piecemeal knowledge sorting

AutoJs学习-存款计算器

RPA助你玩转抖音,开启电商运营新引擎

Implementation of mysql connection pool

Openwrt_树莓派B+_Wifi中继

软件测试X模型

SAP 云平台上一种 Low Code Development(低代码开发)解决方案

Re23:读论文 How Does NLP Benefit Legal System: A Summary of Legal Artificial Intelligence

ConvNeXt论文及实现

曲折的tensorflow安装过程(Tensorflow 安装问题的解决)
随机推荐
The 17th day of the special assault version of the sword offer
cococreator dynamically set sprite
破解wifi密码 暴力破解 保姆式教学
QT专题:组合会话框和文本编辑器
第十六章 协程
2022.7.25-7.31 AI行业周刊(第108期):值钱比赚钱更重要
Use the scrapy to climb to save data to mysql to prevent repetition
Supervised learning of Li Hang's "Statistical Learning Methods" Notes
LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之一:解题思路
1对1视频源码——快速实现短视频功能提升竞争力
CFdiv2-The Number of Imposters-(两种点集图上染色问题总结)
牛客网项目2.7开发注册功能 报错This application has no explicit mapping for /error......
The use of thread pool and analysis of ThreadPoolExecutor source code
第十七章 Excel操作
新“内卷”席卷科技圈,Google CEO 要求 174000 员工提高工作效率!
练习16-两道模拟题
HikariCP数据库连接池,太快了!
QT专题:自定义部件
Bigder:41/100生产bug有哪些分类
It's time for bank data people who are driven crazy by reporting requirements to give up using Excel for reporting