mirror of
https://github.com/shadow1ng/fscan.git
synced 2026-09-25 12:41:53 +08:00
refactor(proxy): 删除自定义 contains() 函数,改用标准库
- 用 strings.Contains() 替代手写的 contains() - 删除过时的注释
This commit is contained in:
+3
-16
@@ -5,6 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
@@ -15,7 +16,7 @@ import (
|
|||||||
// manager 代理管理器实现
|
// manager 代理管理器实现
|
||||||
type manager struct {
|
type manager struct {
|
||||||
config *ProxyConfig
|
config *ProxyConfig
|
||||||
stats *ProxyStats // 暂时保留但不使用
|
stats *ProxyStats
|
||||||
mu sync.RWMutex
|
mu sync.RWMutex
|
||||||
|
|
||||||
// 连接池
|
// 连接池
|
||||||
@@ -404,7 +405,7 @@ func ProbeProxyBehavior(dialer Dialer, timeout time.Duration) bool {
|
|||||||
// 读取超时或错误 = 目标不可达,但代理行为正常
|
// 读取超时或错误 = 目标不可达,但代理行为正常
|
||||||
// 说明代理没有伪造响应
|
// 说明代理没有伪造响应
|
||||||
errStr := readErr.Error()
|
errStr := readErr.Error()
|
||||||
if contains(errStr, "timeout", "i/o timeout") {
|
if strings.Contains(errStr, "timeout") {
|
||||||
// 超时可能意味着代理接受了连接但没有伪造响应
|
// 超时可能意味着代理接受了连接但没有伪造响应
|
||||||
// 这是边界情况,暂时认为不可靠
|
// 这是边界情况,暂时认为不可靠
|
||||||
return false
|
return false
|
||||||
@@ -421,17 +422,3 @@ func ProbeProxyBehavior(dialer Dialer, timeout time.Duration) bool {
|
|||||||
// 代理接受连接且不报错也不响应 = 全回显行为
|
// 代理接受连接且不报错也不响应 = 全回显行为
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// contains 检查字符串是否包含任一子串
|
|
||||||
func contains(s string, substrs ...string) bool {
|
|
||||||
for _, sub := range substrs {
|
|
||||||
if len(sub) > 0 && len(s) >= len(sub) {
|
|
||||||
for i := 0; i <= len(s)-len(sub); i++ {
|
|
||||||
if s[i:i+len(sub)] == sub {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user