Path: blob/master/v3/pkg/scrape/googlesearch/google_search.go
689 views
/*1Copyright © 2023 github.com/alpkeskin2*/3package googlesearch45import (6"fmt"7"regexp"8"strings"910"github.com/alpkeskin/mosint/v3/internal/spinner"11"github.com/fatih/color"12"github.com/gocolly/colly/v2"13)1415type GoogleSearch struct {16Response []string17}1819func New() *GoogleSearch {20return &GoogleSearch{}21}2223func (g *GoogleSearch) Search(email string) {24spinner := spinner.New("Google Searching")25spinner.Start()2627query := fmt.Sprintf("intext:'%s'", email)28url := fmt.Sprintf("https://www.google.com/search?q=%s", query)2930pattern := `https?://[^\s"']+`31re := regexp.MustCompile(pattern)32removedPrefix := "/url?q="33removedParams := "&sa="3435c := colly.NewCollector()36c.OnHTML("a[href]", func(e *colly.HTMLElement) {37link := e.Attr("href")38if containsGoogle(link) {39return40}4142var response []string43if re.MatchString(link) {44link := strings.TrimPrefix(link, removedPrefix)45link = strings.Split(link, removedParams)[0]46response = append(response, link)47}4849g.Response = append(g.Response, response...)50})5152err := c.Visit(url)5354if err != nil {55spinner.StopFail()56spinner.SetMessage(err.Error())57return58}5960spinner.Stop()61}6263func (g *GoogleSearch) Print() {64fmt.Println("[*] Google Search Results")65if len(g.Response) == 0 {66fmt.Println(color.RedString("[!]"), "No results found")67return68}6970for _, link := range g.Response {71fmt.Println(color.GreenString("[+]"), link)72}73}7475func containsGoogle(text string) bool {76return regexp.MustCompile(`google\.com`).MatchString(text)77}787980