Привет. Порой хочется посмотреть, какие субдомены торчат у твоего проекта, особенно если инфраструктуру собирали годами, документацию вёл домовой, а предыдущий админ уже разводит пчёл.
Есть такая пепяка — 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 сам по себе не раскроет, какие именно хосты прячутся под этой маской. Пустая выдача тоже не доказывает, что субдоменов нет: возможно, сервис просто о них не знает.
Для ревизии собственного хозяйства штука полезная, можно вспомнить забытые тестовые окружения и сервисы, которые давно пора проверить.
Потыкай свой домен, вдруг обнаружишь ещё один продакшен, о котором никто не знает.
Проверено по описанию и API crt.name. О том, как устроены журналы сертификатов, — Certificate Transparency. В примерах используется зарезервированный для документации домен example.com.








Комментарии