yellow~ opinionated web scanning pipeline for pentesters in a hurry |
| git clone https://github.com/djnnvx/yellow.git |
| log | files | refs | archive | README | LICENSE |
cdn.go (933B)
1 package helper 2 3 import ( 4 "fmt" 5 "net" 6 "sync" 7 8 "github.com/projectdiscovery/cdncheck" 9 ) 10 11 type CDNInfo struct { 12 Type string `json:"type"` // cdn | waf | cloud 13 Provider string `json:"provider"` 14 } 15 16 var ( 17 cdnOnce sync.Once 18 cdnClient *cdncheck.Client 19 ) 20 21 func LookupCDN(ip net.IP) *CDNInfo { 22 cdnOnce.Do(func() { 23 client, err := cdncheck.NewWithOpts(3, nil) 24 if err != nil { 25 fmt.Printf("[!] cdncheck: unavailable, edge detection disabled: %v\n", err) 26 return 27 } 28 cdnClient = client 29 }) 30 31 if cdnClient == nil || ip == nil { 32 return nil 33 } 34 35 matched, provider, itemType, err := cdnClient.Check(ip) 36 if err != nil || !matched { 37 return nil 38 } 39 return &CDNInfo{Type: itemType, Provider: provider} 40 } 41 42 // SkipPortScan only skips WAFs. cdncheck files ordinary GCE compute under 43 // "cdn/google", so skipping on cdn would drop real origins. 44 func SkipPortScan(info *CDNInfo) bool { 45 return info != nil && info.Type == "waf" 46 }