Ein asyncrone Domain-Suche mit **WHOIS-basierter Validierung** und parallelen Workern.
  • TypeScript 82.2%
  • CSS 11.1%
  • HTML 6.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Tony eea359ef42 Enhance domain input handling and validation
- Updated input placeholders to clarify expected formats for domain and pattern.
- Trimmed whitespace from domain and pattern inputs.
- Implemented auto-detection of patterns in the domain field.
- Improved validation for pattern formats, ensuring they conform to expected patterns.
- Adjusted server logic to treat wildcard domains as patterns.
2026-02-27 13:30:18 +01:00
frontend Enhance domain input handling and validation 2026-02-27 13:30:18 +01:00
src Enhance domain input handling and validation 2026-02-27 13:30:18 +01:00
.gitignore Initial 2026-02-24 11:12:21 +01:00
example-wordlist.txt Initial 2026-02-24 11:12:21 +01:00
package-lock.json Enhance domain input handling and validation 2026-02-27 13:30:18 +01:00
package.json Enhance domain input handling and validation 2026-02-27 13:30:18 +01:00
README-UI.md Initial 2026-02-24 11:12:21 +01:00
README.md Initial 2026-02-24 11:12:21 +01:00
tlds-complete.txt Initial 2026-02-24 11:12:21 +01:00
tsconfig.json Initial 2026-02-24 11:12:21 +01:00

Domain Search Tool

Ein hochperformanter asynchroner Domain-Suchender mit WHOIS-basierter Validierung und parallelen Workern.

Features

Asynchrone parallele Verarbeitung - Konfigurierbare Worker-Threads (1-16)
WHOIS-basierte Verfügbarkeitsprüfung - Zuverlässige Registrar-Abfrage (nicht nur DNS!)
Brute-Force Generierung - Generiert Kombinationen (aa, ab, ac, ...)
Wildcard-Pattern Support - *.io, blog-*.com, etc.
Wordlist-Integration - Kombiniert Wörter mit TLDs
Timeout-Schutz - Standard 30 Sekunden oder konfigurierbar
JSON-Output - Maschinenlesbares Format für weitere Verarbeitung
Live-Feedback - Zeigt verfundene Domains und Fortschritt in Echtzeit

Warum WHOIS?

DNS-Lookup ist unzuverlässig:

  • Manche Domains sind registriert, antworten aber nicht auf DNS-Queries
  • Beispiel: hub.io ist registriert, aber DNS-Lookup würde es als "verfügbar" melden

WHOIS ist zuverlässig:

  • Direkte Abfrage beim Domain-Registrar
  • Gibt den tatsächlichen Registrierungsstatus zurück
  • Funktioniert auch für Domains ohne DNS-Einträge

Installation

cd e:\Projects\DomainSearch
npm install
npm run build

Usage

Einzelne Domain prüfen

npx ts-node src/index.ts --domain google.io --workers 4

Brute-Force: Alle 2-stelligen Kombinationen

npx ts-node src/index.ts --pattern "*.io" --method brute --maxlen 2 --workers 8

Domain-Name über alle TLDs (NEU!)

Suche einen Domain-Namen über alle gängigen TLDs (com, net, org, io, de, uk, etc.):

# Findet hub.com, hub.io, hub.net, hub.org, etc.
npx ts-node src/index.ts --pattern "hub.*" --workers 4

# Findet mesh.com, mesh.net, mesh.org, etc.
npx ts-node src/index.ts --pattern "mesh.*" --workers 4 --timeout 60000

Das durchsucht 58 häufige TLDs und zeigt nur verfügbare Domains.

Mit Wordlist kombinieren

npx ts-node src/index.ts --pattern "*.com" --method wordlist --wordlist ./words.txt --workers 4

Beide Methoden kombiniert

npx ts-node src/index.ts --pattern "blog-*.io" --method both --wordlist ./words.txt --maxlen 2 --workers 8

Mit längeren Timeouts

npx ts-node src/index.ts --pattern "*.io" --method brute --maxlen 3 --workers 16 --timeout 60000

CLI Optionen

Flag Kurz Beschreibung Standard
--domain <name> -d Komplette Domain (z.B. api.io) -
--pattern <pattern> -p Pattern mit Wildcard (z.B. *.io) -
--method <method> -m brute, wordlist, oder both brute
--workers <number> -w Anzahl paralleler Worker (1-16) 8
--maxlen <length> -l Max Länge für Brute-Force (2-5) 3
--wordlist <file> -f Pfad zur Wordlist-Datei -
--timeout <ms> -t Timeout in Millisekunden 30000

Output Format

{
  "config": {
    "target": "*.io",
    "method": "brute",
    "workers": 8,
    "timeout": 30000
  },
  "results": [
    {
      "domain": "ab.io",
      "available": true,
      "checkTime": 145
    }
  ],
  "summary": {
    "total": 676,
    "available": 24,
    "duration": 12500
  }
}

Architektur

src/generator.ts

Generiert Domain-Kandidaten via:

  • Brute-Force (aa, ab, ac, ...)
  • Wordlist-Kombinationen
  • Wildcard-Pattern Expansion

src/dnsChecker.ts

Prüft Domain-Verfügbarkeit mittels DNS-Lookup

src/workerPool.ts

Verwaltet parallele Verarbeitung mit konfigurierbarer Concurrency

src/cli.ts

Argument-Parsing und Validierung

src/index.ts

Hauptprogramm - orchestriert alle Komponenten

Performance

  • WHOIS-Lookup: ~400-1200ms pro Domain (zuverlässig)
  • Parallele Verarbeitung: 2-16 Worker gleichzeitig (empfohlen: 2-4 für WHOIS)
  • 30s Timeout: ~25-75 Domains pro Durchlauf (abhängig von Registrar-Antwortzeit)
  • Empfehlung: Weniger Worker für stabilere Verbindungen, mehr Timeout für größere Suchen

Beispiel-Laufzeiten

1 Domain (hub.io):        ~1.2s
2-Letter Brute (*.io):    ~60s mit 30 verfügbaren Domains
Wordlist 50 Wörter (*.dev): ~2-3 Minuten

Beispiele

.io Domains mit 2 Buchstaben finden

npx ts-node src/index.ts --pattern "*.io" --method brute --maxlen 2 --workers 12 --timeout 45000

Ergebnis: Findet verfügbare 2-Buchstaben-Domains wie ab.io, cd.io, etc.

Technik-Blogs schnell checken

echo -e "blog\ndev\ntech\ncode" > words.txt
npx ts-node src/index.ts --pattern "*.com" --method wordlist --wordlist ./words.txt --workers 8

Result: Prüft blog.com, dev.com, tech.com, code.com

Domain über alle TLDs suchen (NEU!)

# Findet verfügbare hub.* Domains
npx ts-node src/index.ts --pattern "hub.*" --workers 4 --timeout 45000

# Output: hub.online, hub.site, hub.name, etc. (nur verfügbare)

Kombiniert: Wörter + Brute-Force

npx ts-node src/index.ts --pattern "api-*.io" --method both --wordlist ./words.txt --maxlen 2 --workers 8

Result: Prüft api-blog.io, api-aa.io, api-ab.io, etc.

Tipps

  • domain.* Patterns: Durchsucht 58 häufige TLDs (com, net, org, io, de, uk, etc.)
  • Längere Timeouts für domain.*: Mindestens 45-60 Sekunden (58 TLDs sind viele Requests)
  • Höhere Worker: Schneller aber mehr Ressourcen-Last (empfohlen: 2-4 für WHOIS)
  • Längerer Timeout: Mehr Domains geprüft, aber längere Laufzeit
  • Smaller Brute-Force Länge: Schnellere Suche (z.B. maxlen 2 statt 3)
  • Wordlist vorab testen: Mit --method wordlist starten für schnelle Tests

Development

# TypeScript kompilieren
npm run build

# Mit ts-node direct starten
npx ts-node src/index.ts --domain test.io

# Mit kompiliertem JavaScript
node dist/index.js --domain test.io

Lizenz

MIT