Skip to content

hamza1886/domain-availability-checker

Repository files navigation

Domain Availability Checker

A production-ready Python script for bulk domain availability checking using WHOIS, DNS, and HTTP fallback methods.

How to Run

1. Install dependencies:

pip install -r requirements.txt

2. Run the script:

python domain_checker.py -i domains.txt -o results.csv

Usage Examples

Basic Usage

# Check domains from text file
python domain_checker.py -i domains.txt -o results.csv

# Check with higher concurrency
python domain_checker.py -i domains.txt -o results.csv -c 10

# Enable HTTP fallback for better accuracy
python domain_checker.py -i domains.txt -o results.csv --http-fallback

# Verbose output for debugging
python domain_checker.py -i domains.txt -o results.csv -v

# Quiet mode (minimal output)
python domain_checker.py -i domains.txt -o results.csv -q

Advanced Usage

# Full configuration
python domain_checker.py \
    -i domains.csv \
    -o availability_report.csv \
    -c 8 \
    --whois-timeout 45 \
    --dns-timeout 15 \
    --retries 5 \
    --rate-limit-delay 2.0 \
    --http-fallback \
    --verbose

Sample Input

domain-12345.com
google.com
github.com

Sample Output

Console Output

============================================================
DOMAIN AVAILABILITY CHECKER
============================================================
Input file:         domains.txt
Output file:        results.csv
Domains to check:   7
Concurrency:        5
WHOIS timeout:      30s
DNS fallback:       Enabled
HTTP fallback:      Disabled
Rate limiting:      Enabled
============================================================

Checking domains: 100%|████████████████| 7/7 [00:15<00:00,  2.14s/domain]

============================================================
DOMAIN AVAILABILITY CHECK SUMMARY
============================================================
Total domains checked:  7
✅ Available:              2 (28.6%)
❌ Registered:             5 (71.4%)
❓ Unknown:                0 (0.0%)
⚠️ Errors:                 0 (0.0%)
============================================================

✅ AVAILABLE DOMAINS:
  ✓ example-test-domain-12345.com
  ✓ this-domain-is-probably-available-xyz123.net

Time elapsed: 15.23 seconds
Average: 2.18 seconds per domain

CSV Output

domain status registrar expiry_date creation_date notes check_method checked_at
domain-12345.com Available Domain is available WHOIS 2025-12-13T22:56:02.624428+00:00
google.com Registered MarkMonitor Inc. 2028-09-14 1997-09-15 Domain is registered WHOIS 2025-12-13T22:56:02.624942+00:00
github.com Registered MarkMonitor Inc. 2026-10-09 2007-10-09 Domain is registered WHOIS 2025-12-13T22:56:02.624982+00:00

Architecture Diagram

┌────────────────────────────────────────────────────────────────┐
│                     DomainChecker (Orchestrator)               │
├────────────────────────────────────────────────────────────────┤
│  ┌──────────────┐   ┌──────────────┐   ┌──────────────┐        │
│  │   Semaphore  │   │ Rate Limiter │   │Thread Pool   │        │
│  │ (Concurrency)│   │  (Per TLD)   │   │  Executor    │        │
│  └──────────────┘   └──────────────┘   └──────────────┘        │
├────────────────────────────────────────────────────────────────┤
│                         Check Pipeline                         │
│  ┌──────────────┐   ┌──────────────┐   ┌──────────────┐        │
│  │    WHOIS     │──▶│    DNS       │──▶│    HTTP     │        │
│  │   Checker    │   │  Fallback    │   │  Fallback    │        │
│  │  (Primary)   │   │ (Secondary)  │   │ (Tertiary)   │        │
│  └──────────────┘   └──────────────┘   └──────────────┘        │
└────────────────────────────────────────────────────────────────┘
                              │
                              ▼
                    ┌──────────────────┐
                    │   DomainResult   │
                    │  - domain        │
                    │  - status        │
                    │  - registrar     │
                    │  - expiry_date   │
                    │  - notes         │
                    └──────────────────┘

Key Features

Feature Description
Async I/O Uses asyncio for concurrent domain checking
Rate Limiting Per-TLD rate limiting to avoid WHOIS blocking
Retry Logic Automatic retries with exponential backoff
Multiple TLDs Supports .com, .net, .org, ccTLDs, new gTLDs
Fallback Methods DNS and HTTP checks when WHOIS fails
Pattern Matching Robust detection of "available" vs "registered"
Progress Display Real-time progress with tqdm (optional)
CSV Export Detailed results for further analysis

Dependencies

python-whois>=0.8.0
aiohttp>=3.9.0
dnspython>=2.4.0
tqdm>=4.66.0  # Optional, for progress bar

About

Python script for bulk domain availability checking using WHOIS, DNS, and HTTP fallback methods

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages