{"id":49868181,"url":"https://github.com/vito-l/dns-probe","last_synced_at":"2026-05-15T04:01:56.933Z","repository":{"id":357403197,"uuid":"1236765503","full_name":"vito-L/dns-probe","owner":"vito-L","description":"A DNS probe tool written in Go, supporting DoH/DoT/DNSSEC","archived":false,"fork":false,"pushed_at":"2026-05-12T16:15:05.000Z","size":65,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-12T17:35:41.771Z","etag":null,"topics":["cli","devops","dns","dnssec","doh","dot","golang","network","tool"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vito-L.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-12T14:51:51.000Z","updated_at":"2026-05-12T16:34:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vito-L/dns-probe","commit_stats":null,"previous_names":["vito-l/dns-probe"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/vito-L/dns-probe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vito-L%2Fdns-probe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vito-L%2Fdns-probe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vito-L%2Fdns-probe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vito-L%2Fdns-probe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vito-L","download_url":"https://codeload.github.com/vito-L/dns-probe/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vito-L%2Fdns-probe/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33053144,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-15T02:00:06.351Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","devops","dns","dnssec","doh","dot","golang","network","tool"],"created_at":"2026-05-15T04:01:03.680Z","updated_at":"2026-05-15T04:01:56.922Z","avatar_url":"https://github.com/vito-L.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DNS Probe Tool\n\n[![Go Version](https://img.shields.io/badge/Go-1.21+-00ADD8?style=flat\u0026logo=go)](https://golang.org)\n[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Release](https://img.shields.io/github/v/release/vito-L/dns-probe)](https://github.com/vito-L/dns-probe/releases)\n[![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20macOS-brightgreen)]()\n[![Architecture](https://img.shields.io/badge/Architecture-amd64%20%7C%20arm64-orange)]()\n\n\u003e **[中文文档](README_CN.md)**\n\nA DNS probing tool written in Go, supporting multiple platforms and architectures.\n\n## ✨ Features\n\n| Feature          | Description                                        |\n| ---------------- | -------------------------------------------------- |\n| 🔍 Basic Query     | Concurrent probing of multiple DNS servers                              |\n| 📊 Record Types     | Supports A/AAAA/CNAME/MX/NS/TXT/SOA/SRV/CAA/PTR and more |\n| 🎨 Formatted Output     | Terminal-friendly formatted output                                |\n| 🌐 Auto Detection     | Automatically detects system DNS servers                              |\n| 🔧 Customization      | Supports custom DNS servers                               |\n| 💻 Cross-Platform      | Windows/Linux/macOS                       |\n| 🏗️ Cross-Architecture     | amd64/arm64                               |\n| 📝 JSON Output   | `--json` formatted output                            |\n| 🛡️ DNS Pollution Detection | `--pollution` detects DNS pollution                     |\n| 🔐 DNSSEC Validation | `--dnssec` verifies DNSSEC signatures                     |\n| 🔒 DoH Support    | `--doh` DNS over HTTPS                    |\n| 🔒 DoT Support    | `--dot` DNS over TLS                      |\n| 📄 HTML Report   | `--html` generates visual report                          |\n| 📁 Batch Query     | `--file` batch query domains                           |\n| 📚 History     | `--history` view query history                        |\n\n## 📦 Supported Systems\n\n### Windows\n\n| Architecture | Filename                           | Description            |\n| ------------ | ---------------------------------- | ---------------------- |\n| amd64        | `dns-probe-windows-amd64.exe`      | Windows 64-bit systems |\n\n### Linux\n\n| Architecture | Filename                     | Description                    |\n| ------------ | ---------------------------- | ------------------------------ |\n| amd64        | `dns-probe-linux-amd64`      | Most Linux distributions       |\n| arm64        | `dns-probe-linux-arm64`      | ARM64 architecture (e.g., ARM servers) |\n\n### Supported Linux Distributions\n\n- Ubuntu / Debian\n- CentOS / RHEL / Fedora\n- Arch Linux\n- openSUSE\n- Alpine Linux\n- And other mainstream distributions\n\n## 🚀 Quick Start\n\n### Download\n\n```bash\n# Linux amd64\nwget https://github.com/vito-L/dns-probe/releases/latest/download/dns-probe-linux-amd64\nchmod +x dns-probe-linux-amd64\n\n# Linux arm64\nwget https://github.com/vito-L/dns-probe/releases/latest/download/dns-probe-linux-arm64\nchmod +x dns-probe-linux-arm64\n```\n\n### Basic Usage\n\n```bash\n# Query A record using system DNS\n./dns-probe example.com\n\n# Use specified DNS servers\n./dns-probe example.com 8.8.8.8 114.114.114.114\n\n# Query all record types\n./dns-probe example.com --all\n```\n\n## 📖 Usage\n\n### Command Line Arguments\n\n| Argument               | Description         | Example                                   |\n| ---------------------- | ------------------- | ----------------------------------------- |\n| `\u003cdomain\u003e`           | Domain to query     | `example.com`                        |\n| `[DNS servers...]`    | Specify DNS servers   | `8.8.8.8 114.114.114.114`            |\n| `--all`          | Query all record types   | `--all`                              |\n| `--json`         | Output in JSON format   | `--json`                             |\n| `--pollution`    | Detect DNS pollution    | `--pollution`                        |\n| `--dnssec`       | Enable DNSSEC validation | `--dnssec`                           |\n| `--doh \u003curl\u003e`    | Use DoH server   | `--doh https://dns.google/dns-query` |\n| `--dot \u003cserver\u003e` | Use DoT server   | `--dot dns.alidns.com:853`           |\n| `--html \u003cfile\u003e`    | Generate HTML report   | `--html report.html`                 |\n| `--file \u003cfile\u003e`    | Batch query domains from file | `--file domains.txt`                 |\n| `--history`      | Show query history     | `--history`                          |\n\n### Examples\n\n#### Basic Query\n\n```bash\n# Using system DNS server\n./dns-probe example.com\n\n# Using specified DNS server\n./dns-probe example.com 8.8.8.8\n\n# Using multiple DNS servers\n./dns-probe example.com 8.8.8.8 114.114.114.114 223.5.5.5\n```\n\n#### DNSSEC Validation\n\n```bash\n# DNSSEC validation using system DNS\n./dns-probe example.com --dnssec\n\n# DNSSEC validation using specified DNS\n./dns-probe example.com --dnssec 8.8.8.8\n```\n\n#### DNS Pollution Detection\n\n```bash\n# Detect DNS pollution\n./dns-probe example.com --pollution\n```\n\nOutput example:\n\n```\n┌─ DNS Server: 114.114.114.114\n│  Latency: 23 ms\n│  ⚠️  DNS pollution detected\n│  Polluted IP: 1.2.3.4\n│  Real IP (foreign DNS): 142.250.73.78\n│\n│  Type         TTL    Value\n│  ────────────────────────────────────────────────────────────\n│  A          1m     1.2.3.4\n└──────────────────────────────────────────────────────────────────\n```\n\n#### DoH/DoT Support\n\n```bash\n# Using DoH server\n./dns-probe example.com --doh https://dns.google/dns-query\n\n# Using DoT server\n./dns-probe example.com --dot dns.alidns.com:853\n```\n\n#### JSON Output\n\n```bash\n# Output in JSON format\n./dns-probe example.com --json\n\n# Output in JSON format (all record types)\n./dns-probe example.com --all --json\n```\n\n#### HTML Report\n\n```bash\n# Generate HTML report\n./dns-probe example.com --html report.html\n```\n\n#### Batch Query\n\n```bash\n# Batch query domains from file\n./dns-probe --file domains.txt\n\n# Batch query with JSON output\n./dns-probe --file domains.txt --json\n```\n\n#### Query History\n\n```bash\n# Show query history\n./dns-probe --history\n```\n\n## 📊 Output Examples\n\n### Default Output (A Record)\n\n```\n╔══════════════════════════════════════════════════════════════════╗\n║                    DNS Probe Tool v1.0                          ║\n╚══════════════════════════════════════════════════════════════════╝\n\n  Domain: baidu.com\n  Time:   2026-05-12 22:44:50\n\n┌─ DNS Server: 8.8.8.8\n│  Latency: 209 ms\n│\n│  Type         TTL    Value\n│  ────────────────────────────────────────────────────────────\n│  A          4m     111.63.65.247\n│  A          4m     111.63.65.103\n│  A          4m     110.242.74.102\n│  A          4m     124.237.177.164\n└──────────────────────────────────────────────────────────────────\n```\n\n### JSON Output\n\n```json\n{\n  \"domain\": \"baidu.com\",\n  \"timestamp\": \"2026-05-12T22:55:09+08:00\",\n  \"servers\": [\n    {\n      \"server\": \"8.8.8.8\",\n      \"latency_ms\": 267,\n      \"records\": [\n        {\n          \"type\": \"A\",\n          \"name\": \"baidu.com.\",\n          \"ttl\": 580,\n          \"value\": \"124.237.177.164\"\n        }\n      ]\n    }\n  ]\n}\n```\n\n### Query History\n\n```\nQuery History:\n────────────────────────────────────────────────────────────\n[1] 2026-05-12T23:14:32+08:00 - baidu.com\n    DNS: 8.8.8.8, Latency: 205 ms\n[2] 2026-05-12T23:15:01+08:00 - google.com\n    DNS: 8.8.8.8, Latency: 192 ms\n```\n\n## 🔧 System DNS Servers\n\nThe tool automatically detects system-configured DNS servers:\n\n- **Windows**: Retrieved from `ipconfig /all`\n- **Linux**: Retrieved from `/etc/resolv.conf`\n\nIf detection fails, defaults to `8.8.8.8`\n\n## 📋 Supported Record Types\n\nWhen using the `--all` parameter, the following record types are supported:\n\n| Record Type | Description     |\n| ----------- | --------------- |\n| A           | IPv4 address    |\n| AAAA        | IPv6 address    |\n| CNAME       | Canonical name  |\n| MX          | Mail exchange    |\n| NS          | Name server     |\n| TXT         | Text record     |\n| SOA         | Authority record |\n| SRV         | Service record  |\n| CAA         | Certificate authority |\n| PTR         | Reverse lookup  |\n\n## 🛠️ Building from Source\n\n```bash\n# Windows\ngo build -o dns-probe.exe .\n\n# Linux amd64\nGOOS=linux GOARCH=amd64 go build -o dns-probe-linux-amd64 .\n\n# Linux arm64\nGOOS=linux GOARCH=arm64 go build -o dns-probe-linux-arm64 .\n\n# macOS amd64\nGOOS=darwin GOARCH=amd64 go build -o dns-probe-darwin-amd64 .\n\n# macOS arm64 (Apple Silicon)\nGOOS=darwin GOARCH=arm64 go build -o dns-probe-darwin-arm64 .\n```\n\n## 📦 Dependencies\n\n- [Go](https://golang.org) 1.21+\n- [miekg/dns](https://github.com/miekg/dns)\n\n## 🧪 Tests\n\nAll test cases have passed:\n\n```bash\n$ go test -v ./...\n\n=== RUN   TestRecordTypeName\n--- PASS: TestRecordTypeName (0.00s)\n=== RUN   TestFormatTTL\n--- PASS: TestFormatTTL (0.00s)\n=== RUN   TestGetSystemDNSServers\n--- PASS: TestGetSystemDNSServers (0.03s)\n=== RUN   TestProbeDNS\n--- PASS: TestProbeDNS (0.21s)\n=== RUN   TestProbeDNSInvalidDomain\n--- PASS: TestProbeDNSInvalidDomain (0.21s)\n=== RUN   TestProbeAll\n--- PASS: TestProbeAll (0.22s)\n=== RUN   TestProbeAllRecordTypes\n--- PASS: TestProbeAllRecordTypes (2.15s)\n=== RUN   TestFormatText\n--- PASS: TestFormatText (0.01s)\n=== RUN   TestFormatJSON\n--- PASS: TestFormatJSON (0.00s)\n=== RUN   TestReadDomainsFromFile\n--- PASS: TestReadDomainsFromFile (0.01s)\n=== RUN   TestReadDomainsFromFileNotFound\n--- PASS: TestReadDomainsFromFileNotFound (0.00s)\n=== RUN   TestSaveAndLoadHistory\n--- PASS: TestSaveAndLoadHistory (0.02s)\n=== RUN   TestFormatHistory\n--- PASS: TestFormatHistory (0.00s)\n=== RUN   TestProbeDoH\n--- PASS: TestProbeDoH (1.30s)\n=== RUN   TestProbeDoT\n--- PASS: TestProbeDoT (0.04s)\n=== RUN   TestDNSSECValidation\n--- PASS: TestDNSSECValidation (0.20s)\n=== RUN   TestPollutionDetection\n--- PASS: TestPollutionDetection (0.48s)\n=== RUN   TestMultipleDomains\n--- PASS: TestMultipleDomains (0.46s)\n=== RUN   TestFormatMultipleJSON\n--- PASS: TestFormatMultipleJSON (0.00s)\nPASS\nok  \tgithub.com/vito-L/dns-probe\t6.918s\n```\n\n## 📄 License\n\n[MIT License](LICENSE)\n\n## 🤝 Contributing\n\nIssues and Pull Requests are welcome!\n\n## ⭐ Star\n\nIf this project helps you, please give it a Star!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvito-l%2Fdns-probe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvito-l%2Fdns-probe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvito-l%2Fdns-probe/lists"}