Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
cfld-region-outline
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cfld-backend
cfld-region-outline
Commits
72827449
Commit
72827449
authored
Dec 26, 2023
by
zhouxudong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
反扒
parent
0f3b7bbf
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
198 additions
and
2 deletions
+198
-2
kk-anti-reptile-1.0.0-RELEASE.jar
jar/kk-anti-reptile-1.0.0-RELEASE.jar
+0
-0
pom.xml
pom.xml
+28
-0
ResourceConfig.java
...main/java/com/lyy/admin/common/config/ResourceConfig.java
+1
-1
ForwardFilter.java
src/main/java/com/lyy/admin/common/filter/ForwardFilter.java
+86
-0
RedissonConfig.java
src/main/java/com/lyy/admin/common/redis/RedissonConfig.java
+37
-0
BusinessService.java
...main/java/com/lyy/admin/common/utils/BusinessService.java
+14
-1
application.yml
src/main/resources/application.yml
+32
-0
No files found.
jar/kk-anti-reptile-1.0.0-RELEASE.jar
0 → 100644
View file @
72827449
File added
pom.xml
View file @
72827449
...
...
@@ -182,6 +182,33 @@
<artifactId>
spring-boot-configuration-processor
</artifactId>
<optional>
true
</optional>
</dependency>
<!--反扒-->
<dependency>
<groupId>
cn.keking.project
</groupId>
<artifactId>
kk-anti-reptile
</artifactId>
<version>
1.0.0-RELEASE
</version>
<scope>
system
</scope>
<systemPath>
${project.basedir}/jar/kk-anti-reptile-1.0.0-RELEASE.jar
</systemPath>
</dependency>
<!-- User-Agent库 反扒使用-->
<dependency>
<groupId>
eu.bitwalker
</groupId>
<artifactId>
UserAgentUtils
</artifactId>
<version>
1.21
</version>
</dependency>
<!--反扒使用-->
<dependency>
<groupId>
commons-fileupload
</groupId>
<artifactId>
commons-fileupload
</artifactId>
<version>
1.4
</version>
</dependency>
<!--反扒 需要redisson-->
<dependency>
<groupId>
org.redisson
</groupId>
<artifactId>
redisson
</artifactId>
<version>
3.17.5
</version>
</dependency>
</dependencies>
<build>
...
...
@@ -190,6 +217,7 @@
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<configuration>
<includeSystemScope>
true
</includeSystemScope>
<fork>
true
</fork>
<!-- 如果没有该配置,devtools不会生效 -->
</configuration>
</plugin>
...
...
src/main/java/com/lyy/admin/common/config/ResourceConfig.java
View file @
72827449
...
...
@@ -48,7 +48,7 @@ public class ResourceConfig implements WebMvcConfigurer {
String
[]
excludeUrl
=
new
String
[]{
"/demo/login"
,
"/login/login"
,
"/weixin/login"
,
"/parkInfo/list"
,
"/developmentInfo/list"
,
"/megalopolisInfo/list"
,
"/treeInfo/**"
,
"/homePage/**"
,
"/sysFile/**"
,
"/api/sysDictData/**"
};
"/treeInfo/**"
,
"/homePage/**"
,
"/sysFile/**"
,
"/api/sysDictData/**"
,
"/kk-anti-reptile/**"
};
String
[]
excludePatterns
=
(
String
[])
ArrayUtils
.
addAll
(
excludeSwagger
,
excludeUrl
);
System
.
out
.
println
(
"自定义拦截器#############################################"
);
...
...
src/main/java/com/lyy/admin/common/filter/ForwardFilter.java
0 → 100644
View file @
72827449
package
com
.
lyy
.
admin
.
common
.
filter
;
import
cn.hutool.json.JSONUtil
;
import
com.lyy.admin.common.utils.AjaxResult
;
import
com.lyy.admin.common.utils.BusinessService
;
import
com.lyy.admin.common.utils.IpUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.LinkedMultiValueMap
;
import
org.springframework.util.MultiValueMap
;
import
javax.servlet.*
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.io.PrintWriter
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @Author:zhouxudong
*
* @version: 1.0 @Date: 2023/12/14 18:35 @Description: 微信登录授权过滤器
*/
@Component
@Slf4j
@Order
(-
1
)
public
class
ForwardFilter
implements
Filter
{
@Autowired
private
BusinessService
businessService
;
@Override
public
void
doFilter
(
ServletRequest
servletRequest
,
ServletResponse
servletResponse
,
FilterChain
filterChain
)
throws
IOException
,
ServletException
{
HttpServletRequest
request
=
(
HttpServletRequest
)
servletRequest
;
HttpServletResponse
response
=
(
HttpServletResponse
)
servletResponse
;
String
requestURI
=
request
.
getRequestURI
();
String
getRequest
=
request
.
getRequestURL
().
toString
();
if
(!
requestURI
.
contains
(
"/forward/test"
))
{
filterChain
.
doFilter
(
request
,
response
);
return
;
}
String
replace
=
getRequest
.
replace
(
requestURI
,
""
);
//request.getRequestDispatcher("/kk-anti-reptile/validate/").forward(request,response);
String
verifyId
=
request
.
getParameter
(
"verifyId"
);
String
realRequestUri
=
request
.
getParameter
(
"realRequestUri"
);
String
result
=
request
.
getParameter
(
"result"
);
MultiValueMap
<
String
,
String
>
params
=
new
LinkedMultiValueMap
<>();
params
.
put
(
"verifyId"
,
Collections
.
singletonList
(
verifyId
));
params
.
put
(
"realRequestUri"
,
Collections
.
singletonList
(
realRequestUri
));
params
.
put
(
"result"
,
Collections
.
singletonList
(
result
));
try
{
String
forward
=
businessService
.
forward
(
params
,
replace
);
Map
map
=
JSONUtil
.
toBean
(
forward
,
Map
.
class
);
this
.
loginSuccessHandler
(
response
,
map
);
}
catch
(
Exception
e
){
this
.
loginFailHandler
(
response
,
"验证码有误"
);
}
//this.loginFailHandler(response, "获取用户openid失败");
}
private
void
loginSuccessHandler
(
HttpServletResponse
response
,
Object
data
)
throws
IOException
{
response
.
setStatus
(
HttpServletResponse
.
SC_OK
);
AjaxResult
result
=
new
AjaxResult
(
HttpServletResponse
.
SC_OK
,
null
,
data
);
this
.
printWriter
(
response
,
result
);
}
private
void
loginFailHandler
(
HttpServletResponse
response
,
String
exception
)
throws
IOException
{
response
.
setStatus
(
509
);
AjaxResult
result
=
new
AjaxResult
(
509
,
exception
,
null
);
this
.
printWriter
(
response
,
result
);
}
private
void
printWriter
(
HttpServletResponse
response
,
AjaxResult
ajaxResult
)
throws
IOException
{
response
.
setContentType
(
"application/json;charset=utf-8"
);
PrintWriter
out
=
response
.
getWriter
();
out
.
write
(
JSONUtil
.
toJsonStr
(
ajaxResult
));
out
.
flush
();
out
.
close
();
}
}
src/main/java/com/lyy/admin/common/redis/RedissonConfig.java
0 → 100644
View file @
72827449
package
com
.
lyy
.
admin
.
common
.
redis
;
import
org.redisson.Redisson
;
import
org.redisson.api.RedissonClient
;
import
org.redisson.config.Config
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
/**
* @Author:zhouxudong
* @version: 1.0
* @Date: 2023/12/25 11:43
* @Description: redisson 配置
*/
@Configuration
public
class
RedissonConfig
{
@Value
(
"${spring.redis.host}"
)
private
String
address
;
@Value
(
"${spring.redis.port}"
)
private
String
port
;
@Value
(
"${spring.redis.password}"
)
private
String
password
;
@Value
(
"${spring.redis.database}"
)
private
int
dataBase
;
@Bean
public
RedissonClient
redissonClient
(){
// 创建配置 指定redis地址及节点信息
Config
config
=
new
Config
();
config
.
useSingleServer
().
setAddress
(
"redis://"
+
address
+
":"
+
port
).
setPassword
(
password
).
setDatabase
(
dataBase
);
// 根据config创建出RedissonClient实例
RedissonClient
redissonClient
=
Redisson
.
create
(
config
);
return
redissonClient
;
}
}
src/main/java/com/lyy/admin/common/utils/BusinessService.java
View file @
72827449
...
...
@@ -9,6 +9,8 @@ import org.springframework.beans.factory.annotation.Value;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.MediaType
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.MultiValueMap
;
import
org.springframework.web.reactive.function.BodyInserters
;
import
org.springframework.web.reactive.function.client.WebClient
;
import
reactor.core.publisher.Mono
;
...
...
@@ -44,7 +46,18 @@ public class BusinessService {
log
.
info
(
"注册保存线索信息:参数:{},结果:{}"
,
params
,
JSONUtil
.
toJsonStr
(
block
));
return
block
;
}
public
String
forward
(
MultiValueMap
<
String
,
String
>
params
,
String
url
)
{
String
block
=
this
.
webClient
.
post
()
.
uri
(
url
+
"/lyy/kk-anti-reptile/validate/"
).
contentType
(
MediaType
.
APPLICATION_FORM_URLENCODED
)
.
body
(
BodyInserters
.
fromMultipartData
(
params
))
.
retrieve
()
.
bodyToMono
(
String
.
class
)
.
block
();
log
.
info
(
"注册保存线索信息:参数:{},结果:{}"
,
params
,
JSONUtil
.
toJsonStr
(
block
));
return
block
;
}
/**
* @description: 返回格式 116.225202,39.897665
* @date: 2023/12/17 15:56
...
...
src/main/resources/application.yml
View file @
72827449
...
...
@@ -102,3 +102,35 @@ liyeren:
whiteIp
:
120.46.86.157
#立业人加密密钥
key
:
a5gcCE1MV4j2W9x7
#反爬虫设置
anti
:
reptile
:
manager
:
#是否启用反爬虫插件
enabled
:
true
#局部拦截时,需要反爬的接口列表,以','分隔,支持正则匹配。全局拦截模式下无需配置
include-urls
:
^${server.servlet.context-path}/.*$
#是否启用 IP Rule
ip-rule
:
enabled
:
true
#单个时间窗口内,最大请求数
request-max-size
:
20
#时间窗口长度(ms)
expiration-time
:
5000
#命中规则后自动解除时间(单位:s) moren
# lock-expire: 10000
#IP 白名单,支持后缀'*'通配,以','分隔
ignore-ip
:
${liyeren.whiteIp}
ua-rule
:
enabled
:
true
# 是否允许 Linux 系统访问
#allowed-linux :
# 是否允许移动端设备访问
allowed-mobile
:
true
# 是否允许移 PC 设备访问
allowed-pc
:
true
#是否允许物联网设备访问
#allowed-iot:
#是否允许代理访问
# allowed-proxy: true
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment