{"id":27899490,"url":"https://github.com/xuemian168/domain-scanner","last_synced_at":"2026-01-19T21:46:25.127Z","repository":{"id":289570569,"uuid":"971698957","full_name":"xuemian168/domain-scanner","owner":"xuemian168","description":"【域名扫描器】一个用Go语言编写的强大且灵活的域名注册可用性检查扫描工具 A powerful and flexible domain name availability checker written in Go. This domain scanner helps you find available domain based on various patterns and filters.","archived":false,"fork":false,"pushed_at":"2025-10-27T00:04:12.000Z","size":170,"stargazers_count":499,"open_issues_count":0,"forks_count":71,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-10-27T02:23:08.163Z","etag":null,"topics":["domain","domain-scanner","scanner","tld"],"latest_commit_sha":null,"homepage":"https://zli.li/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xuemian168.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-04-23T23:34:49.000Z","updated_at":"2025-10-27T00:18:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"268cc7c1-63b2-4311-8809-95516c6962a7","html_url":"https://github.com/xuemian168/domain-scanner","commit_stats":null,"previous_names":["xuemian168/domain-scanner"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/xuemian168/domain-scanner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xuemian168%2Fdomain-scanner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xuemian168%2Fdomain-scanner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xuemian168%2Fdomain-scanner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xuemian168%2Fdomain-scanner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xuemian168","download_url":"https://codeload.github.com/xuemian168/domain-scanner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xuemian168%2Fdomain-scanner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28578956,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T17:42:58.221Z","status":"ssl_error","status_checked_at":"2026-01-19T17:40:54.158Z","response_time":67,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["domain","domain-scanner","scanner","tld"],"created_at":"2025-05-05T19:33:59.145Z","updated_at":"2026-01-19T21:46:25.111Z","avatar_url":"https://github.com/xuemian168.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"English | [中文](./README.zh.md)\n\n# Domain Scanner\n\n[![Go Version](https://img.shields.io/badge/go-1.22-blue.svg)](https://golang.org)\n[![License](https://img.shields.io/badge/license-AGPL--3.0-green.svg)](LICENSE)\n[![GitHub Stars](https://img.shields.io/github/stars/xuemian168/domain-scanner.svg?style=social)](https://github.com/xuemian168/domain-scanner/stargazers)\n[![GitHub Forks](https://img.shields.io/github/forks/xuemian168/domain-scanner.svg?style=social)](https://github.com/xuemian168/domain-scanner/network/members)\n[![GitHub Issues](https://img.shields.io/github/issues/xuemian168/domain-scanner.svg)](https://github.com/xuemian168/domain-scanner/issues)\n[![GitHub Pull Requests](https://img.shields.io/github/issues-pr/xuemian168/domain-scanner.svg)](https://github.com/xuemian168/domain-scanner/pulls)\n\nA powerful domain name availability checker written in Go. This tool helps you find available domain names by checking multiple registration indicators and providing detailed verification results.\n\n### Web Version: [zli.li](https://zli.li)\n\n![Star History Chart](https://api.star-history.com/svg?repos=xuemian168/domain-scanner\u0026type=Date)\n\n## Features\n\n- **Dictionary Input Support**: Generate domains from word lists for practical domain checking\n  - Read dictionary files (one word per line) for word-based domain generation\n  - Smart mode detection between dictionary and pattern-based generation\n  - Regex filtering support for dictionary words\n- **Multi-method Verification**: Checks domain availability using multiple methods:\n  - DNS records (NS, A, MX)\n  - WHOIS information\n  - SSL certificate verification\n- **Advanced Filtering**: Filter domains using powerful regular expressions with regexp2 support\n  - Backreferences for patterns like repeating characters\n  - Lookarounds and Unicode properties\n  - Perl-compatible regex syntax\n- **Security Enhanced**: Built-in protection against ReDoS attacks\n- **Performance Warning System**: Intelligent warnings for large domain scans with detailed impact analysis\n- **Smart Scan Estimation**: Automatic calculation of scan time, network load, and resource usage\n- **User Safety Protection**: Prevents accidental execution of multi-day scan operations\n- **Concurrent Processing**: Multi-threaded domain checking with configurable worker count\n- **Smart Error Handling**: Automatic retry mechanism for failed queries\n- **Detailed Results**: Shows verification signatures for registered domains\n- **Progress Tracking**: Real-time progress display with current/total count\n- **File Output**: Saves results to separate files for available and registered domains\n- **Configurable Delay**: Adjustable delay between queries to prevent rate limiting\n\n## Installation\n\n```bash\ngit clone https://github.com/xuemian168/domain-scanner.git\ncd domain-scanner\ngo mod download\n```\n\n## Usage\n\n```bash\ngo run main.go [options]\n```\n\n### Options\n\n- `-l int`: Domain length (default: 3)\n- `-s string`: Domain suffix (default: .li)\n- `-p string`: Domain pattern:\n  - `d`: Pure numbers (e.g., 123.li)\n  - `D`: Pure letters (e.g., abc.li)\n  - `a`: Alphanumeric (e.g., a1b.li)\n- `-r string`: Regex filter for domain name prefix (supports advanced regexp2 features)\n- `-dict string`: Dictionary file path (one word per line) for word-based domain generation\n- `-delay int`: Delay between queries in milliseconds (default: 1000)\n- `-workers int`: Number of concurrent workers (default: 10)\n- `-show-registered`: Show registered domains in output (default: false)\n- `-force`: Skip performance warnings for large domain sets (default: false)\n- `-h`: Show help information\n\n### Examples\n\n1. Check 3-letter .li domains with 20 workers:\n```bash\ngo run main.go -l 3 -s .li -p D -workers 20\n```\n\n2. Check domains with custom delay and workers:\n```bash\ngo run main.go -l 3 -s .li -p D -delay 500 -workers 15\n```\n\n3. Show both available and registered domains:\n```bash\ngo run main.go -l 3 -s .li -p D -show-registered\n```\n\n4. Use regex filter to match domain prefix:\n```bash\ngo run main.go -l 3 -s .li -p D -r \"^[a-z]{2}[0-9]$\"\n```\n\n5. Find domains starting with specific letters:\n```bash\ngo run main.go -l 5 -s .li -p D -r \"^abc\"\n```\n\n6. Use dictionary file for word-based domain checking:\n```bash\ngo run main.go -dict words.txt -s .com\n```\n\n7. Use dictionary with regex filter for precise matching:\n```bash\ngo run main.go -dict words.txt -s .com -r \"^[a-z]{4,8}$\"\n```\n\n8. Use advanced regexp2 features (backreferences for repeating patterns):\n```bash\n# Find domains with pattern like \"aaa\", \"bbb\", \"ccc\" (same letter repeated)\ngo run main.go -l 3 -s .li -p D -r \"^(.)\\1{2}$\"\n\n# Find domains with pattern like \"abab\", \"cdcd\" (two letters repeated)\ngo run main.go -l 4 -s .li -p D -r \"^(..)\\1$\"\n```\n\n9. Skip performance warning for large domain sets:\n```bash\ngo run main.go -l 7 -s .li -p D -force\n```\n\n## Performance Warning System\n\nThe tool includes an intelligent performance warning system to protect users from accidentally running extremely large scans:\n\n### When Warnings Are Triggered\n- Automatically triggered when domain length (`-l`) is greater than 5\n- Displays detailed impact analysis before starting the scan\n\n### Warning Information Provided\n- **Domain Count**: Exact number of domains to be scanned\n- **Time Estimation**: Calculated scan duration based on your settings\n- **Network Load**: Total number of network requests that will be made\n- **Resource Impact**: Memory and CPU usage warnings\n\n### Example Warning Output\n```\n⚠️  PERFORMANCE WARNING ⚠️\n═══════════════════════════════════════════════════════\nYou are about to scan 308915776 domains with the following settings:\n• Pattern: D (charset size: 26)\n• Length: 6 characters\n• Workers: 10\n• Delay: 1000 ms between queries\n\n📊 Estimated Impact:\n• Scan time: ~357.0 days (8580.0 hours)\n• Network requests: 308915776 total\n• Memory usage: High (processing 308915776 domains)\n\n💡 Recommendations:\n• Use regex filter (-r) to narrow down the search\n• Consider shorter domain length (-l)\n• Increase workers (-workers) for faster processing\n• Decrease delay (-delay) if your network can handle it\n• Use -force flag to skip this warning next time\n═══════════════════════════════════════════════════════\n\nDo you want to continue? (y/N):\n```\n\n### Bypassing Warnings\nUse the `-force` flag to skip performance warnings:\n```bash\ngo run main.go -l 6 -s .com -p D -force\n```\n\n## Output Format\n\n### Progress Display\n```\n[1/100] Domain abc.com is AVAILABLE!\n[2/100] Domain xyz.com is REGISTERED [DNS_NS, WHOIS]\n[3/100] Domain 123.com is REGISTERED [DNS_A, SSL]\n```\n\n### Verification Signatures\n- `DNS_NS`: Domain has name server records\n- `DNS_A`: Domain has IP address records\n- `DNS_MX`: Domain has mail server records\n- `WHOIS`: Domain is registered according to WHOIS\n- `SSL`: Domain has a valid SSL certificate\n\n### Output Files\n- Available domains: `available_domains_[pattern]_[length]_[suffix].txt`\n- Registered domains: `registered_domains_[pattern]_[length]_[suffix].txt`\n\n## Advanced Regex Features\n\nThis tool uses the powerful `regexp2` library, providing advanced regex capabilities:\n\n### Backreferences\nMatch previously captured groups using `\\1`, `\\2`, etc. All regex patterns match domain prefix only:\n- `^(.)\\1{2}$` - Matches domain prefixes like \"aaa\", \"bbb\" (same character repeated 3 times)\n- `^(..)\\1$` - Matches domain prefixes like \"abab\", \"cdcd\" (two characters repeated)\n- `^(.)(..)\\1\\2$` - More complex backreference patterns\n\n### Safety Features\n- **ReDoS Protection**: Built-in timeout protection (100ms) prevents catastrophic backtracking\n- **Input Validation**: Automatically rejects potentially dangerous regex patterns\n- **Complexity Limits**: Maximum 200 characters, limited quantifiers\n- **Error Handling**: Graceful handling of regex matching errors\n\n### Security Guidelines\n⚠️ **Important**: Be careful with complex regex patterns to avoid performance issues.\n\n**Safe patterns:**\n```bash\n# Simple character classes and quantifiers\n-r \"^[a-z]{2}[0-9]$\"\n-r \"^(test|demo|temp)\"\n-r \"^[a-z]*[0-9]+$\"\n```\n\n**Potentially dangerous patterns (automatically blocked):**\n```bash\n# These patterns are blocked for security\n-r \"(.*)*\"     # Nested quantifiers\n-r \"(.+)+\"     # Catastrophic backtracking\n-r \"(a+)+\"     # ReDoS attack pattern\n```\n\n## Error Handling\n\nThe tool includes robust error handling:\n- Automatic retry mechanism for WHOIS queries (3 attempts)\n- Timeout settings for SSL certificate checks\n- Regex timeout protection (100ms) against ReDoS attacks\n- Input validation for regex patterns\n- Graceful handling of network issues\n- Detailed error reporting\n\n## Contributing\n\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)\n\nWe welcome contributions from the community! Whether you're fixing bugs, adding new features, improving documentation, or reporting issues, your help is appreciated.\n\n### How to Contribute\n\n1. **Fork the Repository**: Create your own copy of the project\n2. **Create a Feature Branch**: Work on your changes in a dedicated branch\n3. **Make Your Changes**: Follow our coding guidelines and test thoroughly\n4. **Submit a Pull Request**: Describe your changes and link any related issues\n\nFor detailed contribution guidelines, development setup, and coding standards, please read our [CONTRIBUTING.md](./CONTRIBUTING.md) file.\n\n### Quick Start for Contributors\n\n```bash\n# Fork and clone the repository\ngit clone https://github.com/YOUR_USERNAME/domain-scanner.git\ncd domain-scanner\n\n# Set up development environment\ngo mod download\ngo build -o domain-scanner main.go\n\n# Create a feature branch\ngit checkout -b feature/your-feature-name\n\n# Make changes and test\ngo run main.go -l 2 -s .test -p D\n\n# Commit and push\ngit commit -m \"feat: your feature description\"\ngit push origin feature/your-feature-name\n```\n\n## License\n\n[![AGPL-3.0 License](https://img.shields.io/badge/License-AGPL--3.0-green.svg)](LICENSE)\n\nThis project is licensed under the AGPL-3.0 License - see the [LICENSE](LICENSE) file for details. \n\n## Recent Updates\n\n### v1.3.4 - 2025-09-02\n- **Dictionary Input**: New `-dict` parameter for word-based domain generation from text files\n- **Smart Mode Detection**: Intelligent switching between dictionary and pattern-based generation\n- **Enhanced Flexibility**: Support for regex filtering on dictionary words for precise domain matching\n- **Practical Usage**: Enable checking of real-world domains using common word lists\n- **Documentation**: Comprehensive examples and usage guidelines for dictionary mode\n\n### v1.3.3 - 2025-09-02\n- **Performance Warnings**: Intelligent warnings for large domain scans with detailed impact analysis\n- **User Safety**: Protection against accidental multi-day scan operations with confirmation prompts\n- **Windows Fix**: Resolved critical release binary execution issues causing empty results\n- **Stability**: Fixed concurrent processing race conditions across all platforms\n\n### v1.3.2 - 2025-08-26\n- **Security**: Added ReDoS attack protection with regex timeout (100ms)\n- **Security**: Implemented regex complexity validation and dangerous pattern detection\n- **Performance**: Restored memory-efficient streaming architecture\n- **Enhancement**: Upgraded to regexp2 for advanced regex features (backreferences, lookarounds)\n- **Enhancement**: Added comprehensive regex safety guidelines and examples\n- **Stability**: Improved error handling for regex matching operations\n\n### v1.3.1 - 2025-08-24\n- **Added**: Multiple WHOIS server support for improved reliability\n- **Added**: Exponential backoff retry mechanism for WHOIS queries  \n- **Added**: Comprehensive reserved domain indicators (139 patterns)\n- **Performance**: Reduced false positive rate by 67% (15% → 5%)\n- **Performance**: Improved WHOIS query success rate by 23% (~75% → ~92%)\n\n### v1.3.0\n- **Performance Optimizations**: Significantly improved domain checking speed\n- **Bug Fixes**: Fixed WHOIS parsing for .de domains and other TLDs\n- **Code Quality**: Refactored internal architecture for better maintainability\n\n📋 **[View Complete Changelog](docs/CHANGELOG.md)** - See detailed version history, technical improvements, and all changes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxuemian168%2Fdomain-scanner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxuemian168%2Fdomain-scanner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxuemian168%2Fdomain-scanner/lists"}