Skip to content

A high-performance asynchronous domain availability checker with pattern matching, wordlist support, and checkpoint/resume functionality

License

Notifications You must be signed in to change notification settings

Rain-kl/RChecker

Repository files navigation

RChecker

A high-performance asynchronous domain availability checker supporting pattern matching and wordlist modes with checkpoint/resume functionality.

Language: 中文 | English

Contributors Forks Stargazers Issues MIT License


Logo

RChecker

A fast and efficient domain availability checking tool
Explore the docs »

View Demo · Report Bug · Request Feature

Project Overview

RChecker is a professional domain availability checking tool that uses asynchronous HTTP requests and the RDAP protocol to efficiently check the registration status of large numbers of domains. The tool supports multiple operation modes, including pattern matching generation, wordlist import, and checkpoint/resume functionality.

Key Features

  • 🚀 High-Performance Async Checking: Concurrent domain queries using aiohttp
  • 🎯 Multiple Generation Modes: Supports both pattern matching and wordlist domain generation
  • 📊 Real-time Progress Display: Progress bar with detailed statistics
  • 💾 Checkpoint/Resume: Resume from where you left off after interruption
  • 🌐 Online Wordlists: Built-in download functionality for various online wordlist sources
  • Rate Limiting: Configurable request rate control
  • 📝 Result Export: Automatically save available domains to file

Table of Contents

Getting Started

Prerequisites

  • Python 3.8 or higher
  • Stable internet connection
  • Sufficient disk space for storing results and progress files

Installation

Option 1: Install from PyPI (Recommended)

pip install rchecker

Option 2: Install from Source

  1. Clone the repository
git clone https://github.com/Rain-kl/RChecker.git
cd RChecker
  1. Install in development mode
pip install -e .

Or using uv (recommended):

uv sync
  1. Run the tool
rchecker --help

Usage

Basic Usage

1. Pattern Matching Mode

Check domains starting with specific prefixes:

# Check all 3-character .com domains
rchecker "a*" --max 3 --tld com

# Check domains with specific prefix
rchecker "app*" --max 6 --min 4 --tld com

2. Exact Domain Check

# Check single domain
rchecker "example" --max 7 --min 7 --tld com

3. Wordlist Mode

# Use custom wordlist
rchecker --wordlist words.txt --max 10 --tld com

# Download and use online wordlist
rchecker download common-small
rchecker --wordlist google-10000-english-usa.txt --max 8 --tld com

Advanced Options

Performance Tuning

# Adjust concurrency and request rate
rchecker "test*" --max 5 --concurrency 20 --rate 100

# Set timeout and retry count
rchecker "app*" --max 6 --timeout 15 --retries 3

Checkpoint/Resume

# Enable checkpoint/resume functionality
rchecker "data*" --max 6 --resume --progress-file my_progress.json

# Randomize check order
rchecker "api*" --max 5 --shuffle

Custom Output

# Specify output file
rchecker "web*" --max 5 --output available_web_domains.txt

# Disable progress bar
rchecker "blog*" --max 6 --no-progress

Wordlist Mode

View Available Online Wordlists

rchecker download list

Download Wordlists

# Download common English words
rchecker download common-small

# Download to specific location
rchecker download names --output first_names.txt

# Force overwrite existing file
rchecker download adjectives --force

Built-in Wordlist Sources

Name Description Word Count
common Common English words 370,000+
common-small Most common English words 10,000
common-tiny Most common English words (no profanity) 10,000
names Common first names 5,000+
adjectives English adjectives 1,300+

File Structure

RChecker/
├── rchecker/               # Main package directory
│   ├── __init__.py         # Package initialization
│   ├── main.py             # Core functionality
│   └── cli.py              # Command-line interface
├── pyproject.toml          # Project configuration
├── MANIFEST.in             # Package manifest
├── LICENSE.txt             # MIT License
├── README.md               # Project documentation (English)
├── README-CN.md            # Project documentation (Chinese)
├── README.en.md            # Project documentation (English)
├── README copy.md          # README template
├── uv.lock                 # Dependency lock file
├── __pycache__/           # Python cache directory
├── images/                # Image resources
│   └── logo.png           # Project logo
├── available_domains.txt   # Default output file (generated after run)
└── .dcheck_progress.json  # Progress file (generated with checkpoint)

Configuration Options

Command Line Arguments

Parameter Type Default Description
pattern String - Domain pattern (supports trailing wildcard *)
--tld String com Top-level domain
--max Integer Required Maximum domain length
--min Integer Equal to max Minimum domain length
--rate Float 50.0 Maximum requests per second (0 for unlimited)
--concurrency Integer 15 Number of concurrent workers
--timeout Float 10.0 HTTP request timeout (seconds)
--charset String a-z Character set for wildcard expansion
--retries Integer 2 Number of retries for failed requests
--output String available_domains.txt Output file for results
--wordlist String - Path to wordlist file
--resume Boolean False Enable checkpoint/resume
--progress-file String .dcheck_progress.json Progress file path
--shuffle Boolean False Randomize check order
--no-progress Boolean False Disable progress bar

Performance Recommendations

  • Concurrency: 15-30 concurrent workers are suitable for most network environments
  • Request Rate: Recommend 10-100 requests/second to avoid being rate-limited
  • Timeout: Increase to 15-30 seconds for slower networks
  • Retries: Increase to 3-5 for unstable networks

Technical Architecture

Core Components

  1. Asynchronous Network Layer: High-concurrency HTTP requests based on aiohttp
  2. RDAP Protocol: Uses standard RDAP interface to query domain registration information
  3. Progress Management: Implements checkpoint/resume and real-time progress display
  4. Rate Control: Prevents requests from being too fast and getting server-limited
  5. Result Processing: Automatic classification and saving of check results

Workflow

graph TD
    A[Parse Command Arguments] --> B{Choose Mode}
    B -->|Pattern Match| C[Generate Domain List]
    B -->|Wordlist| D[Load Wordlist File]
    C --> E[Initialize Async Session]
    D --> E
    E --> F[Create Worker Pool]
    F --> G[Concurrent Domain Check]
    G --> H[RDAP Query]
    H --> I{Domain Status}
    I -->|404| J[Mark as Available]
    I -->|200| K[Mark as Registered]
    I -->|Error| L[Mark as Error]
    J --> M[Save to File]
    K --> N[Update Statistics]
    L --> N
    M --> O[Show Progress]
    N --> O
    O --> P{More Domains?}
    P -->|Yes| G
    P -->|No| Q[Complete and Cleanup]
Loading

Contributors

Thanks to all developers who have contributed to this project!

How to Contribute

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Versioning

This project uses SemVer for versioning. For available versions, see the Releases.

Changelog

  • v0.1.0 - Initial release
    • Basic domain checking functionality
    • Pattern matching and wordlist support
    • Asynchronous concurrent processing
    • Checkpoint/resume functionality

License

This project is licensed under the MIT License - see the LICENSE.txt file for details.

FAQ

Q: Why do some domain checks fail?

A: Possible reasons include network timeouts, temporary RDAP server unavailability, or non-compliant domain formats. The tool will automatically retry failed requests.

Q: How to improve checking speed?

A: You can appropriately increase the --concurrency and --rate parameter values, but be careful not to set them too high to avoid being server-limited.

Q: Which top-level domains are supported?

A: Supports all top-level domains registered in the RDAP system, including .com, .net, .org, .cn, etc.

Q: What is the result file format?

A: The output file is in plain text format, one available domain per line, convenient for further processing.


If this project helps you, please give it a ⭐

About

A high-performance asynchronous domain availability checker with pattern matching, wordlist support, and checkpoint/resume functionality

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages