Конвертер Punycode / IDN

Конвертируйте интернационализированное доменное имя (содержащее не-ASCII символы — буквы с диакритикой, кириллицу или иероглифы CJK) в его ASCII-совместимую форму Punycode («xn--...»), или конвертируйте домен в формате Punycode обратно в читаемую Unicode-форму — прямо в браузере, с помощью реализации алгоритма Bootstring (RFC 3492) с нуля, того же, что используется в адресной строке любого браузера.

Конвертер Punycode / IDN

DNS был разработан в 1980-х годах с жёстким правилом: метка домена может содержать только ASCII-буквы, цифры и дефисы (правило LDH). Из-за этого было невозможно зарегистрировать домен, использующий буквы любого другого алфавита — кириллицу, греческий, китайский, арабский или даже латиницу с диакритикой вроде «ü» — пока в 2000-х интернационализированные доменные имена (IDNA) не предложили обходной путь: закодировать не-ASCII метку в чисто ASCII-строку с помощью алгоритма Bootstring (RFC 3492) и добавить к ней префикс «xn--», чтобы резолверы и регистраторы могли отличить закодированную метку от обычной. Результат, называемый Punycode, — это то, что на самом деле хранится в DNS и передаётся по сети: «bücher.de» превращается в «xn--bcher-kva.de», — а каждый современный браузер декодирует его обратно в читаемую форму в адресной строке (если только она не выглядит подозрительно — см. заметку о безопасности ниже).

Bootstring работает, разбивая кодовые точки Unicode метки на две группы: все кодовые точки, которые уже являются обычным ASCII, копируются в вывод как есть, за ними следует разделитель «-»; каждая оставшаяся не-ASCII кодовая точка затем кодируется, в порядке появления, как последовательность цифр в 36-ричной системе счисления (a-z, 0-9), которые вместе описывают, какая это кодовая точка и где она находится в строке, используя накопительное смещение от предыдущей позиции. Этот инструмент реализует именно этот алгоритм по опубликованной спецификации — а не обёртку над сторонней библиотекой, — поэтому прозрачно показывает, что именно он обрабатывает, а что нет (см. заметку об ограничениях в FAQ ниже).

У Punycode есть хорошо известный аспект безопасности, который стоит понимать, а не только конвертировать: атака-омограф (или «IDN-спуфинг») регистрирует домен, используя похожие символы из другого алфавита — например, кириллическая «а» (U+0430) визуально неотличима от латинской «a» (U+0061) в большинстве шрифтов, поэтому «аpple.com» с кириллической «а» может отображаться точь-в-точь как «apple.com», оставаясь при этом совершенно другим доменом, закодированным в собственную отдельную строку «xn--». Браузеры смягчают эту угрозу собственными дополнительными эвристиками (показывая необработанную форму «xn--» вместо декодированного Unicode, когда метка подозрительно смешивает алфавиты), которые этот инструмент намеренно НЕ повторяет — это конвертер, а не сканер безопасности. Относитесь к тому, что «домен выглядит правильно», как к более слабому доказательству, чем проверка сертификата или переход по сохранённой закладке — особенно для чего-то чувствительного вроде страницы входа.

Ограничения — прямым текстом: этот инструмент реализует Bootstring из RFC 3492 — преобразование кодовых точек в цифры для одной DNS-метки, — но не полную обработку IDNA2008/UTS-46, которую настоящие браузеры добавляют поверх и вокруг него (приведение регистра Unicode, нормализацию «nameprep», таблицы запрещённых кодовых точек и правила для двунаправленного текста в языках с письмом справа налево). Это значит, что метка с кодовыми точками, которые строгая реализация IDNA отклонила бы, здесь всё ещё может корректно конвертироваться в обе стороны. Это принятое, задокументированное ограничение сфокусированного инструмента-конвертера, а не ошибка в самом шаге Bootstring — при регистрации настоящего домена всегда проходите проверку своего регистратора.

Глоссарий

Punycode
ASCII-кодировка (RFC 3492), представляющая Unicode-метку домена в виде строки, которую может нести DNS, с префиксом «xn--».
IDN
Интернационализированное доменное имя — доменное имя, содержащее символы вне обычного ASCII, что стало возможным в DNS благодаря кодированию Punycode.
Префикс ACE («xn--»)
Префикс ASCII Compatible Encoding, отмечающий метку DNS как закодированную в Punycode, а не как обычную ASCII-метку, которая случайно начинается с этих букв.
Bootstring
Универсальный алгоритм (RFC 3492), частным случаем которого является Punycode — кодирует последовательность кодовых точек в более короткую, чисто ASCII-строку.
Атака-омограф
Техника фишинга, регистрирующая домен с использованием похожих символов из другого алфавита (например, кириллическая «а» вместо латинской «a»), чтобы он визуально напоминал легитимный домен.
Метка DNS
Один сегмент доменного имени, разделённый точками (например, «bücher» и «de» в «bücher.de») — кодирование Punycode применяется к каждой метке отдельно, а не ко всему домену сразу.

Аналог в API

У этого инструмента нет аналога в API нашего сервиса — конвертация Punycode/IDN не является фактом об IP-адресе, поэтому нашему API нечего было бы вернуть здесь. Преобразование выше происходит полностью на вашем устройстве — ничего никуда не отправляется. Если вам нужен именно наш API для поиска информации об IP, он покрывает геолокацию, данные ASN/сети и сигналы угроз/фрода для IP-адреса:

Читать полную документацию по API

Часто задаваемые вопросы

Для чего используется Punycode?
Он позволяет доменному имени содержать не-ASCII символы (латиницу с диакритикой, кириллицу, иероглифы CJK и т.д.), оставаясь при этом валидной ASCII-меткой DNS «под капотом» — именно в такой форме домен фактически хранится и передаётся DNS.
Почему IDN-домен начинается с «xn--»?
«xn--» — это префикс ASCII Compatible Encoding (ACE) — он сообщает резолверам и регистраторам, что всё после него является меткой, закодированной по Bootstring, а не обычной ASCII-меткой, случайно начинающейся с этих букв.
Что такое атака-омограф?
Техника фишинга, регистрирующая домен с символами из другого алфавита, которые выглядят идентично знакомым — например, кириллическая «а» вместо латинской «a», — так что поддельный домен визуально напоминает настоящий, оставаясь при этом совершенно другой строкой в кодировке Punycode.
Реализует ли этот инструмент полную нормализацию IDNA2008/UTS-46?
Нет — только сам алгоритм Bootstring из RFC 3492, без приведения регистра, нормализации nameprep, таблиц запрещённых кодовых точек и правил bidi, которые настоящие браузеры добавляют поверх него. Метка, которую строгая реализация IDNA отклонила бы, здесь всё ещё может корректно конвертироваться; при регистрации настоящего домена всегда проверяйте его через своего регистратора.
Отправляется ли мой домен на сервер?
Нет — всё преобразование выполняется в вашем браузере с помощью локальной реализации алгоритма Bootstring. Эта страница не делает для этого ни одного сетевого запроса.
Почему преобразование завершилось ошибкой?
Либо одна из меток была пустой (например, две точки подряд), либо, при преобразовании ASCII→Unicode, метка «xn--» не была корректным Punycode (неверная цифра, обрезанная кодировка или внутреннее переполнение значения) — оба случая считаются некорректными входными данными, а не ошибкой инструмента.

Понравился инструмент? Бесплатный аккаунт нашего API даёт 1000 запросов в день.Смотреть документацию API →