From af3c6a932ee04f337907a9159b457f719b911c5a Mon Sep 17 00:00:00 2001 From: ZacharyZcR Date: Mon, 19 Jan 2026 14:52:06 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20URL=E8=A7=A3=E6=9E=90=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E8=A1=A5=E5=85=A8=E5=8D=8F=E8=AE=AE=E5=A4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -uf 文件中 192.168.1.1:8080 自动转为 http://192.168.1.1:8080 --- common/parsers/target.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/common/parsers/target.go b/common/parsers/target.go index f46359c..aed8f5b 100644 --- a/common/parsers/target.go +++ b/common/parsers/target.go @@ -313,8 +313,9 @@ func (tp *TargetParser) parseURLs(input *TargetInput) ([]string, []error, []stri for _, rawURL := range urlList { rawURL = strings.TrimSpace(rawURL) if rawURL != "" { - if valid, err := tp.validateURL(rawURL); valid { - urls = append(urls, rawURL) + normalizedURL := tp.normalizeURL(rawURL) + if valid, err := tp.validateURL(normalizedURL); valid { + urls = append(urls, normalizedURL) } else { warnings = append(warnings, fmt.Sprintf("无效URL: %s - %s", rawURL, err.Error())) } @@ -329,8 +330,9 @@ func (tp *TargetParser) parseURLs(input *TargetInput) ([]string, []error, []stri errors = append(errors, NewParseError(ErrorTypeFileError, "读取URL文件失败", input.URLsFile, 0, err)) } else { for i, line := range fileResult.Lines { - if valid, err := tp.validateURL(line); valid { - urls = append(urls, line) + normalizedURL := tp.normalizeURL(line) + if valid, err := tp.validateURL(normalizedURL); valid { + urls = append(urls, normalizedURL) } else { warnings = append(warnings, fmt.Sprintf("URL文件第%d行无效: %s", i+1, err.Error())) } @@ -344,6 +346,19 @@ func (tp *TargetParser) parseURLs(input *TargetInput) ([]string, []error, []stri return urls, errors, warnings } +// normalizeURL 规范化URL,自动补全协议头 +func (tp *TargetParser) normalizeURL(rawURL string) string { + rawURL = strings.TrimSpace(rawURL) + if rawURL == "" { + return rawURL + } + // 如果没有协议头,自动添加 http:// + if !strings.HasPrefix(rawURL, "http://") && !strings.HasPrefix(rawURL, "https://") { + return "http://" + rawURL + } + return rawURL +} + // parsePorts 解析端口 func (tp *TargetParser) parsePorts(input *TargetInput) ([]int, []error, []string) { var ports []int