Files
2026-08-03 22:59:51 +07:00

69 lines
3.2 KiB
Markdown

# domain_check
Скрипт для отслеживания освобождения доменов. Периодически проверяет список доменов через `whois` и присылает отчёт на почту.
## Требования
- Python 3
- Системная утилита `whois` (в macOS уже установлена: `/usr/bin/whois`)
## Настройка
Отредактируйте `config.json`:
```json
{
"domains": ["example.com", "example.net"],
"check_interval_minutes": 60,
"smtp": {
"host": "smtp.gmail.com",
"port": 587,
"use_tls": true,
"username": "your_account@gmail.com",
"password": "app_password_here",
"from": "your_account@gmail.com",
"to": ["your_account@gmail.com"]
}
}
```
- `domains` — список доменов для отслеживания.
- `check_interval_minutes` — как часто проверять (в минутах). Конфиг перечитывается перед каждой проверкой, так что список доменов можно менять без перезапуска скрипта.
- `smtp.use_tls``true` для STARTTLS (обычно порт 587), `false` для SSL (обычно порт 465).
- `smtp.password` — для Gmail нужен app password, а не обычный пароль аккаунта.
## Запуск
Разовая проверка:
```bash
python3 domain_check.py --once
```
Постоянный мониторинг (проверяет и спит `check_interval_minutes`, повторяя бесконечно; останавливается по Ctrl+C):
```bash
python3 domain_check.py
```
Свой путь к конфигу:
```bash
python3 domain_check.py --config /path/to/config.json
```
## Как определяется статус
Скрипт разбирает ответ `whois`:
- Если в ответе встречаются фразы вроде `no match`, `not found`, `no data found`, `status: available` и т.п. — домен считается **свободен**.
- Иначе домен считается **занят**, и скрипт пытается найти дату истечения регистрации (`expiry date`, `expiration date`, `registry expiry date`, `paid-till`, `renewal date`) — тогда в письме будет «занят до `<дата>`».
- Если `whois` не ответил или дату не удалось разобрать, домен помечается как «занят» без даты или «не удалось проверить».
Формат ответов whois различается между регистраторами и TLD, поэтому распознавание — эвристическое и не гарантирует 100% точность для всех зон.
## Письмо
- Тема: `Проверка доменов`, либо `Проверка доменов (есть свободные)`, если хотя бы один домен свободен.
- Тело: список доменов, для каждого — `свободен`, `занят` или `занят до <дата>`.