很久之前参加了 QCon2021,收货满满。除了参会大厂的周边奖品,更重要的是了解到了行业内最新的动态与发展方向。
作为用爬虫入门的 Python 开发者,怎么能错过《58 集团反爬系统建设之路》。接下来和我一起看看段枝宏老师的分享。
嘉宾介绍
段枝宏:58 同城-业务安全架构师
58 同城 TEG 安全平台部研发负责人,曾先后主导建设了安全画像、反爬系统、账号安全风控引擎及蓝军攻防演练平台,擅长从黑产对抗视角去设计各类安全系统,注重以数据指标衡量相关系统的优劣,以线上实际效果来驱动整个系统的迭代和优化,其中安全画像、反爬系统先后被评选为公司级突出贡献项目。
以下是段老师的个人微信,如果有小伙伴对该领域感兴趣,也可以和段老师交流学习。
分享提纲
1. 背景及能力演进
爬虫与反爬一直以来都是 Python 学习者最为关系的话题,同时也是大厂一直很关注的事情。如果平衡好反爬与用户体验也是行业内一直关注的。
58 同城的整个能力演进路程大致如下:
1. 初级对抗阶段
- 爬取频率
- 黑名单
- 处置内能力
2. 中级对抗阶段
- 被动对抗到主动对抗转变
- 资源层面的消耗
- 字体加密
3. 当前对抗阶段
- 终端能力的对抗
- AI 能力建设
- 线下打击
- 红蓝对抗
以上的就是 58 同城在每个阶段的一下方案与措施。这里面,我相信中级的爬虫玩家对于字体加密一定不陌生,字体加密又分文了静态加密和动态加密,响应的资源消耗也是不一样的。段老师在分享中也提到了,如果大量使用动态加密,必然会影响到终端用户的使用体验,包括界面渲染和字体的变形等等。
2. 初级对抗阶段
针对初级阶段遇到的挑战:
- 策略的灵活配置
- 海量特征计算问题
- 高并发/高可用
等问题,58 同城研发了一套“策略引擎”从而实现了:
- 支持特征/规则的灵活配置
- 支持插件的工具研发能力
- 基于跨场景的策略复制能力
- 多种策略状态管理能力
3. 中级对抗阶段
在中级对抗阶段,面对的问题有:
- 数据量大
- 实时性要求高
- 计算纬度多
- 计算粒度多
- 判断条件复制
等问题,使用研发的"特征计算平台"来解决这些问题。并采用了从被动对抗到主动对抗的转变。
被动对抗: 业务线报告问题 ---> 反爬取被动跟进排查
主动对抗: 线上爬虫可感知,对抗可视化-->主动开展数据分析,策略对抗。
同时,通过分析“用户”画像得到对应的“安全画像”。
通过对画像进行分析管理,从而使反爬更具有可靠性:
- 建立标签之字典
- 时效管理
- 标签清洗
- 标签查询
- 标签分值体系
在字体反爬应用中,分析了该手段的优势与劣势:
- 优势
爬取成本高
不易破解
不需要复杂的风控能力
- 劣势
接入成本高
影响页面加载性能
噪点多影响正常用户体验(字体反爬实质就是在字体渲染时加入噪点)
4. 当前对抗阶段
在这个阶段面度的主要挑战有:
- 提升环境监测能力
- 如何评估反爬能力
- 模型迭代效率问题
在解决如上问题时,“58”采用了例如:动态令牌,蓝军对抗等手段。
针对蓝军能力:
- 组织白帽众测
通过外部白帽子能力,对指定场景进行定向众测,从而发现潜在风险
- 黑产情报监控
对 QQ、微信、黑产论坛等进行监控、分析、及时捕获黑产相关信息
- 黑产工具分析
对自动化黑产工具、黑产平台进行分析、溯源、定位黑产攻击路径
- 攻击演练
针对反爬各种场景进行例行模拟攻击演练从而暴露相关风险
为了更好的进行攻防演练,58 还搭建了专门的演练平台,并在演练结束后进行复盘分析。
除了这些常规手段,还引入了 AI 模型:
- 有监督分类模型
样本搜集
特征提取
模型训练
线上效果监控
持续迭代
- 半监督分类模型
样本库建设
特征库建设
模型训练平台
自动化监控
- 无监督模型
行为同步性图
时间序列图
特征关联图
场景融合图
5. 总结及思考
爬虫是无法彻底拦截掉的以及如何才能建设更有效的反爬机制是整个环境长久讨论的话题,如果你有什么好的案例欢迎大家在评论区留言讨论。
我的认知
爬虫本身没有太大问题,我一直认为“可见即可爬”,只要不触犯相关公司的利益和法律法规就好。毕竟在数据分析和机器学习领域数据是必不可少的。而大多数人都不是数据的制造者都是数据的“搬运工”。
---
我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!