Files
assetfinder/urlscan.go
2020-07-24 22:37:25 +01:00

53 lines
854 B
Go

package assetfinder
import (
"fmt"
"net/url"
)
type URLScan struct{}
type URLScanResults struct {
Results []struct {
Task struct {
URL string `json:"url"`
} `json:"task"`
Page struct {
URL string `json:"url"`
} `json:"page"`
} `json:"results"`
}
func (URLScan) FetchSubDomains(domain string) ([]string, error) {
resp := URLScanResults{}
err := fetchJSON(
fmt.Sprintf("https://urlscan.io/api/v1/search/?q=domain:%s", domain),
resp,
)
if err != nil {
return []string{}, err
}
output := make([]string, 0)
for _, r := range resp.Results {
u, err := url.Parse(r.Task.URL)
if err != nil {
continue
}
output = append(output, u.Hostname())
}
for _, r := range resp.Results {
u, err := url.Parse(r.Page.URL)
if err != nil {
continue
}
output = append(output, u.Hostname())
}
return output, nil
}