@@ -10,7 +10,7 @@ import (
1010// executeBatch 执行批量检测
1111func (r * RootCmd ) executeBatch (domainsStr string ) {
1212 // 解析域名列表
13- domains , invalidDomains := parseDomains (domainsStr )
13+ domains , invalidDomains , duplicateDomains := parseDomains (domainsStr )
1414
1515 if len (domains ) == 0 {
1616 fmt .Println ()
@@ -22,9 +22,31 @@ func (r *RootCmd) executeBatch(domainsStr string) {
2222
2323 ui .PrintBanner ()
2424
25- // 显示无效域名警告(在横幅下面)
25+ // 显示重复域名警告(在横幅下面)
26+ if len (duplicateDomains ) > 0 {
27+ ui .PrintTimestampedMessage ("警告:发现 %d 个重复域名,已去重:" , len (duplicateDomains ))
28+
29+ // 只显示前5个重复域名,避免显示过多
30+ displayCount := 5
31+ if len (duplicateDomains ) < displayCount {
32+ displayCount = len (duplicateDomains )
33+ }
34+
35+ for i := 0 ; i < displayCount ; i ++ {
36+ fmt .Printf (" - %s\n " , duplicateDomains [i ])
37+ }
38+
39+ // 如果还有更多重复域名,显示省略提示
40+ if len (duplicateDomains ) > displayCount {
41+ fmt .Printf (" ... 还有 %d 个重复域名\n " , len (duplicateDomains )- displayCount )
42+ }
43+
44+ fmt .Println ()
45+ }
46+
47+ // 显示无效域名警告
2648 if len (invalidDomains ) > 0 {
27- fmt . Printf ("警告:发现 %d 个无效域名,已跳过:\n " , len (invalidDomains ))
49+ ui . PrintTimestampedMessage ("警告:发现 %d 个无效域名,已跳过:" , len (invalidDomains ))
2850
2951 // 只显示前5个无效域名,避免显示过多
3052 displayCount := 5
@@ -55,10 +77,13 @@ func (r *RootCmd) executeBatch(domainsStr string) {
5577 // 详细结果已在batch manager中打印,无需重复
5678}
5779
58- // parseDomains 解析域名列表,返回有效域名和无效域名
59- func parseDomains (domainsStr string ) ([]string , []string ) {
80+ // parseDomains 解析域名列表,返回有效域名、无效域名和重复域名
81+ func parseDomains (domainsStr string ) ([]string , []string , [] string ) {
6082 var validDomains []string
6183 var invalidDomains []string
84+ var duplicateDomains []string
85+ domainSet := make (map [string ]bool ) // 用于去重
86+ duplicateSet := make (map [string ]bool ) // 用于记录重复域名
6287
6388 // 支持空格分隔的域名列表
6489 fields := strings .Fields (domainsStr )
@@ -69,11 +94,31 @@ func parseDomains(domainsStr string) ([]string, []string) {
6994 }
7095
7196 if isValidDomain (domain ) {
72- validDomains = append (validDomains , domain )
97+ // 检查是否已存在,避免重复
98+ if ! domainSet [domain ] {
99+ validDomains = append (validDomains , domain )
100+ domainSet [domain ] = true
101+ } else {
102+ // 记录重复的有效域名
103+ if ! duplicateSet [domain ] {
104+ duplicateDomains = append (duplicateDomains , domain )
105+ duplicateSet [domain ] = true
106+ }
107+ }
73108 } else {
74- invalidDomains = append (invalidDomains , domain )
109+ // 无效域名也去重
110+ if ! domainSet [domain ] {
111+ invalidDomains = append (invalidDomains , domain )
112+ domainSet [domain ] = true
113+ } else {
114+ // 记录重复的无效域名
115+ if ! duplicateSet [domain ] {
116+ duplicateDomains = append (duplicateDomains , domain )
117+ duplicateSet [domain ] = true
118+ }
119+ }
75120 }
76121 }
77- return validDomains , invalidDomains
122+ return validDomains , invalidDomains , duplicateDomains
78123}
79124
0 commit comments