Регулярное выражение с различным (неизвестным) соответствием строки - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь получить ВСЕ ссылки HREF с помощью инфраструктуры GoColly, но разрешить только URL-адреса ЛЮБОГО домена быть корневыми URL-адресами или субдоменами (без путей).Я закомментировал мой REGEXP.Расширения файлов не имеют значения.Я просто не хочу ничего после "/".Я попытался использовать переменную «Домен» и concat для создания «разнообразного» регулярного выражения.Даже не уверен, что это так.

  1. Twitter.Com - ИСТИНА
  2. hello.authac.com - ИСТИНА
  3. whole.facebook.com-ИСТИНА
  4. twiiter.com / dd -FALSE
  5. hello.authac.com / sd.html FALSE
  6. whole.facebook.com / sdsd / dsd / as.txt FALSE

    // Main
    package main
    import (
    "log"
    "fmt"
    "time"
    //"regexp"
    "net/http"
    "github.com/gocolly/colly"
    )
    
    var Target string
    var Domain string
    
    
    func main() {
    //r := regexp.MustCompile("(https:" + Domain + ".com)$")
    
    
    c := colly.NewCollector(
        //colly.URLFilters(r),
    
    )
    
    
    
    
    
    c.OnError(func(r *colly.Response, err error) {
        fmt.Println(r.Request.URL, "Is Not Reachable", r.StatusCode) 
    })
    
    
    
    // Find and visit all links
    c.OnHTML("a", func(e *colly.HTMLElement) {
        e.Request.Visit(e.Attr("href"))
    })
    
    
    c.OnRequest(func(r *colly.Request) {
        Domain := r.URL.String()
        Target := BannerGrab(Domain)
        fmt.Println(Target)
        fmt.Println("Dropping By.. ", r.URL)
        time.Sleep(1000 * time.Millisecond)
    })
    
    c.Visit("https://www.twitter.com/")
    }
    
    //CheckDB if not listed else add
    //RiskDB
    //Email
    
    
    func BannerGrab(s string) string {
    
    client := &http.Client{}
    req, err := http.NewRequest("GET", s, nil)
        if err != nil {
        log.Fatalln(err)
    }
    req.Header.Set("User-Agent", "Authac/0.1")
    resp, _ := client.Do(req)
    serverEntry := resp.Header.Get("Server")
    return serverEntry
    
    }
    

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Следующее регулярное выражение может сопоставлять URL-адреса только с доменом и поддоменом без пути,

r: = regexp.MustCompile ("(https | http): // (. *?)")

Чтобы добавить, colly.URLFilters будет сканировать только те URL, которые соответствуют шаблону.Он также не будет создавать URL-адреса, соответствующие шаблону из полного URL-адреса, а затем выполнять сканирование.

0 голосов
/ 21 ноября 2018

Возможное регулярное выражение:

/ ^[^\/\\]+$ / gmi

Что не соответствует ни разу, когда в тексте есть "\" или "/".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...