A high-performance asynchronous domain availability checker supporting pattern matching and wordlist modes with checkpoint/resume functionality.
A fast and efficient domain availability checking tool
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
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.
- 🚀 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
- Python 3.8 or higher
- Stable internet connection
- Sufficient disk space for storing results and progress files
pip install rchecker- Clone the repository
git clone https://github.com/Rain-kl/RChecker.git
cd RChecker- Install in development mode
pip install -e .Or using uv (recommended):
uv sync- Run the tool
rchecker --helpCheck 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# Check single domain
rchecker "example" --max 7 --min 7 --tld com# 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# 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# Enable checkpoint/resume functionality
rchecker "data*" --max 6 --resume --progress-file my_progress.json
# Randomize check order
rchecker "api*" --max 5 --shuffle# Specify output file
rchecker "web*" --max 5 --output available_web_domains.txt
# Disable progress bar
rchecker "blog*" --max 6 --no-progressrchecker download list# 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| 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+ |
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)
| 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 |
- 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
- Asynchronous Network Layer: High-concurrency HTTP requests based on
aiohttp - RDAP Protocol: Uses standard RDAP interface to query domain registration information
- Progress Management: Implements checkpoint/resume and real-time progress display
- Rate Control: Prevents requests from being too fast and getting server-limited
- Result Processing: Automatic classification and saving of check results
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]
Thanks to all developers who have contributed to this project!
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project uses SemVer for versioning. For available versions, see the Releases.
- v0.1.0 - Initial release
- Basic domain checking functionality
- Pattern matching and wordlist support
- Asynchronous concurrent processing
- Checkpoint/resume functionality
This project is licensed under the MIT License - see the LICENSE.txt file for details.
A: Possible reasons include network timeouts, temporary RDAP server unavailability, or non-compliant domain formats. The tool will automatically retry failed requests.
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.
A: Supports all top-level domains registered in the RDAP system, including .com, .net, .org, .cn, etc.
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 ⭐