63f49a645a7c7947ff40b7043e7637c14b1bddae
domain_check
Скрипт для отслеживания освобождения доменов. Периодически проверяет список доменов через whois и присылает отчёт на почту.
Требования
- Python 3
- Системная утилита
whois(в macOS уже установлена:/usr/bin/whois)
Настройка
Отредактируйте config.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, а не обычный пароль аккаунта.
Запуск
Разовая проверка:
python3 domain_check.py --once
Постоянный мониторинг (проверяет и спит check_interval_minutes, повторяя бесконечно; останавливается по Ctrl+C):
python3 domain_check.py
Свой путь к конфигу:
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% точность для всех зон.
Письмо
- Тема:
Проверка доменов, либоПроверка доменов (есть свободные), если хотя бы один домен свободен. - Тело: список доменов, для каждого —
свободен,занятилизанят до <дата>.
Languages
Python
100%