Домены, адреса почты или URL
Преобразуйте интернационализированные доменные имена (IDN) из формы Unicode, например ñandú.com.ar, в ASCII-форму Punycode, которую использует DNS, например xn--and-6ma2c.com.ar, и обратно. Направление определяется автоматически, поддерживаются адреса электронной почты и полные URL, а если домен смешивает системы письма, чтобы выдать себя за другой, вы получите предупреждение.
До 500 строк. В адресах почты преобразуется только домен, в URL — только хост.
Результат
Unicode → ASCII
Unicodeñandú.com.ar
ASCIIxn--and-6ma2c.com.ar
ñandúxn--and-6ma2c13 · Latin
ASCII → Unicode
Unicodemünchen.de
ASCIIxn--mnchen-3ya.de
münchenxn--mnchen-3ya14 · Latin
Unicode → ASCIIПочта
Unicodecontacto@correo.españa.es
ASCIIcontacto@correo.xn--espaa-rta.es
españaxn--espaa-rta13 · Latin
Unicode → ASCIIURL
Unicodehttps://日本語.jp/ページ
ASCIIhttps://xn--wgv71a119e.jp/%E3%83%9A%E3%83%BC%E3%82%B8
日本語xn--wgv71a119e14 · Han
Unicode → ASCII
Unicodeаррӏе.com
ASCIIxn--80ak6aa92e.com
аррӏеxn--80ak6aa92e14 · Cyrillic

Метка целиком написана кириллическими или греческими буквами, которые выглядят как латинские. Она может выдавать себя за известный домен: проверьте форму xn--, прежде чем доверять ссылке.

Punycode без префикса (RFC 3492)

Кодирует или декодирует любой текст чистым алгоритмом Punycode, без префикса xn-- и без нормализации доменов. Полезно для отладки собственной реализации.

Результатmaana-pta

Как это работает

DNS принимает только буквы ASCII, цифры и дефисы, поэтому домен вроде ñandú.com.ar не может передаваться как есть. Интернационализированные домены (IDN) решают это с помощью Punycode (RFC 3492): каждая метка с символами вне ASCII кодируется алгоритмом, который сохраняет обычные буквы и дописывает в конец позиции особых, а перед ней ставится префикс xn--. Так ñandú превращается в xn--and-6ma2c.

Перед кодированием IDNA нормализует имя: переводит его в нижний регистр, унифицирует формы Unicode и преобразует альтернативные точки, например японскую 。. Инструмент использует то же сопоставление (UTS #46), что и браузер при открытии адреса, поэтому результат совпадает с тем, что в итоге запрашивается у DNS. В адресах почты преобразуется только домен, в URL — только хост.

Кроме того, он разбирает каждую метку с её длиной и используемыми системами письма и предупреждает, если домен смешивает алфавиты или написан кириллическими либо греческими буквами, идентичными латинским: на этом строятся омографические атаки, когда ссылка выглядит как ссылка на известный сайт.

Примеры

ñandú.com.arxn--and-6ma2c.com.arМеняется только метка с особыми символами; com и ar остаются прежними. Именно эту форму нужно указывать в DNS и в SAN сертификата.
faß.dexn--fa-hia.deВ IDNA2008 немецкая ß — допустимая буква и кодируется. По прежнему стандарту она превращалась в ss и вела на fass.de — другой домен, поэтому некоторые старые системы разрешают не то имя.
аррӏе.comxn--80ak6aa92e.comОмограф, опубликованный Xudong Zheng в 2017 году: пять кириллических букв, которые выглядят точь-в-точь как apple. С тех пор Chrome и Firefox показывают такие домены в форме xn--.
пример.рфxn--e1afmkfd.xn--p1aiДомены верхнего уровня тоже могут быть интернационализированными: .рф — кириллический домен России, а в DNS он записывается как xn--p1ai.

Сценарии использования

  • Получить форму xn-- домена на кириллице или с диакритикой, чтобы прописать записи в DNS, в конфигурации nginx или Apache или в SAN сертификата.
  • Понять, какой реальный домен скрывается за xn--, встреченным в логе, в отчёте о фишинге или в адресной строке браузера.
  • Проверить подозрительную ссылку на кириллические или греческие буквы, имитирующие латинские.
  • Преобразовать домен интернационализированного адреса электронной почты для сервера, который не поддерживает SMTPUTF8.
  • Убедиться, что после кодирования международный домен не превышает 63 символов на метку.

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

Что означает префикс xn--?

Это префикс ACE (ASCII Compatible Encoding), который показывает, что метка записана в Punycode. Метки с дефисами на третьей и четвёртой позициях зарезервированы для таких префиксов, поэтому регистраторы не позволяют создать домен, начинающийся с xn--, если это не допустимый IDN.

Какую форму использовать в DNS, на веб-сервере и в сертификате?

Форму ASCII с xn-- во всех технических местах: в записях DNS, server_name в nginx, ServerName в Apache, SAN сертификата и заголовках Host. Форма Unicode нужна только для показа людям; браузеры преобразуют её перед запросом.

Что такое омографическая атака?

Это регистрация домена, который выглядит так же, как другой, за счёт букв другого алфавита, например кириллической а вместо латинской. Браузеры показывают форму xn--, когда метка смешивает системы письма или похожа на известный домен. Если ссылка выглядит обычно, но её форма ASCII начинается с xn--, будьте осторожны.

Можно ли использовать нелатинские буквы в адресе электронной почты?

В домене — да, и его можно преобразовать в xn-- для любого сервера. С частью до знака @ всё иначе: символы не из ASCII требуют, чтобы все серверы на пути поддерживали SMTPUTF8 (RFC 6531), и у неё нет эквивалентной формы Punycode.

Почему мой домен с заглавными буквами изменился?

Доменные имена нечувствительны к регистру, и IDNA переводит всё в нижний регистр перед кодированием: MÜNCHEN.de и münchen.de — один и тот же домен, xn--mnchen-3ya.de. Чистый Punycode, напротив, сохраняет заглавные буквы, поэтому конвертер без префикса даёт другие результаты.