Привет. Порой хочется посмотреть, какие субдомены торчат у твоего проекта, особенно если инфраструктуру собирали годами, документацию вёл домовой, а предыдущий админ уже разводит пчёл.

Есть такая пепяка — crt.name, отдаёт известные ей имена по основному домену.

Работает в том числе за счёт Certificate Transparency — публичных журналов сертификатов. Имена из сертификатов можно найти в этих журналах, поэтому отдельный сертификат на super-secret-admin.example.com оставляет вполне публичный след. Название секретное, а посмотреть может любой желающий.

Дёргаем апишку одной командой

curl -fsS 'https://crt.name/v1/search?apex=example.com'

Вместо example.com подставляешь свой основной домен, без https://, путей и прочей требухи. Для example.co.uk указываешь именно example.co.uk, а не co.uk или www.example.co.uk: параметру apex нужен регистрируемый домен, он же eTLD+1.

По умолчанию получишь текстовый список, одно имя на строку. В выдаче может оказаться и сам основной домен — это не ошибка. Запрос идёт к индексу crt.name: сама эта команда не перебирает DNS и не подключается к найденным серверам.

Можно сразу сохранить список в файл:

curl -fsS 'https://crt.name/v1/search?apex=example.com' \
  -o subdomains.txt

Если нужен JSON или даты

Если нужен JSON, добавляем параметр format=json:

curl -fsS 'https://crt.name/v1/search?apex=example.com&format=json'

В ответе — массив объектов с полем sub, а не просто массив строк. Вот первые три объекта из проверенной выдачи для example.com:

[
  {"sub": "example.com"},
  {"sub": "dummy-host.example.com"},
  {"sub": "xri.example.com"}
]

А если интересует первое наблюдение имени в данных сервиса, добавляем dates=1:

curl -fsS 'https://crt.name/v1/search?apex=example.com&dates=1'

Получится две колонки: имя и время первого наблюдения, разделённые табуляцией. Суффикс Z у времени означает UTC. Это не дата создания субдомена и не гарантия, что он существует сейчас.

Параметры можно совместить:

curl -fsS 'https://crt.name/v1/search?apex=example.com&format=json&dates=1'

Тогда к полю sub добавится first_seen. Кавычки вокруг URL лучше не терять: без них оболочка воспримет & как запуск команды в фоне, а не часть запроса.

Где заканчивается магия

На момент проверки, 16 октября 2026 года, сервис заявляет 100 запросов в сутки с одного IP, ключ и регистрация не нужны. В проверенном ответе есть и заголовок x-ratelimit-limit: 100. Не ставь команду в бесконечный цикл. Если получишь HTTP 429, остановись: долбить API повторными запросами тут не поможет.

Но есть нюанс. Обещать «все субдомены, на которые когда-либо выпускались сертификаты» я бы не стал. Сервис отдаёт то, что накопил в своём индексе, причём использует и другие источники, поэтому выдача не ограничивается сертификатами. Старые имена тоже сохраняются.

Ещё сертификат на *.example.com сам по себе не раскроет, какие именно хосты прячутся под этой маской. Пустая выдача тоже не доказывает, что субдоменов нет: возможно, сервис просто о них не знает.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Найденный адрес ещё не означает, что там сейчас работает сайт. Может, ты этот стейдж три года назад снёс, а имя осталось в истории.

Для ревизии собственного хозяйства штука полезная, можно вспомнить забытые тестовые окружения и сервисы, которые давно пора проверить.

Потыкай свой домен, вдруг обнаружишь ещё один продакшен, о котором никто не знает.


Проверено по описанию и API crt.name. О том, как устроены журналы сертификатов, — Certificate Transparency. В примерах используется зарезервированный для документации домен example.com.