package cmd import ( "fmt" "github.com/spf13/cobra" ) var crawlCmd = &cobra.Command{ Use: "crawl [domain]", Short: "Crawl domain", Long: `Resolves a domain using httpx and crawls it using katana. Returns discovered links as plain text, one per line, streamed in real-time. Supports both http:// and https:// URLs.`, Args: cobra.ExactArgs(1), RunE: runCrawl, } func init() { rootCmd.AddCommand(crawlCmd) crawlCmd.Flags().Bool("subdomains", false, "Also discover and crawl all subdomains using subfinder") } func runCrawl(cmd *cobra.Command, args []string) error { subdomains, _ := cmd.Flags().GetBool("subdomains") c, err := newUnauthenticatedClient() if err != nil { return err } err = c.CrawlDomain(args[0], subdomains, func(line string) error { fmt.Println(line) return nil }) if err != nil { return err } return nil }