爬虫突破方式
首先了解爬虫的突破方式:
- 请求头
- cookie
- 访问的时间路径
- ip限制
参考 https://blog.csdn.net/jss19940414/article/details/85038263?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242
防爬
防爬虫的基本理念:增加爬虫成本
运维层级:
- 限制IP单位时间访问次数还有频率
- nginx优化:增加筛选策略,基于iptables和shell脚本;自带功能httpuseragent阻塞,限制可访问user agent
- 增加防爬脚本:nginx lua写脚本
- robots.txt防爬(效果不大)
业务层级:
- 增加用户访问限制,对不同的业务进行层级划分,如课程增加分段下发,完成一定比例后才能获取后续等
- 增加关键业务访问验证功能,如课程被访问时增加验证,“请进行简单验证,以确保您确实准备好进行接下来的课程学习”
- 增加用户层级划分,如普通用户,初级用户,中级用户,高级用户(或采用钢琴等级),设定不用的用户拥有不同的课程访问权限,变相增加爬取成本
程序层级:
- 访问来源限制。request请求中增加参数,在解析时进行来源回溯限制等。
- cookie限制。访问是否需要强制登录,非登录用户不可达。
- 添加证书。非证书客户端访问非法,仅拥有证书的客户端可访问。存在限制,历史版本如何处理,是否可以强制升级等。
- 关键性接口访问限制,如获取课程接口,模拟用户行为,制定访问策略,限制单位时间访问次数,例“您在1分钟内已经多节课程,建议您采用我们推荐的课程顺序进行学习。您也可进行评级自测,我们将给您提供更个性化的课程推荐”
- 前后端交互数据增加动态解析。前后端动态解析方案协商,及动态解析方案。前端常见解析方案为js处理
- 访问链接随机化。可视作动态解析的部分。
- 服务端下发数据增加混淆因素。增加混淆代码或文本,加大解析难度。
- 行为检测。增加用户行为模式判定,设定用户行为策略筛查。
- 构造假数据。猥琐办法,让爬虫获取到的数据无意义。
- 人工智能防采集。加入人工学习,采取智能防爬(专业性要求较高,实现成本高)
防爬虫的几种方法 参考(https://blog.csdn.net/h330531987/article/details/78362172)