⚙️
Домены

API доменов: автоматизация регистрации и управления DNS

06.11.2026
← Все статьи

Когда доменов немного, всё удобно делать в панели вручную: найти домен, купить, прописать серверы имён, добавить DNS-записи. Но когда клиентов больше сотни или сервис должен автоматически создавать домен или поддомен для каждого нового клиента, ручная работа становится медленной и подверженной ошибкам. Здесь помогает API доменов: программа напрямую общается с регистратором или DNS-сервером и выполняет одни и те же действия без участия человека. Разберём, что можно автоматизировать, какие протоколы используются и как построить систему безопасно.

Какие операции доступны через API

API доменов — это, по сути, программный вариант действий, которые обычно выполняются в панели. Самые частые операции:

Регистраторы предоставляют эти возможности двумя способами. Первый — протокол EPP: он работает между реестром и аккредитованными регистраторами, построен на XML и требует отдельного подключения, сертификата и договора. Второй — собственный REST- или JSON-API регистратора: он рассчитан на реселлеров и разработчиков, работает через обычные HTTPS-запросы и использует токен доступа. Для малого и среднего бизнеса почти всегда подходит второй вариант.

Проверка доступности и регистрация

Любой автоматический заказ начинается с проверки доступности. В примере используется условный адрес api.misol.uz, поскольку адрес и формат запросов у каждого регистратора свои. В реальном проекте берите параметры из документации своего регистратора:

# Проверка доступности нескольких доменов (адрес условный, для примера)
curl -s -X POST https://api.misol.uz/v1/domains/check \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domains": ["example.uz", "example.com"]}'

Для независимой проверки можно использовать RDAP. Для международных доменов RDAP-сервер обычно возвращает 404, если домен не найден, но это не гарантирует, что он свободен: имя может быть зарезервировано или стоять в очереди на удаление. Поэтому RDAP — только дополнительная проверка, а окончательное решение должно опираться на ответ API регистратора:

# 404 - записи в реестре нет (возможно, свободен), 200 - занят
curl -sL -o /dev/null -w "%{http_code}\n" https://rdap.org/domain/example.com

Важное правило: прежде чем списывать деньги с клиента, убедитесь, что домен действительно свободен, и дождитесь подтверждения успешной регистрации. Регистрация часто асинхронна: то, что API принял запрос, ещё не значит, что домен ваш. Если статус «в ожидании», запрашивайте его повторно через интервалы или получайте уведомление через webhook, если регистратор это поддерживает. При отказе в регистрации система должна автоматически вернуть деньги клиенту или показать заказ администратору.

Повторные запросы и устойчивость к ошибкам

Обрывы сети бывают в любой интеграции. Если программа отправила запрос на регистрацию и соединение оборвалось до ответа, она повторит запрос, и домен может быть оплачен дважды. Чтобы этого избежать, многие API поддерживают ключ идемпотентности: второй запрос с тем же ключом не выполняет новое действие, а возвращает результат первого. В примере на Python показан этот подход и растущая пауза между попытками:

import os, time, uuid, requests

API = "https://api.misol.uz/v1"
HEAD = {"Authorization": f"Bearer {os.environ['API_TOKEN']}"}

def register(domain, contact_id, years=1):
    key = str(uuid.uuid4())  # один и тот же запрос не выполнится дважды
    for attempt in range(3):
        r = requests.post(f"{API}/domains", headers={**HEAD, "Idempotency-Key": key},
                          json={"domain": domain, "years": years, "contact": contact_id},
                          timeout=30)
        if r.status_code < 500:
            r.raise_for_status()
            return r.json()
        time.sleep(2 ** attempt)
    raise RuntimeError("API не ответил")

Обратите внимание: повтор выполняется только при ошибках сервера (5xx). При неверных параметрах или нехватке баланса повтор бесполезен, такие ошибки нужно сразу записать в лог и показать человеку. Проверьте в документации, поддерживает ли регистратор заголовок Idempotency-Key; если нет, подобную защиту придётся строить в своей базе через статус заказа.

Автоматизация DNS-записей

Потребность в автоматизации DNS часто даже больше, чем в автоматической регистрации. Например, платформа для учебного центра в Ташкенте создаёт для каждого филиала поддомен вида chilonzor.misol.uz. Для поддомена не нужно покупать новый домен, достаточно добавить запись в DNS-зону. Если DNS у регистратора или хостинг-провайдера, это делается через их API, а если у вас свой сервер BIND — через динамическое обновление, защищённое ключом TSIG:

# Создание ключа TSIG (BIND 9)
tsig-keygen -a hmac-sha256 deploy-key > /etc/bind/keys/deploy.key

# Замена A-записи
nsupdate -k /etc/bind/keys/deploy.key <<'EOF'
server ns1.misol.uz
zone misol.uz
update delete shop.misol.uz. A
update add shop.misol.uz. 300 A 203.0.113.10
send
EOF

# Проверка результата
dig +short shop.misol.uz @ns1.misol.uz

Чтобы динамическое обновление работало, в настройках зоны этому ключу должно быть разрешено обновление, например через директиву update-policy или allow-update в BIND. Давайте ключу права только на нужную зону или даже только на определённые имена. Для автоматически меняющихся записей ставьте короткий TTL, например 300 секунд, для постоянных — длиннее.

Безопасность: токены, права и логи

Токен API доменов — это ключ ко всем вашим доменам и балансу. Никогда не пишите его в коде и не храните в Git-репозитории: держите токен в переменной окружения или хранилище секретов. Если регистратор позволяет ограничить доступ по IP, разрешите обращения к API только с адреса вашего сервера. Давайте токену только необходимые права: скрипту, обновляющему DNS-записи, не нужно право на трансфер домена или смену контактов.

Записывайте в лог каждый вызов API, особенно связанные с деньгами, вместе со временем, параметрами и ответом, но не записывайте сам токен. При проблеме именно эти записи помогут восстановить картину. Соблюдайте также лимиты запросов (rate limit): при слишком частых обращениях вас могут временно заблокировать.

Внедрение по шагам

Не спешите автоматизировать всё сразу. Начните с операций чтения: проверки доступности и получения дат окончания. Затем подключите обновление DNS-записей и только в конце — регистрацию и продление, при которых списываются деньги. Если регистратор предлагает тестовую среду (sandbox), проверяйте каждую новую функцию сначала там.

Клиенты sayt.uz управляют доменами, DNS и автопродлением в кабинете, а о возможностях интеграции через API можно спросить в техподдержке. С каким бы провайдером вы ни работали, сохраняйте возможность ручного управления рядом с автоматикой: даже если API временно недоступен, важный домен должно быть можно продлить, а DNS-запись — исправить.

Похожие статьи

🔍 Проверка DNS с помощью dig и nslookup: практическое руководство 📊 Статистика и тренды доменной зоны .uz: на что смотреть в 2026 году ⏰ Забыли продлить домен: что делать в первые 72 часа 🔗 Отдельный домен для коротких ссылок: брендированные линки
🌐 Язык
🇺🇿 O'zbek 🇺🇿 Ўзбек 🇷🇺 Русский ✓ 🇬🇧 English