Punycode: как перевести кириллический домен в ASCII-запись и обратно

Кириллический домен выглядит понятно человеку, но не машине. DNS, веб-серверы, SSL-сертификаты и почтовые серверы работают с латиницей, цифрами и дефисом. Поэтому пример.рф в технических настройках хранится как xn--e1afmkfd.xn--p1ai — и без этой записи сайт не заработает. Punycode — инструмент, который переводит кириллические и другие международные домены в ASCII-форму и обратно, принимает сразу несколько доменов, адресов и e-mail и предупреждает о доменах, которые маскируются под латинские.

В этой статье разберём, зачем нужен Punycode, как он работает, что такое IDN и IDNA, почему регистр букв меняется и как распознать фишинговый домен из похожих букв.

Интерфейс онлайн-инструмента Punycode
Интерфейс онлайн-инструмента Punycode

Что такое Punycode и зачем он нужен

Punycode — способ записи нелатинских доменов с помощью символов ASCII. Он позволяет DNS, который исторически понимает только латиницу, цифры и дефис, работать с доменами на кириллице, арабском, китайском и других письменностях.

Схема простая:

  1. Домен пример.рф содержит кириллицу. DNS такую строку не примет.
  2. Специальный алгоритм кодирует кириллическую часть в ASCII и добавляет префикс xn--.
  3. Получается xn--e1afmkfd.xn--p1ai — это и есть Punycode-запись, которую понимают все технические системы.

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

Где нужна ASCII-запись домена

Практически везде, где домен попадает в техническую настройку, а не в строку браузера.

DNS. В записях зоны домен хранится в Punycode. Если вы настраиваете поддомен для кириллического домена, в панели DNS он будет в ASCII-форме.

Веб-сервер. В конфигурации виртуальных хостов (nginx, Apache) имя сервера указывается в Punycode. Иначе сервер не сопоставит запрос с нужным сайтом.

SSL-сертификаты. Сертификаты на кириллические домены выпускаются на Punycode-имя. В некоторых панелях управления сертификатами нужно указывать именно ASCII-форму.

Почтовые серверы. При настройке почты для кириллического домена в записях MX, SPF, DKIM доменная часть указывается в Punycode.

Некоторые программы и API. Не все библиотеки автоматически конвертируют IDN. Если программа не понимает кириллицу в домене, ей нужна ASCII-форма.

Как работает инструмент

Punycode принимает домены, адреса сайтов или e-mail — по одному в строке, не больше 200 за раз. В адресах и e-mail преобразуется только доменная часть: https://пример.рф/страница превратится в https://xn--e1afmkfd.xn--p1ai/страница, а user@пример.рф — в user@xn--e1afmkfd.xn--p1ai.

Направление перевода можно выбрать явно или оставить «Определить автоматически» — инструмент сам поймёт, что перед ним: кириллический домен или уже Punycode-запись.

Результат показывается таблицей: исходное значение, результат и замечания. Если с доменом что-то не так, в колонке «Замечания» будет предупреждение.

Всё выполняется в браузере: введённые данные никуда не отправляются. Это важно, если вы работаете с внутренними доменами или адресами, которые не хотите раскрывать.

Предупреждение о похожих буквах: что это и почему важно

Это самая полезная функция инструмента для безопасности. Кириллические буквы а, е, о, р, с визуально неотличимы от латинских a, e, o, p, c. Домен, собранный из таких букв, выглядит как настоящий, но ведёт на другой сайт.

Пример: аррӏе.com — здесь первая «а» кириллическая, а «ӏ» — не латинская «l», а другая буква. Визуально домен похож на известный бренд, но это другой адрес. Так устроены фишинговые атаки: пользователь не замечает подмены и вводит данные на чужом сайте.

Инструмент предупреждает о таких доменах в колонке «Замечания». Если вы видите предупреждение:

  • Проверьте, тот ли это сайт, который вы ожидали.
  • Сравните Punycode-запись с ожидаемой: у настоящего домена она будет другой.
  • Не вводите данные на домене, который вызывает сомнения.

Это не значит, что любой домен с похожими буквами — мошеннический. Кириллические домены легальны, и некоторые бренды используют их специально. Но предупреждение стоит воспринимать серьёзно.

Почему регистр букв меняется

Доменные имена не различают регистр: Пример.РФ и пример.рф — один и тот же домен. По стандарту IDNA перед переводом в Punycode буквы приводятся к нижнему регистру. Поэтому в результате вы увидите пример.рф, даже если ввели Пример.РФ.

Это не ошибка и не потеря данных — так требует стандарт. DNS хранит домены в нижнем регистре, и любые другие варианты приводятся к нему.

IDN и IDNA: что это такое

Два термина, которые часто встречаются рядом с Punycode.

IDN (Internationalized Domain Name) — международное доменное имя. Это домен, который может содержать нелатинские символы: пример.рф, 例え.jp, مثال.إختبار. Идея IDN — позволить людям вводить домены на своём языке.

IDNA (Internationalized Domain Names in Applications) — стандарт, который описывает, как IDN преобразуются в ASCII и обратно. Punycode — это алгоритм кодирования, а IDNA — правила, по которым он применяется: какие символы допустимы, как обрабатывается регистр, как проверяется валидность.

Проще: IDN — что, IDNA — как, Punycode — алгоритм.

Punycode и WHOIS: где что смотреть

Эти инструменты дополняют друг друга.

Punycode — конвертирует домен между кириллицей и ASCII-формой. Нужен, когда вы настраиваете DNS, сервер или сертификат.

WHOIS — показывает регистрационные данные домена. В результатах кириллический домен часто отображается именно в Punycode-форме, потому что реестр хранит его в ASCII.

Если вы проверяете домен через WHOIS и видите xn--... вместо кириллицы — это нормально. Чтобы понять, что это за домен, переведите его обратно через Punycode-конвертер.

Типичные ошибки

Вводить кириллицу в настройки DNS напрямую. DNS не примет нелатинские символы. Нужна Punycode-форма.

Путать Punycode с URL-кодированием. Это разные вещи. URL-кодирование (%D0%BF…) применяется к символам в адресе страницы, а Punycode — к доменному имени. Для URL-кодирования есть отдельный инструмент.

Игнорировать предупреждение о похожих буквах. Если инструмент предупреждает, что домен маскируется под латинский, — проверьте, тот ли это сайт. Это может быть фишинг.

Удивляться смене регистра. Домены не различают регистр, и стандарт IDNA приводит буквы к нижнему регистру. Это ожидаемое поведение.

Конвертировать домен вместе с путём и параметрами. Инструмент преобразует только доменную часть. Путь и параметры остаются как есть — и это правильно: Punycode применяется только к домену.

Забывать про лимит строк. За раз можно обработать не больше 200 строк. Если доменов больше — разбейте на партии.

Вопросы и ответы

Зачем нужен Punycode? DNS работает только с латиницей, цифрами и дефисом. Домен пример.рф хранится в DNS как xn--e1afmkfd.xn--p1ai. Эта запись нужна в настройках DNS, веб-сервера, SSL-сертификата и в некоторых программах.

Что значит предупреждение о похожих буквах? Кириллические «а», «е», «о», «р», «с» выглядят как латинские. Домен из таких букв визуально не отличить от настоящего — так устроены фишинговые адреса. Проверьте, тот ли это сайт, который вы ожидали.

Почему регистр букв меняется? Доменные имена не различают регистр. По стандарту IDNA перед переводом в Punycode буквы приводятся к нижнему регистру.

Можно ли конвертировать несколько доменов сразу? Да, по одному в строке, не больше 200 за раз. В адресах и e-mail преобразуется только доменная часть.

Отправляются ли данные на сервер? Нет, конвертация выполняется в браузере. Введённые домены и адреса никуда не отправляются.

Итог

Punycode — инструмент для перевода кириллических и других международных доменов в ASCII-запись и обратно. Он нужен везде, где домен попадает в технические настройки: DNS, веб-сервер, SSL-сертификат, почта. Инструмент поддерживает пакетную обработку адресов и e-mail, работает в браузере и предупреждает о доменах, которые маскируются под латинские, — это помогает не попасться на фишинг. Зная, зачем нужен Punycode и почему регистр меняется, вы сможете настроить кириллический домен без лишних ошибок и вовремя заметить подозрительный адрес.

Предыдущая запись

WHOIS: как проверить регистрационные данные домена и что можно узнать

Онлайн-проверка домена по протоколу WHOIS: регистратор, даты создания и окончания регистрации, DNS-серверы, статусы и DNSSEC. Работает для .ru, .рф, .com и других зон. Показывает и полный ответ сервера.
Далее