栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

Springboot整合轻量级反爬虫组件kk-anti-reptile

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Springboot整合轻量级反爬虫组件kk-anti-reptile

在做GIS开发时,经常遇到的一个风险,就是别会爬虫你的数据,栅格瓦片数据、空间属性数据等。数据被爬取,对服务器会造成很大的 压力,数据的价值也无形地损失了。对一些从事GIS的小型公司来说,基本没有任何网络防护的能力。数据被爬虫了,可能都不知道。很多服务器死机了也只知道重启。对一个小公司去话费大量的精力,做反爬虫也是很不安全的。

最近在网上 遇到一个开源的反爬虫组件kk-anti-reptile,spring-boot1.x, spring-boot2.x 均可使用。使用起来很方便,只需要引入依赖,配置反爬虫选项和redission连接就可以了。极小的工作量,可以完成一些基本的反爬虫防护。

依赖项
  1. kk-anti-reptile依赖,目前只有一个版本。
        
            cn.keking.project
            kk-anti-reptile
            1.0.0-RELEASE
        
  1. Redisson相关依赖项

注意redisson-spring-data-27对应springboot2.7,版本对应关系可以参考https://github.com/redisson/redisson/tree/master/redisson-spring-data

        
            org.springframework.boot
            spring-boot-starter-data-redis
        

        
            org.redisson
            redisson-spring-boot-starter
            3.17.5
        
        
            org.redisson
            redisson-spring-data-27
            3.17.5
        
yml中相关配置
  • 反爬虫配置,可以参考官网的配置一览表配置
anti:
  reptile:
    manager:
      enabled: true
      ip-rule:
        enabled: true
        request-max-size: 10
        expiration-time: 20000000
      ua-rule:
        enabled: true
        allowed-mobile: true
        allowed-pc: true
  • Redisson配置

因为组件kk-anti-reptile的运行依赖于Redisson。没有配置过的,可以参考我的配置。

application.yml

spring:
  redis:
    host: 172.16.0.183
    port: 6379
    database: 12
    password: 123456
    timeout: 10000
    pool:
      #  连接池最大连接数(使用负值表示没有限制)
      max-active: 2000
      #  连接池最大阻塞等待时间(使用负值表示没有限制)
      max-wait: -1
      #  连接池中的最大空闲连接
      max-idle: 500
      #  连接池中的最小空闲连接
      min-idle: 0
    redisson:
      file: classpath:redisson.yml

创建redisson.yml ,在application.yml文件的同级目录下

# redisson.yml --- 存放于application.yml同级目录
singleServerConfig:
  #  连接空闲超时,单位:毫秒
  idleConnectionTimeout: 100000
  #  连接超时,单位:毫秒
  connectTimeout: 10000
  #  命令等待超时,单位:毫秒
  timeout: 3000
  #  命令失败重试次数
  retryAttempts: 3
  #  命令重试发送时间间隔,单位:毫秒
  retryInterval: 1500
  #  密码
  password: 123456
  #  单个连接最大订阅数量
  subscriptionsPerConnection: 5
  #  客户端名称
  clientName: null
  #  节点地址
  address: redis://172.16.0.183:6379
  #  发布和订阅连接的最小空闲连接数
  subscriptionConnectionMinimumIdleSize: 1
  #  发布和订阅连接池大小
  subscriptionConnectionPoolSize: 50
  #  最小空闲连接数
  connectionMinimumIdleSize: 32
  #  连接池大小
  connectionPoolSize: 64
  #  redis数据库编号
  database: 12
  #  DNS监测时间间隔,单位:毫秒
  dnsMonitoringInterval: 5000
#  线程池数量
threads: 0
#  Netty线程池数量
nettyThreads: 0
#  编码
codec:
  class: "org.redisson.codec.JsonJacksonCodec"
#  传输模式
transportMode: "NIO"
#  配置看门狗的默认超时时间为30s,这里改为10s
lockWatchdogTimeout: 10000
测试接口

开发一个测试的接口

package com.example.text.demo.controller;


import cn.keking.anti_reptile.annotation.AntiReptile;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/")
@RestController
public class ComController {
    
    @AntiReptile
    @GetMapping("/test")
    String getAreaMsgByWkt() {
            return "13333666666";
    }
}

注意,如果你需要对某个接口防护,需要在接口上增加@AntiReptile注解,也可以在yml文件中配置include-urls拦截

效果测试
  • 正常访问时

  • 开启限流时

  • 禁止PC访问时

注意

如果自己配置有困难的,可以参考我的源码示例

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1039232.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号