- TypeScript 82.2%
- CSS 11.1%
- HTML 6.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
- 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. |
||
| frontend | ||
| src | ||
| .gitignore | ||
| example-wordlist.txt | ||
| package-lock.json | ||
| package.json | ||
| README-UI.md | ||
| README.md | ||
| tlds-complete.txt | ||
| tsconfig.json | ||
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.ioist 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 wordliststarten 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