Перейти к содержимому

Проверка домена (Verified host)

Notifly умеет сканировать порты произвольного хоста. Для чужого хоста сканер работает бережно — маленькими порциями и с низким параллелизмом. Если вы подтвердите владение хостом, его скан пойдёт в ускоренном режиме. Verified host — это запись «пользователь X владеет хостом Y» со сроком действия 365 дней.

ХостПортов за проход сканераПараллельных подключений
не подтверждёндо 506
подтверждёндо 35016

Сканер проходит по задачам раз в минуту, поэтому на практике подтверждение ускоряет скан примерно в 7 раз и во столько же раз уменьшает расход дневного лимита portScansPerDay (он считает порции). Полный скан 1–65535 без подтверждения занимает около суток — с подтверждением около 3 часов.

Запись привязана к точной строке хоста: подтверждение example.com не распространяется на www.example.com или на IP-адрес сервера. Указывайте в скане ровно тот host, который подтверждали.

Подтвердить владение можно одним из двух методов (method):

methodЧто нужно разместитьГде проверяет Notifly
dnsDNS TXT-запись _notifly-verify.<host> со значением = токенрезолв TXT-записей имени _notifly-verify.<host>
httpфайл /.well-known/notifly-verify.txt, единственная строка = токенGET https://<host>/.well-known/notifly-verify.txt, при неудаче — http://

Токен — случайный UUID, который Notifly выдаёт на шаге start. При проверке значение каждой TXT-записи (или содержимое файла) сравнивается с токеном после обрезки пробелов, поэтому лишние пробелы и перевод строки в конце не мешают. Для dns достаточно, чтобы токен совпал с любой из TXT-записей имени.

Если хост резолвится только в приватные адреса, Notifly не проверяет его по сети, а сразу создаёт запись с методом auto-private — и на /verified-host/start, и на /verified-host/check, и при создании скана такого хоста.

Приватными считаются:

  • имя localhost;
  • loopback 127.0.0.0/8 и ::1/128;
  • RFC 1918 — 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16;
  • link-local 169.254.0.0/16 и fe80::/10;
  • RFC 4193 ULA fc00::/7.

Хост считается приватным, только если ВСЕ его адреса приватные. Если hostname резолвится хотя бы в один публичный адрес, авто-запись не создаётся — нужно подтверждение через DNS или HTTP.

POST /verified-host/start возвращает разный status в зависимости от хоста:

statusКогдаHTTP-код
already_verifiedдля этого host уже есть действующая (непросроченная) запись — возвращается в поле host200
verifiedхост приватный, запись создана автоматически (method: "auto-private") — в поле host201
pendingпубличный хост — выданы token и instruction, ждём вашего шага и check200

До успешного check сервер ничего не сохраняет: токен нужно запомнить на клиенте и передать обратно в /verified-host/check. Повторный start выдаст уже новый токен.

Окно терминала
curl -X POST "$NOTIFLY_URL/verified-host/start" \
-H "Content-Type: application/json" \
-H "X-Notifly-Key: <api-token>" \
-d '{ "host": "example.com", "method": "dns" }'

Ответ для публичного хоста:

{
"status": "pending",
"token": "550e8400-e29b-41d4-a716-446655440000",
"method": "dns",
"host": "example.com",
"instruction": "Create a DNS TXT record: _notifly-verify.example.com with value: 550e8400-e29b-41d4-a716-446655440000"
}

method обязателен и должен быть dns или http (иначе 400).

Метод dns — создайте TXT-запись в зоне домена:

_notifly-verify.example.com. IN TXT "550e8400-e29b-41d4-a716-446655440000"

Метод http — положите файл по пути /.well-known/notifly-verify.txt, чтобы он отдавался по адресу:

https://example.com/.well-known/notifly-verify.txt

Содержимое файла — ровно токен, одной строкой:

550e8400-e29b-41d4-a716-446655440000

Передайте host, method и token в check. Для DNS дождитесь распространения записи (TTL может быть несколько минут) перед вызовом:

Окно терминала
curl -X POST "$NOTIFLY_URL/verified-host/check" \
-H "Content-Type: application/json" \
-H "X-Notifly-Key: <api-token>" \
-d '{
"host": "example.com",
"method": "dns",
"token": "550e8400-e29b-41d4-a716-446655440000"
}'

Успех — запись создаётся, возвращается код 201 и сам объект:

{
"id": 42,
"host": "example.com",
"method": "dns",
"verifiedAt": "2026-06-23T10:00:00Z",
"expiresAt": "2027-06-23T10:00:00Z"
}

Если токен не найден (TXT не распространилась, файл недоступен, значение не совпало) — вернётся код 422 с пояснением в поле error, например token not found in TXT records for _notifly-verify.example.com или HTTP 404 from http://example.com/.well-known/notifly-verify.txt. Просто повторите check после исправления — с тем же токеном.

Запись действует 365 дней с момента подтверждения. После этого она пропадает из списка, а хост снова сканируется в обычном (медленном) режиме. Напоминаний об истечении нет — чтобы продлить, пройдите start → check заново. TXT-запись или файл после успешной проверки можно удалить: повторно Notifly их не проверяет.

Список действующих (непросроченных) верификаций пользователя:

Окно терминала
curl "$NOTIFLY_URL/verified-host" \
-H "X-Notifly-Key: <api-token>"
[
{
"id": 42,
"host": "example.com",
"method": "dns",
"verifiedAt": "2026-06-23T10:00:00Z",
"expiresAt": "2027-06-23T10:00:00Z"
}
]

Удалить верификацию (например, если хост больше не ваш):

Окно терминала
curl -X DELETE "$NOTIFLY_URL/verified-host/42" \
-H "X-Notifly-Key: <api-token>"
# → {"ok":true}

Удалить можно только свою запись: чужой или несуществующий id вернёт 404.

Авторизация — заголовок X-Notifly-Key с API-токеном. Базовый URL — $NOTIFLY_URL (https://api.notifly.ru). Ошибки приходят в виде {"error": "..."}.

МетодПутьОписание
GET/verified-hostСписок действующих верификаций пользователя
POST/verified-host/startНачать верификацию: { "host", "method" }, где method = dns или http. Возвращает status (already_verified / verified / pending) и для публичного хоста — token + instruction
POST/verified-host/checkПроверить размещённое доказательство: { "host", "method", "token" }. Успех → 201 и объект записи; неудача → 422 с error
DELETE/verified-host/:idУдалить свою верификацию по id (чужой/несуществующий → 404)

Поля объекта VerifiedHost: id, host, method (dns / http / auto-private), verifiedAt, expiresAt. Токен в выдаче не возвращается.

  • Сканирование портов — единственный потребитель verified-host: подтверждённые хосты сканируются в ускоренном режиме.
  • Монитор портов и мониторы — постоянный контроль портов и доступности хостов (подтверждение им не нужно).