本节目标

本篇文章主要是介绍以下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","height=400,width=560");        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?ID=12345')  .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】,获取源码地址。

window访问不到linux的activemq_springboot整合开源项目测试拦截接口访问的频率相关推荐

  1. 腾讯Angel升级:加入图算法,支持十亿节点、千亿边规模!中国首个毕业于Linux AI基金会的开源项目...

    出品 | AI科技大本营(ID:rgznai100) [导语]Angel 是腾讯的首个AI开源项目,于 2016 年底推出.2017年开源.近日,快速发展的 Angel 完成了从  2.0 版本到 3 ...

  2. linux下tomcat的访问权限,关于Linux权限引起的Tomcat项目404问题

    今天遇到了一个很奇怪的问题,搞了半天原来是Linux权限造成的 介绍一下问题,一个订单详情页面请求,如下图,应该正常显示页面 今天遇到的问题是,依然是这么一个url,访问时候却成了404页面了. 乖乖 ...

  3. linux系统能够ping通却无法访问,win7与linux虚拟机可互相ping通,却无法访问linux下的tomcat服务...

    原因:linux防火墙屏蔽了访问 解决方法:关闭防火墙 方法一: 以root身份执行setup命令; 使用上下键选择firewall configuration 会看到Firewall:[*]Enab ...

  4. 利用笔记本电脑给只能访问内网linux服务器共享网络,使其也能访问外网

    第一步: 打开你的VPN的LAN功能(局域网),允许局域网电脑连接你的网络.(一般vpn都自带开启局域网的功能,所以请自备vpn) 第二步:依次在服务器的命令行中输入 export http_prox ...

  5. linux开源项目github,GitHub 上的优质 Linux 开源项目,真滴牛逼!

    作为一名互联网人,提起 Linux 大家都不陌生,尤其是日常跟 Linux 操作系统打交道最多的,最熟悉不过了.互联网上关于 Linux 相关的教程和资料也非常的多,但是当你从中筛选出真正对自己有帮助 ...

  6. 项目众包 开源项目_改善8个开源项目的可访问性

    项目众包 开源项目 自四年前改用Linux以来,我一直从事开源工作,有时是代码贡献者,有时只是提交错误和改进文档. 而且,正如你们中某些人可能已经知道的那样,我在视觉上有缺陷. 因此,我参与的大多数开 ...

  7. GitHub 上的优质 Linux 开源项目,真滴牛逼!

    作为一名互联网人,提起 Linux 大家都不陌生,尤其是日常跟 Linux 操作系统打交道最多的,最熟悉不过了.互联网上关于 Linux 相关的教程和资料也非常的多,但是当你从中筛选出真正对自己有帮助 ...

  8. Linux 开源项目

    Linux 领域的优质开源项目 linux-command  这个开源项目是 Linux 命令大全搜索工具,当前搜集了 570 多个 Linux 命令,主要内容包含:Linux 基础命令分类.Lin ...

  9. Linux(CentOS)安装apache(httpd),其他电脑无法访问的原因 【iptables打开某端口】

    今天试了下在虚拟机上利用CentOS系统的yum命令安装好了httpd(apache2.2), 然后在windows系统下访问此虚拟机的ip地址,却访问不了.   因为前段时间有知道过iptable的 ...

最新文章

  1. 深度无盘 连接服务器失败,深度无盘服务器配置
  2. sqlaction 更新至 v0.2.1.0,自动生成 JDBC 代码的数据库持久层工具
  3. 5个酷毙的Python神器工具
  4. .NET 请求、事件 处理流程
  5. 第三十九期:原生图数据库的15条规则
  6. 2014年考研英语二作文PartB图表题
  7. php 非侵入式,Tideways和xhgui打造PHP非侵入式监控平台
  8. 自学前端,一天学4个小时左右,能到什么水平?
  9. 二进制数据与16进制字符串相互转化方法
  10. pcb文件转成原理图_电子设计基础教学-PCB板制作之 AD(Altium Designer)的工程建立过程...
  11. Java基础算法--排序
  12. soapUI简介、安装使用教程、接口(性能)测试
  13. AI领域最有影响力100人,Hinton只排31、Bengio竟然没有上榜?
  14. 计算机后端维护,机房智能交通后台系统运行维护内容.doc
  15. AsyncTask异步加载给视频截取第一帧图片
  16. 组合数学 | 递推关系和母函数
  17. 阿里云服务搭建微信小程序开发环境
  18. Ptyhon 入门:通过高德地图获取经纬度
  19. Microbiome杂志和主编介绍
  20. Algebra:Chapter 0 - 引言

热门文章

  1. 五、QPushButton按钮和QLineEdit控件操作
  2. SpringBoot部署项目到Linux上传文件路径问题
  3. discuz的ajax,discuz分页函数改成基于jqueryd的ajax分页函数
  4. python字典返回键值对列表_返回列表Python dict dictionaries Python 数据结构——字典 返回列表...
  5. 00600 ora 关闭oracle_Oracle集群高可用故障切换
  6. 进入虚拟化服务器,服务器虚拟化即将进入3.0时代
  7. java smp_什么是SMP系统
  8. python中config命令_【Python】 配置解析ConfigParser 命令行参数解析optparser
  9. vue实现查询多条记录_vue.js 实现天气查询
  10. java泛型和类型通配符,java – 泛型,类型参数和通配符