diff --git a/CHANGELOG b/CHANGELOG index a03aed6..9ad10f6 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ proxy更新日志 v5.1 1.优化了kcp默认mtu配置,调整为450. +2.优化了HTTP(S)\SOCKS5代理智能判断,更加精确。 v5.0 1.修复了SPS多端口无效的bug. diff --git a/services/http/http.go b/services/http/http.go index f8bef2e..bc8d1e1 100644 --- a/services/http/http.go +++ b/services/http/http.go @@ -278,7 +278,7 @@ func (s *HTTP) callback(inConn net.Conn) { useProxy = true } else { k := s.Resolve(address) - s.checker.Add(k) + s.checker.Add(address, k) //var n, m uint useProxy, _, _ = s.checker.IsBlocked(k) //s.log.Printf("blocked ? : %v, %s , fail:%d ,success:%d", useProxy, address, n, m) diff --git a/services/socks/socks.go b/services/socks/socks.go index 8e45c78..cd7c217 100644 --- a/services/socks/socks.go +++ b/services/socks/socks.go @@ -563,7 +563,7 @@ func (s *Socks) proxyTCP(inConn *net.Conn, methodReq socks.MethodsRequest, reque useProxy = false } else { k := s.Resolve(request.Addr()) - s.checker.Add(k) + s.checker.Add(request.Addr(), k) useProxy, _, _ = s.checker.IsBlocked(k) } if useProxy { diff --git a/utils/structs.go b/utils/structs.go index 66aed3f..fe67135 100644 --- a/utils/structs.go +++ b/utils/structs.go @@ -41,6 +41,7 @@ type CheckerItem struct { Data []byte SuccessCount uint FailCount uint + Key string } //NewChecker args: @@ -173,13 +174,14 @@ func (c *Checker) domainIsInMap(address string, blockedMap bool) bool { } return false } -func (c *Checker) Add(address string) { - if c.domainIsInMap(address, false) || c.domainIsInMap(address, true) { +func (c *Checker) Add(key, address string) { + if c.domainIsInMap(key, false) || c.domainIsInMap(key, true) { return } var item CheckerItem item = CheckerItem{ Host: address, + Key: key, } c.data.SetIfAbsent(item.Host, item) }