0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

反爬虫组件kk-anti-reptile的工作流程与使用方法

Android编程精选 来源:oschina开源中国 作者:凯京技术团队 2022-07-14 11:24 次阅读

kk-anti-reptile 是适用于基于spring-boot开发的分布式系统的反爬虫组件

系统要求

  • 基于 spring-boot 开发 (spring-boot1.x, spring-boot2.x 均可)
  • 需要使用 redis

工作流程

kk-anti-reptile 使用基于 Servlet 规范的的 Filter 对请求进行过滤,在其内部通过 spring-boot 的扩展点机制,实例化一个 Filter,并注入到 Spring 容器 FilterRegistrationBean 中,通过 Spring 注入到 Servlet 容器中,从而实现对请求的过滤

kk-anti-reptile 的过滤 Filter 内部,又通过责任链模式,将各种不同的过滤规则织入,并提供抽象接口,可由调用方进行规则扩展

Filter 调用则链进行请求过滤,如过滤不通过,则拦截请求,返回状态码 509,并输出验证码输入页面,输出验证码正确后,调用过滤规则链对规则进行重置

目前规则链中有如下两个规则

ip-rule

ip-rule 通过时间窗口统计当前时间窗口内请求数,小于规定的最大请求数则可通过,否则不通过。时间窗口、最大请求数、ip 白名单等均可配置

ua-rule

ua-rule 通过判断请求携带的 User-Agent,得到操作系统、设备信息、浏览器信息等,可配置各种维度对请求进行过滤

命中规则后

命中爬虫和防盗刷规则后,会阻断请求,并生成接除阻断的验证码,验证码有多种组合方式,如果客户端可以正确输入验证码,则可以继续访问

edcad0ee-02a0-11ed-ba43-dac502259ad0.png

验证码有中文、英文字母 + 数字、简单算术三种形式,每种形式又有静态图片和 GIF 动图两种图片格式,即目前共有如下六种,所有类型的验证码会随机出现,目前技术手段识别难度极高,可有效阻止防止爬虫大规模爬取数据

接入使用

后端接入非常简单,只需要引用 kk-anti-reptile 的 maven 依赖,并配置启用 kk-anti-reptile 即可

加入 maven 依赖

<dependency>
<groupId>cn.keking.projectgroupId>
<artifactId>kk-anti-reptileartifactId>
<version>1.0.0-SNAPSHOTversion>
dependency>

配置启用 kk-anti-reptile

anti.reptile.manager.enabled=true

前端需要在统一发送请求的 ajax 处加入拦截,拦截到请求返回状态码 509 后弹出一个新页面,并把响应内容转出到页面中,然后向页面中传入后端接口 baseUrl 参数即可,以使用 axios 请求为例:

importaxiosfrom'axios';
import{baseUrl}from'./config';

axios.interceptors.response.use(
data=>{
returndata;
},
error=>{
if(error.response.status===509){
lethtml=error.response.data;
letverifyWindow=window.open("","_blank","height=400,width=560");
verifyWindow.document.write(html);
verifyWindow.document.getElementById("baseUrl").value=baseUrl;
}
}
);

exportdefaultaxios;

注意

1.apollo-client 需启用 bootstrap

使用 apollo 配置中心的用户,由于组件内部用到 @ConditionalOnProperty,要在 application.properties/bootstrap.properties 中加入如下样例配置,(apollo-client 需要 0.10.0 及以上版本)详见 apollo bootstrap 说明

https://github.com/apolloconfig/apollo/wiki/

apollo.bootstrap.enabled=true

2.需要有 Redisson 连接

如果项目中有用到 Redisson,kk-anti-reptile 会自动获取 RedissonClient 实例对象;如果没用到,需要在配置文件加入如下 Redisson 连接相关配置

spring.redisson.address=redis://192.168.1.204:6379
spring.redisson.password=xxx

配置一览表

在 spring-boot 中,所有配置在配置文件都会有自动提示和说明,如下图

ee18666a-02a0-11ed-ba43-dac502259ad0.png

所有配置都以 anti.reptile.manager 为前缀,如下为所有配置项及说明

ee362632-02a0-11ed-ba43-dac502259ad0.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • spring
    +关注

    关注

    0

    文章

    340

    浏览量

    14334
  • 分布式系统
    +关注

    关注

    0

    文章

    146

    浏览量

    19217
  • 爬虫
    +关注

    关注

    0

    文章

    82

    浏览量

    6866

原文标题:一个依赖搞定 Spring Boot 反爬虫,防止接口盗刷!

文章出处:【微信号:AndroidPush,微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    帮忙分析下这个设计的工作流程

    你好我是单片机学习的菜鸟能不能帮我分析一下一下设计的工作流程各个器件的工作原理
    发表于 12-07 11:06

    求讲解这个电路具体使用方法步骤和工作流程

    这个图特别简单,可是我这个初学者完全蒙圈了,只知道是4×4矩阵通过单片机控制数字电位器实现自动化功能,4×4矩阵连接的是单片机1.0–1.7接口,中断接口int0int1接的是四个并联数字电位器的inc和u/d口,具体工作流程不明白,求助讲解电路的具体使用方法步骤和应用软
    发表于 04-26 16:01

    AndroidWifi工作流程

    AndroidWifi工作流程
    发表于 11-02 10:52

    AndroidWifi工作流程

    AndroidWifi工作流程
    发表于 09-25 11:17

    AndroidWifi工作流程

    AndroidWifi工作流程
    发表于 11-08 09:07

    Crawler:关于爬虫的简介、安装、使用方法之详细攻略

    Crawler:关于爬虫的简介、安装、使用方法之详细攻略
    发表于 12-19 16:58

    Simulink是什么?Simulink的工作流程是怎样进行的?

    Simulink是什么?Simulink有哪些功能?如何去使用Simulink?Simulink的工作流程是怎样进行的?
    发表于 07-09 06:16

    AS068工作流程是怎样的?

    AS068工作流程是怎样的?
    发表于 12-07 08:02

    工作流环境下组件的开发

    本文基于对工作流环境下组件的开发为目的,采用工作流技术与组件技术相结合的方法,讨论构建工作流
    发表于 12-17 11:01 0次下载
    <b class='flag-5'>工作流</b>环境下<b class='flag-5'>组件</b>的开发

    测试工程师工作流程有哪些

    测试工程师的工作流程,与公司的整体工作流程,项目的测试要求等因素相关。本文主要讨论测试工程师的一般工作流程
    的头像 发表于 10-03 16:56 7704次阅读

    雷电的4K工作流程

    在4K的雷电工作流程
    的头像 发表于 05-31 11:20 2417次阅读

    网络爬虫的基本工作流程

    通用网络爬虫根据预先设定的一个或若干初始种子URL开始,以此获得初始网页上的URL列表,在爬行过程中不断从URL队列中获一个的URL,进而访问并下载该页面。页面下载后页面解析器去掉页面上的HTML
    的头像 发表于 03-21 17:05 2.9w次阅读

    工作流程图怎么用?有哪些绘制工作流程图的软件

    工作流程图是清晰地展示工作中各个环节的流程图图示,主要用于工作活动和效率的管理。工作流程图这种图示方法
    的头像 发表于 07-28 14:22 3546次阅读

    机器视觉系统的组成及工作流程

    机器视觉系统的组成及工作流程介绍。
    发表于 04-19 15:24 16次下载

    提高电气工作流程效率的方法

    在电气工作领域,有很多空间可以提高您的工作流程效率。在本文中,我们将了解如何做到这一点。 在电气工作领域,有无数种方法可以提高你的表现。你需要计划好你将如何进行这项任务——并考虑到任务
    的头像 发表于 07-27 16:04 2075次阅读