Проверка домена (Verified host)
Notifly умеет сканировать порты произвольного хоста. Для чужого хоста сканер работает бережно — маленькими порциями и с низким параллелизмом. Если вы подтвердите владение хостом, его скан пойдёт в ускоренном режиме. Verified host — это запись «пользователь X владеет хостом Y» со сроком действия 365 дней.
| Хост | Портов за проход сканера | Параллельных подключений |
|---|---|---|
| не подтверждён | до 50 | 6 |
| подтверждён | до 350 | 16 |
Сканер проходит по задачам раз в минуту, поэтому на практике подтверждение
ускоряет скан примерно в 7 раз и во столько же раз уменьшает расход дневного
лимита portScansPerDay (он считает порции). Полный скан 1–65535 без
подтверждения занимает около суток — с подтверждением около 3 часов.
Запись привязана к точной строке хоста: подтверждение example.com не
распространяется на www.example.com или на IP-адрес сервера. Указывайте в
скане ровно тот host, который подтверждали.
Два способа подтверждения
Заголовок раздела «Два способа подтверждения»Подтвердить владение можно одним из двух методов (method):
method | Что нужно разместить | Где проверяет Notifly |
|---|---|---|
dns | DNS 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 уже есть действующая (непросроченная) запись — возвращается в поле host | 200 |
verified | хост приватный, запись создана автоматически (method: "auto-private") — в поле host | 201 |
pending | публичный хост — выданы token и instruction, ждём вашего шага и check | 200 |
До успешного check сервер ничего не сохраняет: токен нужно запомнить на
клиенте и передать обратно в /verified-host/check. Повторный start выдаст
уже новый токен.
Как подтвердить домен
Заголовок раздела «Как подтвердить домен»Шаг 1 — начать верификацию
Заголовок раздела «Шаг 1 — начать верификацию»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).
Шаг 2 — разместить доказательство
Заголовок раздела «Шаг 2 — разместить доказательство»Метод 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Шаг 3 — запустить проверку
Заголовок раздела «Шаг 3 — запустить проверку»Передайте 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.
REST API
Заголовок раздела «REST API»Авторизация — заголовок 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: подтверждённые хосты сканируются в ускоренном режиме.
- Монитор портов и мониторы — постоянный контроль портов и доступности хостов (подтверждение им не нужно).