1.0.0-RELEASE版本发布内容
- 优化:验证及刷新请求不使用Filter处理,改为使用原生servlet,不影响正常请求效率
- 优化:底层拦截原理改进,由filter改成spring体系的Interceptor,方便后续Spring mvc对接支持
- 新增:新增全局拦截模式可选,默认为非全局拦截
- 新增:新增拦截模式配置不当时智能提示
- 新增:新增 @AntiReptile 注解标注接口拦截支持,注解和配置文件方式可同时作用
- 新增:新增接口正则表达式匹配拦截支持
kk-anti-reptile反爬虫组件简介
概述
kk-anti-reptile 是适用于基于 spring-boot 开发的分布式系统
的开源反爬虫接口防刷spring boot start组件。
系统要求
- 基于 spring-boot 开发(spring-boot1.x, spring-boot2.x 均可)
- 需要使用 redis
工作流程
kk-anti-reptile 使用 SpringMVC拦截器 对请求进行过滤,通过 spring-boot 的扩展点机制,实例化一个Spring HandlerInterceptor Bean,通过 Spring 注入到 Servlet 容器中,从而实现对请求的过滤
在 kk-anti-reptile 的过滤 Interceptor 内部,又通过责任链模式,将各种不同的过滤规则织入,并提供抽象接口,可由调用方进行规则扩展
Interceptor 调用则链进行请求过滤,如过滤不通过,则拦截请求,返回状态码509
,并输出验证码输入页面,输出验证码正确后,调用过滤规则链对规则进行重置
目前规则链中有如下两个规则
ip-rule
ip-rule 通过时间窗口统计当前时间窗口内请求数,小于规定的最大请求数则可通过,否则不通过。时间窗口、最大请求数、ip 白名单等均可配置
ua-rule
ua-rule 通过判断请求携带的 User-Agent,得到操作系统、设备信息、浏览器信息等,可配置各种维度对请求进行过滤