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() } }