https://github.com/root4loot/goresolve
Quickly resolve domains using reliable resolvers
https://github.com/root4loot/goresolve
dns dns-resolution dns-resolver
Last synced: about 1 year ago
JSON representation
Quickly resolve domains using reliable resolvers
- Host: GitHub
- URL: https://github.com/root4loot/goresolve
- Owner: root4loot
- License: mit
- Created: 2023-08-03T08:26:49.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-02-15T21:08:27.000Z (over 1 year ago)
- Last Synced: 2025-02-15T22:20:09.004Z (over 1 year ago)
- Topics: dns, dns-resolution, dns-resolver
- Language: Go
- Homepage:
- Size: 34.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
 [](CONTRIBUTING.md)
# goresolve
Quickly resolve domains using reliable resolvers ([publicresolvers](https://github.com/root4loot/publicresolvers))
## Example
```
go get github.com/root4loot/goresolve@master
```
```go
package main
import (
"fmt"
"strings"
"github.com/root4loot/goresolve"
)
func main() {
// Options
options := goresolve.DefaultOptions()
options.Concurrency = 5
options.Timeout = 5
options.Delay = 0
options.DelayJitter = 0
options.Resolvers = []string{"208.67.222.222", "208.67.220.220"}
r := goresolve.NewRunnerWithOptions(*options)
// Single domain
fmt.Println("Single:")
result := goresolve.Single("example.com")
fmt.Printf("Domain: %s\n", result.Domain)
if len(result.IPv4) > 0 {
fmt.Printf("IPv4: %s\n", strings.Join(result.IPv4, ", "))
} else {
fmt.Println("IPV4: None")
}
if len(result.IPv6) > 0 {
fmt.Printf("IPv6: %s\n", strings.Join(result.IPv6, ", "))
} else {
fmt.Println("IPv6: None")
}
fmt.Println("Resolver:", result.ResolvedBy)
// Multiple domains
fmt.Println("\nMultiple:")
results := r.Multiple([]string{"example.com", "google.com", "github.com"})
for _, result := range results {
fmt.Printf("Domain: %s\n", result.Domain)
if len(result.IPv4) > 0 {
fmt.Printf("IPv4: %s\n", strings.Join(result.IPv4, ", "))
} else {
fmt.Println("IPV4: None")
}
if len(result.IPv6) > 0 {
fmt.Printf("IPv6: %s\n", strings.Join(result.IPv6, ", "))
} else {
fmt.Println("IPv6: None")
}
fmt.Println("Resolver:", result.ResolvedBy)
}
// Multiple domains using channels
fmt.Println("\nMultipleStream")
streamResults := make(chan goresolve.Result)
go r.MultipleStream(streamResults, "example.com", "google.com", "github.com")
for result := range streamResults {
fmt.Printf("Domain: %s\n", result.Domain)
if len(result.IPv4) > 0 {
fmt.Printf("IPv4: %s\n", strings.Join(result.IPv4, ", "))
} else {
fmt.Println("IPv4: None")
}
if len(result.IPv6) > 0 {
fmt.Printf("IPv6: %s\n", strings.Join(result.IPv6, ", "))
} else {
fmt.Println("IPv6: None")
}
fmt.Println("Resolver:", result.ResolvedBy)
}
}
```
---
## Contributing
Contributions are welcome. If you find any bugs or have suggestions for improvements, feel free to open an issue or submit a pull request.