Beacon/middleware/crawler.go

34 lines
820 B
Go

package middleware
import (
"github.com/gin-gonic/gin"
"go.uber.org/zap"
"net/http"
"strings"
)
// AntiCrawlingStrategy 反爬虫策略
func AntiCrawlingStrategy() gin.HandlerFunc {
return func(context *gin.Context) {
UserAgent := strings.Split(context.Request.UserAgent(), "/")
var requestClient string
if len(UserAgent) > 0 {
requestClient = UserAgent[0]
}
IllegalList := []string{"", "Apache-HttpClient", "python-requests", "PostmanRuntime", "Go-http-client"}
for _, illegal := range IllegalList {
if illegal == requestClient {
zap.L().Warn("非法用户请求", zap.String("UserAgent", requestClient))
context.JSON(http.StatusNotImplemented, gin.H{
"code": -1,
"msg": "系统错误,请稍后再试",
})
context.Abort()
return
}
}
context.Next()
}
}