java 反爬虫_springboot反爬虫组件kk-anti-reptile的使用方法
大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!
今天小编推荐一款反爬虫组件叫kk-anti-reptile,一款可快速接入的反爬虫、接口防盗刷spring boot stater组件。
1. 系统要求
基于spring-boot开发(spring-boot1.x, spring-boot2.x均可)
需要使用redis
2. 工作流程
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,得到操作系统、设备信息、浏览器信息等,可配置各种维度对请求进行过滤
3. 接入使用
后端接入非常简单,只需要引用kk-anti-reptile的maven依赖,并配置启用kk-anti-reptile即可。
加入maven依赖
cn.keking.project
kk-anti-reptile
1.0.0-SNAPSHOT
4.配置启用 kk-anti-reptile
anti.reptile.manager.enabled=true
前端需要在统一发送请求的ajax处加入拦截,拦截到请求返回状态码509后弹出一个新页面,并把响应内容转出到页面中,然后向页面中传入后端接口baseUrl参数即可,以使用axios请求为例:
import axios from 'axios';
import {baseUrl} from './config';
axios.interceptors.response.use(
data => {
return data;
},
error => {
if (error.response.status === 509) {
let html = error.response.data;
let verifyWindow = window.open("","_blank","height=400,width=560");
verifyWindow.document.write(html);
verifyWindow.document.getElementById("baseUrl").value = baseUrl;
}
}
);
export default axios;
5. 注意
apollo-client需启用bootstrap
使用apollo配置中心的用户,由于组件内部用到@ConditionalOnProperty,要在application.properties/bootstrap.properties中加入如下样例配置,(apollo-client需要0.10.0及以上版本)
apollo.bootstrap.enabled = true
需要有Redisson连接
如果项目中有用到Redisson,kk-anti-reptile会自动获取RedissonClient实例对象; 如果没用到,需要在配置文件加入如下Redisson连接相关配置
spring.redisson.address=redis://192.168.1.204:6379
spring.redisson.password=xxx
6.命中规则后
命中爬虫和防盗刷规则后,会阻断请求,并生成接除阻断的验证码,验证码有多种组合方式,如果客户端可以正确输入验证码,则可以继续访问
7.结尾
以上就是springboot反爬虫组件kk-anti-reptile的使用方法的详细内容,更多关于springboot反爬虫组件kk-anti-reptile的资料请关注脚本之家其它相关文章!
java 反爬虫_springboot反爬虫组件kk-anti-reptile的使用方法相关推荐
- java+如何解决反爬虫_反爬虫,到底是怎么回事儿?
原标题:反爬虫,到底是怎么回事儿? 有位被爬虫摧残的读者留言问:「网站经常被外面的爬虫程序骚扰怎么办,有什么方法可以阻止爬虫吗? 」 这是个好问题,自从 Python 火了起来,编写爬虫程序的门口越来 ...
- Python爬虫和反爬虫的斗争
我们常接触的网络爬虫是百度.搜搜.谷歌(Google)等公司的搜索引擎,这 些搜索引擎通过互联网上的入口获取网页,实时存储并更新索引.搜索引擎的基础 就是网络爬虫,这些网络爬虫通过自动化的方式进行网页 ...
- 爬虫与反爬虫技术分析
科普: 什么是爬虫: 百度百科:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还 ...
- python高级—— 从趟过的坑中聊聊爬虫、反爬、反反爬,附送一套高级爬虫试题
前言: 时隔数月,我终于又更新博客了,然而,在这期间的粉丝数也就跟着我停更博客而涨停了,唉 是的,我改了博客名,不知道为什么要改,就感觉现在这个名字看起来要洋气一点. 那么最近到底咋不更新博客了呢?说 ...
- python高级—— 从趟过的坑中聊聊爬虫、反爬、反反爬,附送一套高级爬虫试题...
前言: 时隔数月,我终于又更新博客了,然而,在这期间的粉丝数也就跟着我停更博客而涨停了,唉 是的,我改了博客名,不知道为什么要改,就感觉现在这个名字看起来要洋气一点. 那么最近到底咋不更新博客了呢?说 ...
- python爬图片_网络爬虫经验:反爬和反反爬
我想很多人入门python是图片爬虫,就是HTTP请求,保存一下图片,用python实现非常快.网上很多爬虫的教程就讲到这里,实际上很单一,看了跟没看没什么区别,都是找一下网页的规律,然后Beauti ...
- 大佬带你详解Python反爬虫措施以及爬虫编写注意事项
Python爬虫开发:反爬虫措施以及爬虫编写注意事项 反爬虫的几重措施 1.IP限制 如果是个人编写的爬虫,IP可能是固定的,那么发现某个IP请求过于频繁并且短时间内访问大量的页面,有爬虫的嫌疑,作为 ...
- python爬虫常见反爬措施_爬虫常见的反爬措施有哪些
爬虫常见的反爬措施有三种: 1.header头部信息 解决方法: 加User-Agent值: 如果不加header头,部分网站服务器判断不到用户的访问来源,所以会返回一个404错误来告知你是一个爬虫, ...
- python爬虫反爬-python爬虫--爬虫与反爬
爬虫与反爬 爬虫:自动获取网站数据的程序,关键是批量的获取. 反爬虫:使用技术手段防止爬虫程序的方法 误伤:反爬技术将普通用户识别为爬虫,从而限制其访问,如果误伤过高,反爬效果再好也不能使用(例如封i ...
最新文章
- Win7 64位的SSDTHOOK(1)---SSDT表的寻找
- ajax、offset
- 事件绑定及解除事件绑定
- boost::geometry::dissolver用法的测试程序
- python 打印文件名_在Python中打印文件名,关闭状态和文件模式
- linux 配置 java tomcat,Linux配置Tomcat和JDK
- 台积电预计5nm芯片四季度出货量将超过15万片晶圆,9成供应苹果
- vs2017项目配置
- nginx与IIS服务器搭建集群实现负载均衡(二)
- Manjaro oh-my-zsh安装配置
- Helm 3 完整教程(二):Helm 3 安装教程
- JSON与JAVA数据的转换。JSONObject.fromObject()和JSONObject.toBean()
- csol永恒python属性_狗神弑神参上!CSOL缔造者新添Lua功能脚本
- LOJ 6131 Fiend - 行列式 - 可并堆 - 贪心
- C++学习(一五九)Qt的场景图Scene Graph
- 我的物联网大学【第二章】:Luat的出世
- 行业研究分析-全球与中国Type-C数据线市场现状及未来发展趋势
- 无法勾选远程连接到计算机,客户端无法连接到远程计算机错误的解决方法
- NeurIPS 2022 | Stable Diffusion采样速度翻倍!清华提出扩散模型高效求解器
- “复制”马斯克(三):我们要为他的“反智事业”买单吗?
热门文章
- R语言广义线性模型函数GLM、glm函数构建泊松回归模型(Poisson regression)、输出提供偏差(deviances)、回归参数和标准误差、以及系数的显著性p值
- R语言使用magick包的image_rotate函数、image_flip函数、image_flop函数对图像进行缩放旋转、镜像、翻转(Rotate or mirror the image)
- R语言data.table进行滚动数据连接,滚动联接通常用于分析涉及时间的数据实战(动画说明滚动数据连接的形式):rolling joins data.table in R
- RuntimeWarning:Glyph 21435 missing from current font.
- python构建t检验(Student’s t-test)
- elastic stack中的Beats是什么?
- 特征工程之MinMaxScaler、StandardScaler、Normalizer、Binarizer
- Linux grep 命令
- 联想计算机无线网络设置密码,联想路由器怎么设置密码
- 华南主板bios怎么恢复出厂设置_主板电池放电清BIOS恢复出厂设置怎么操作?配图文...