@@ -2,8 +2,6 @@ package cmd
22
33import (
44 "fmt"
5- "net"
6- "regexp"
75 "strings"
86
97 "RealityChecker/internal/ui"
@@ -14,22 +12,38 @@ func (r *RootCmd) executeBatch(domainsStr string) {
1412 // 解析域名列表
1513 domains , invalidDomains := parseDomains (domainsStr )
1614
17- // 显示无效域名警告
18- if len (invalidDomains ) > 0 {
19- fmt .Printf ("警告:发现 %d 个无效域名,已跳过:\n " , len (invalidDomains ))
20- for _ , domain := range invalidDomains {
21- fmt .Printf (" - %s\n " , domain )
22- }
23- fmt .Println ()
24- }
25-
2615 if len (domains ) == 0 {
16+ fmt .Println ()
2717 fmt .Println ("错误:没有有效的域名可以检测" )
2818 fmt .Println ("提示:请检查域名格式,例如:apple.com, google.com" )
19+ fmt .Println ()
2920 return
3021 }
3122
3223 ui .PrintBanner ()
24+
25+ // 显示无效域名警告(在横幅下面)
26+ if len (invalidDomains ) > 0 {
27+ fmt .Printf ("警告:发现 %d 个无效域名,已跳过:\n " , len (invalidDomains ))
28+
29+ // 只显示前5个无效域名,避免显示过多
30+ displayCount := 5
31+ if len (invalidDomains ) < displayCount {
32+ displayCount = len (invalidDomains )
33+ }
34+
35+ for i := 0 ; i < displayCount ; i ++ {
36+ fmt .Printf (" - %s\n " , invalidDomains [i ])
37+ }
38+
39+ // 如果还有更多无效域名,显示省略提示
40+ if len (invalidDomains ) > displayCount {
41+ fmt .Printf (" ... 还有 %d 个无效域名\n " , len (invalidDomains )- displayCount )
42+ }
43+
44+ fmt .Println ()
45+ }
46+
3347 ui .PrintTimestampedMessage ("开始批量检测 %d 个域名..." , len (domains ))
3448
3549 _ , err := r .batchManager .CheckDomains (r .ctx , domains )
@@ -63,41 +77,3 @@ func parseDomains(domainsStr string) ([]string, []string) {
6377 return validDomains , invalidDomains
6478}
6579
66- // isValidDomain 验证域名格式是否有效
67- func isValidDomain (domain string ) bool {
68- // 基本长度检查
69- if len (domain ) == 0 || len (domain ) > 253 {
70- return false
71- }
72-
73- // 检查是否包含非法字符
74- if strings .ContainsAny (domain , " \t \n \r " ) {
75- return false
76- }
77-
78- // 检查是否以点开头或结尾
79- if strings .HasPrefix (domain , "." ) || strings .HasSuffix (domain , "." ) {
80- return false
81- }
82-
83- // 检查是否包含连续的点
84- if strings .Contains (domain , ".." ) {
85- return false
86- }
87-
88- // 使用正则表达式验证域名格式
89- domainRegex := regexp .MustCompile (`^[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?)*$` )
90- if ! domainRegex .MatchString (domain ) {
91- return false
92- }
93-
94- // 尝试解析域名(不进行实际DNS查询)
95- _ , err := net .LookupHost (domain )
96- if err != nil {
97- // 即使DNS解析失败,只要格式正确就认为是有效的
98- // 因为可能是网络问题或域名确实不存在
99- return true
100- }
101-
102- return true
103- }
0 commit comments