大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!

今天小编推荐一款反爬虫组件叫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的使用方法相关推荐

  1. java+如何解决反爬虫_反爬虫,到底是怎么回事儿?

    原标题:反爬虫,到底是怎么回事儿? 有位被爬虫摧残的读者留言问:「网站经常被外面的爬虫程序骚扰怎么办,有什么方法可以阻止爬虫吗? 」 这是个好问题,自从 Python 火了起来,编写爬虫程序的门口越来 ...

  2. Python爬虫和反爬虫的斗争

    我们常接触的网络爬虫是百度.搜搜.谷歌(Google)等公司的搜索引擎,这 些搜索引擎通过互联网上的入口获取网页,实时存储并更新索引.搜索引擎的基础 就是网络爬虫,这些网络爬虫通过自动化的方式进行网页 ...

  3. 爬虫与反爬虫技术分析

    科普: 什么是爬虫: 百度百科:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还 ...

  4. python高级—— 从趟过的坑中聊聊爬虫、反爬、反反爬,附送一套高级爬虫试题

    前言: 时隔数月,我终于又更新博客了,然而,在这期间的粉丝数也就跟着我停更博客而涨停了,唉 是的,我改了博客名,不知道为什么要改,就感觉现在这个名字看起来要洋气一点. 那么最近到底咋不更新博客了呢?说 ...

  5. python高级—— 从趟过的坑中聊聊爬虫、反爬、反反爬,附送一套高级爬虫试题...

    前言: 时隔数月,我终于又更新博客了,然而,在这期间的粉丝数也就跟着我停更博客而涨停了,唉 是的,我改了博客名,不知道为什么要改,就感觉现在这个名字看起来要洋气一点. 那么最近到底咋不更新博客了呢?说 ...

  6. python爬图片_网络爬虫经验:反爬和反反爬

    我想很多人入门python是图片爬虫,就是HTTP请求,保存一下图片,用python实现非常快.网上很多爬虫的教程就讲到这里,实际上很单一,看了跟没看没什么区别,都是找一下网页的规律,然后Beauti ...

  7. 大佬带你详解Python反爬虫措施以及爬虫编写注意事项

    Python爬虫开发:反爬虫措施以及爬虫编写注意事项 反爬虫的几重措施 1.IP限制 如果是个人编写的爬虫,IP可能是固定的,那么发现某个IP请求过于频繁并且短时间内访问大量的页面,有爬虫的嫌疑,作为 ...

  8. python爬虫常见反爬措施_爬虫常见的反爬措施有哪些

    爬虫常见的反爬措施有三种: 1.header头部信息 解决方法: 加User-Agent值: 如果不加header头,部分网站服务器判断不到用户的访问来源,所以会返回一个404错误来告知你是一个爬虫, ...

  9. python爬虫反爬-python爬虫--爬虫与反爬

    爬虫与反爬 爬虫:自动获取网站数据的程序,关键是批量的获取. 反爬虫:使用技术手段防止爬虫程序的方法 误伤:反爬技术将普通用户识别为爬虫,从而限制其访问,如果误伤过高,反爬效果再好也不能使用(例如封i ...

最新文章

  1. Win7 64位的SSDTHOOK(1)---SSDT表的寻找
  2. ajax、offset
  3. 事件绑定及解除事件绑定
  4. boost::geometry::dissolver用法的测试程序
  5. python 打印文件名_在Python中打印文件名,关闭状态和文件模式
  6. linux 配置 java tomcat,Linux配置Tomcat和JDK
  7. 台积电预计5nm芯片四季度出货量将超过15万片晶圆,9成供应苹果
  8. vs2017项目配置
  9. nginx与IIS服务器搭建集群实现负载均衡(二)
  10. Manjaro oh-my-zsh安装配置
  11. Helm 3 完整教程(二):Helm 3 安装教程
  12. JSON与JAVA数据的转换。JSONObject.fromObject()和JSONObject.toBean()
  13. csol永恒python属性_狗神弑神参上!CSOL缔造者新添Lua功能脚本
  14. LOJ 6131 Fiend - 行列式 - 可并堆 - 贪心
  15. C++学习(一五九)Qt的场景图Scene Graph
  16. 我的物联网大学【第二章】:Luat的出世
  17. 行业研究分析-全球与中国Type-C数据线市场现状及未来发展趋势
  18. 无法勾选远程连接到计算机,客户端无法连接到远程计算机错误的解决方法
  19. NeurIPS 2022 | Stable Diffusion采样速度翻倍!清华提出扩散模型高效求解器
  20. “复制”马斯克(三):我们要为他的“反智事业”买单吗?

热门文章

  1. R语言广义线性模型函数GLM、glm函数构建泊松回归模型(Poisson regression)、输出提供偏差(deviances)、回归参数和标准误差、以及系数的显著性p值
  2. R语言使用magick包的image_rotate函数、image_flip函数、image_flop函数对图像进行缩放旋转、镜像、翻转(Rotate or mirror the image)
  3. R语言data.table进行滚动数据连接,滚动联接通常用于分析涉及时间的数据实战(动画说明滚动数据连接的形式):rolling joins data.table in R
  4. RuntimeWarning:Glyph 21435 missing from current font.
  5. python构建t检验(Student’s t-test)
  6. elastic stack中的Beats是什么?
  7. 特征工程之MinMaxScaler、StandardScaler、Normalizer、Binarizer
  8. Linux grep 命令
  9. 联想计算机无线网络设置密码,联想路由器怎么设置密码
  10. 华南主板bios怎么恢复出厂设置_主板电池放电清BIOS恢复出厂设置怎么操作?配图文...