网站在网络文化建设方面的成果,深圳宝安中心区,带数据库网站设计,厦门电子商务网站建本节目标本篇文章主要是介绍以下springboot整合开源项目#xff0c;实现反爬虫接口防刷的demo#xff0c;额外的介绍一下axios的基本用法#xff1b;所以本篇文章阅读起来相对轻松。OK#xff0c;下面开始整合.引入项目依赖cn.keking.project kk-anti-reptile …本节目标本篇文章主要是介绍以下springboot整合开源项目实现反爬虫接口防刷的demo额外的介绍一下axios的基本用法所以本篇文章阅读起来相对轻松。OK下面开始整合.引入项目依赖 cn.keking.project kk-anti-reptile 1.0.0-RELEASEorg.redisson redisson 3.13.5依赖这里遇到了坑按照它里面的文档说明如果项目不用redisson是不需要引入redison的依赖的只需要配置下redisson的连接就可以的但是启动会报redis的连接错误但是貌似也能访问。不过有错误就得解决所以我又引入了redisson 的依赖并且配置了本地的redisson地址这才没报错。配置文件spring: thymeleaf: mode: HTML prefix: classpath:/templates/ encoding: UTF-8 redisson: address: redis://127.0.0.1:6379anti: reptile: manager: enabled: true# 启用反爬插件 ip-rule: expiration-time: 60000 #时间窗口单位ms request-max-size: 3 #时间窗口内最大请求数enabled: true # 启用IP rule规则所有配置都以anti.reptile.manager为前缀具体配置如下数据来源此项目作者kekingcn这里需要说明的是里面有些配置项不能自由配置例如 ip-rule.lock-expire 在配置文件中是找不到这个配置项的刚开始我还以为看漏了确实配置不了而且它的默认值是10天不过我大概看了下代码中给的是1天不知道是不是写错了。反爬虫组件使用使用还是比较简单的只需要在需要反爬的接口上加一个注解就行了如下Controllerpublic class TestController { AntiReptile GetMapping(/test/anti) ResponseBody public String test() { return hello world!!!; }}测试在配置的时间窗口内连续访问达到访问的最大值命中规则就会出现下面的验证规则。这个验证页面我也发现了个问题就是输入验证信息后直接按enter会跳到报错页面可能它这个enter的监听事件没有做。验证页面axios使用项目中我们是不可能直接这么访问接口的一般都是从页面点击某个元素然后发起请求那么就需要对这种命中规则后统一进行拦截让其输验证码。我这里就cdn 引入了这里的测试我就不贴出来了需要的可以私信。配置如下//你的baseurlaxios.defaults.baseUrl http://localhost:8080;// 添加响应拦截器axios.interceptors.response.use(function (response) { // to do something console.log(拦截 response) return response;}, function (error) { console.log(进来了。。。。。。。); // to do something if (error.response.status 509) {// 命中规则会返回509状态码 var html error.response.data; //console.log(509错误 html) var verifyWindow window.open(,_blank,height400,width560); verifyWindow.document.write(html); verifyWindow.document.getElementById(baseUrl).value baseUrl; }});如果你是前端大神请跳过此处。作为一名后端猿人对这个axios的基本用法也应了解一些。下面是常用的方法帮你罗列出来了。// 发送 POST 请求axios({ method: post, url: /user/12345, data: { firstName: Fred, lastName: Flintstone }}); //无后续//发送POST, 后续处理axios.post(user,{firstName: Fred}).then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });// 为给定 ID 的 user 创建请求axios.get(/user?ID12345) .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });// 上面的请求也可以这样做axios.get(/user, { params: { ID: 12345 } }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });//并发请求function getUserAccount() { return axios.get(/user/12345);}function getUserPermissions() { return axios.get(/user/12345/permissions);}axios.all([getUserAccount(), getUserPermissions()]) .then(axios.spread(function (acct, perms) { // 两个请求现在都执行完成 }));更多用法详见http://www.axios-js.com/zh-cn/docs/#axios-API总结目前感觉这个开源项目还需要再沉淀一下需要更多的人测试优化今天只是简单的使用了其中一两个配置其他的配置还没有测试大家感兴趣的可以自己去试下。喜欢小编的朋友可以关注下小编评论里留下你的见解。最后点赞转发私信小编【anti】获取源码地址。