缺少结构体类型options中的Results字段或方法,需要在options结构体中定义Results字段或方法。最后的代码如下:

package main

import ( "bufio" "flag" "fmt" "os" "strconv" "strings" "sync"

"github.com/logrusorgru/aurora/v3"
log "github.com/projectdiscovery/gologger"
"github.com/projectdiscovery/gologger/levels"

)

var ( query string engine string page int headers headersFlag proxy string silent bool queries []string wg sync.WaitGroup outputFile string )

type options struct { Query string Engine string Page int Proxy string Headers headersFlag Results []string }

func (o *options) search() (bool, error) { switch o.Engine { case "google": return googleSearch(o) case "shodan": return shodanSearch(o) case "bing": return bingSearch(o) case "duck": return duckSearch(o) case "yahoo": return yahooSearch(o) case "ask": return askSearch(o) default: return false, fmt.Errorf("invalid engine") } }

func init() { flag.StringVar(&query, "q", "", "") flag.StringVar(&query, "query", "", "")

flag.StringVar(&engine, "e", "", "")
flag.StringVar(&engine, "engine", "google", "")

flag.IntVar(&page, "p", 1, "")
flag.IntVar(&page, "page", 1, "")

flag.Var(&headers, "header", "")
flag.Var(&headers, "H", "")

flag.StringVar(&proxy, "x", "", "")
flag.StringVar(&proxy, "proxy", "", "")

flag.BoolVar(&silent, "s", false, "")
flag.BoolVar(&silent, "silent", false, "")

flag.StringVar(&outputFile, "o", "", "")
flag.StringVar(&outputFile, "output", "", "")

flag.Usage = func() {
    h := []string{
        "Options:",
        "  -q, --query <query>          Search query",
        "  -e, --engine <engine>        Provide search engine (default: Google)",
        "                               (options: Google, Shodan, Bing, Duck, Yahoo, Ask)",
        "  -p, --page <i>               Specify number of pages (default: 1)",
        "  -H, --header <header>        Pass custom header to search engine",
        "  -x, --proxy <proxy_url>      Use proxy to surfing (HTTP/SOCKSv5 proxy)",
        "  -s, --silent                 Silent mode",
        "  -o, --output <output_file>   Output search result to file",
        "\n",
    }
    showBanner()
    fmt.Fprintf(os.Stderr, "%s", aurora.Green(strings.Join(h, "\n")))
}
flag.Parse()

engine = strings.ToLower(engine)

maxLog := levels.LevelDebug
if silent {
    maxLog = levels.LevelSilent
}
log.DefaultLogger.SetMaxLevel(maxLog)

showBanner()

}

func main() { if isStdin() { sc := bufio.NewScanner(os.Stdin) for sc.Scan() { q := sc.Text() queries = append(queries, q) } } else { if query == "" { log.Fatal().Msgf("Missing required -q flag!") os.Exit(2) }

    queries = []string{query}
}

log.Info().Msgf("Query : %+v", queries)
log.Info().Msgf("Page  : %s", strconv.Itoa(page))
if proxy != "" {
    log.Info().Msgf("Proxy : %s", proxy)
}
if len(headers) > 0 {
    log.Info().Msgf("Header: [%+v]", headers)
}
log.Info().Msgf("Engine: %s", strings.Title(engine))
log.Warning().Msg("Use at your own risk! Developers assume no responsibility...")
log.Warning().Msg("If your IP address has been blocked by search engine providers or other reason.\n\n")

for _, q := range queries {
    wg.Add(1)
    go func(dork string) {
        defer wg.Done()
        opts := options{
            Query:   dork,
            Engine:  engine,
            Page:    page,
            Proxy:   proxy,
            Headers: headers,
        }

        fatal, err := opts.search()
        if err != nil {
            if fatal {
                isError(err)
            }
            log.Warning().Msgf("Something error %s.", err.Error())
        }

        if outputFile != "" {
            writeToFile(opts.Results, outputFile)
        }
    }(q)
}
wg.Wait()

}

func writeToFile(content []string, filename string) error { file, err := os.Create(filename) if err != nil { return err }

defer file.Close()

for _, line := range content {
    _, err := file.WriteString(line + "\n")
    if err != nil {
        return err
    }
}

return nil
编译错误错误如下:maingo11822 optsResults undefined type options has no field or method Results怎么解决给我最后的代码package mainimport 	bufio	flag	fmt	os	strconv	strings	githubcomlogrusorgruaurorav3	log githubcomproject

原文地址: https://www.cveoy.top/t/topic/g8u8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录