Kaynağa Gözat

增加ip白名单

wangkaiyue 3 yıl önce
ebeveyn
işleme
8c22a2313f
3 değiştirilmiş dosya ile 27 ekleme ve 7 silme
  1. 20 0
      README.md
  2. 7 2
      core/proxy/filterPoly/filterPoly.go
  3. 0 5
      etc/config.yaml

+ 20 - 0
README.md

@@ -51,4 +51,24 @@ closeNotify()
     go watchNode.NewWatcher(ctx, resolver)
 ```
 
+## 反爬虫策略配置
 
+
+```json
+          checkIdBlock      是否开启用户session校验
+          idThreshold       用户请求阈值 [[a,b],[c,d],[m,n]] a秒b次、c秒d次请求出验证码,并清空次阈值内容;m秒n次出验证码,不清除阈值内容,每超出idFreq次,出现一次验证码
+          idTimeRange       阈值有效时长
+          idFreq            超出最大阈值后,每超出idFreq次,出现一次验证码
+          idMax             超出此阈值后直接进入临时黑名单
+          idMaxBlockTimes   临时黑名单超出此阈值后直接进入永久黑名单
+          
+          checkIpBlock      是否开启用户ip校验
+          ipThreshold       用户请求阈值 [[a,b],[c,d],[m,n]] a秒b次、c秒d次请求出验证码,并清空次阈值内容;m秒n次出验证码,不清除阈值内容,每超出idFreq次,出现一次验证码
+          ipTimeRange       阈值有效时长
+          ipFreq            超出最大阈值后,每超出idFreq次,出现一次验证码
+          ipMax             超出此阈值后直接进入临时黑名单
+          ipMaxBlockTimes   临时黑名单超出此阈值后直接进入永久黑名单
+          
+          vcodeErrorTimes   [a,b] a秒验证码出错b次,进入临时黑名单
+          tempBlockTime     临时黑名单时长
+```

+ 7 - 2
core/proxy/filterPoly/filterPoly.go

@@ -71,12 +71,17 @@ statusCode:0通过 -1黑名单 1被拦截 2出现验证码
 */
 func (a *ReqFilterPoly) IpFilter(ctx g.Ctx, ip string) (statusCode int, key string) {
 	if !a.Rule.BCheckIp {
-		return 0, ""
+		return 0, ip
+	}
+	//是否开启白名单(开启白名单且在白名单中直接跳过)
+	if a.Rule.CheckWhite && a.checkWhiteList(ip) {
+		return 0, ip
 	}
 	//检测是否在黑名单中
-	if a.checkBackList(ip) {
+	if a.Rule.CheckBlack && a.checkBackList(ip) {
 		return -1, ip
 	}
+
 	//检测是否处于验证码校验状态
 	if a.IsWaitVerify(ip) {
 		return 2, ip

+ 0 - 5
etc/config.yaml

@@ -84,11 +84,6 @@ databases:
     userName: admin
     password: 123456
 
-redis:
-  default:
-    address: 127.0.0.1:6379
-    db: 0
-
 proxy:
   timeout: 30                 # 连接超时。默认30秒
   keepAlive: 60               # 长链接超时。默认60秒