修复因URL中含有搜索引擎关键词而导致页面403的问题

This commit is contained in:
GoEdgeLab
2022-09-02 09:26:50 +08:00
parent 181cdce357
commit f9b6ad19f7

View File

@@ -10,6 +10,7 @@ import (
"github.com/iwind/TeaGo/logs" "github.com/iwind/TeaGo/logs"
"net" "net"
"net/http" "net/http"
"net/url"
"regexp" "regexp"
"sync" "sync"
) )
@@ -120,15 +121,20 @@ func checkRequestSecurity(securityConfig *systemconfigs.SecurityConfig, req *htt
} }
var userAgent = req.UserAgent() var userAgent = req.UserAgent()
var referer = req.Referer() var refererURL = req.Referer()
var referHost = ""
u, err := url.Parse(refererURL)
if err == nil {
referHost = u.Host
}
// 检查搜索引擎 // 检查搜索引擎
if securityConfig.DenySearchEngines && (len(userAgent) == 0 || searchEngineRegex.MatchString(userAgent) || (len(referer) > 0 && searchEngineRegex.MatchString(referer))) { if securityConfig.DenySearchEngines && (len(userAgent) == 0 || searchEngineRegex.MatchString(userAgent) || (len(referHost) > 0 && searchEngineRegex.MatchString(referHost))) {
return false return false
} }
// 检查爬虫 // 检查爬虫
if securityConfig.DenySpiders && (len(userAgent) == 0 || spiderRegexp.MatchString(userAgent) || (len(referer) > 0 && spiderRegexp.MatchString(referer))) { if securityConfig.DenySpiders && (len(userAgent) == 0 || spiderRegexp.MatchString(userAgent) || (len(referHost) > 0 && spiderRegexp.MatchString(referHost))) {
return false return false
} }