Що таке PunyCode і як він кодує домени?

Автор: Опубліковано

Коротко: Punycode — це спосіб запису символів Unicode, як-от польських «ł» чи «ó», за допомогою базових символів ASCII. У доменних іменах він дає змогу подати адресу з літерами національних алфавітів у технічному форматі, який можна впізнати за префіксом xn--. Наприклад, bücher.de має вигляд xn--bcher-kva.de — це два способи запису одного домену, а не дві окремі адреси для реєстрації.

Навіщо доменам Punycode?

Unicode — це стандарт, що охоплює символи багатьох мов і алфавітів. ASCII — значно менший набір символів: він містить, зокрема, базові латинські літери, цифри й дефіс, але не містить «ą», «ę» чи «ż». Традиційний запис імен хостів, які використовуються в інтернеті, ґрунтується на цьому обмеженому наборі.

Щоб уможливити використання імен із літерами національних алфавітів, розробили механізм IDNA — правила підтримки міжнародних доменних імен у застосунках. Домен із такими символами називають IDN-доменом, тобто міжнародним доменним іменем. Punycode є складовою цього механізму: він відповідає за перетворення символів на запис у форматі ASCII.

Punycode — це не шифрування і не засіб захисту адреси. Це зворотне кодування, тож із правильного запису можна відновити початкові символи без пароля чи ключа. Сам префікс xn-- також не свідчить про те, що сайт небезпечний.

Який вигляд має закодований домен?

Перетворення стосується окремих частин імені, розділених крапками, — їх називають мітками. В адресі bücher.de перетворюється частина bücher, а закінчення de залишається незмінним. Якщо символи поза набором ASCII є в кількох мітках, кожна з них може потребувати окремого кодування.

У цьому прикладі:

Punycode зберігає базові символи, наявні в імені, а решту описує закодованою послідовністю. Проте не варто вручну дописувати закінчення чи намагатися вгадати результат — для перетворення слід використовувати інструменти з підтримкою IDNA.

Кодування не видаляє діакритичних знаків. Домен żaba.pl не стає доменом zaba.pl; це різні імена, які можуть належати різним реєстрантам. Натомість варіант із польськими літерами та його правильний запис xn--… позначають той самий домен.

Коли потрібно використовувати запис xn–?

Користувач зазвичай вводить ім’я з літерами національного алфавіту, а браузер виконує потрібне перетворення. Проте під час керування доменом можна натрапити на форми, що вимагають запису у форматі ASCII, наприклад у панелі DNS, панелі хостингу, інструменті моніторингу або налаштуваннях сервера.

Єдиного правила для всіх панелей немає. Одні приймають ім’я Unicode і самі його перетворюють, інші очікують запису з xn--. Потрібний формат слід перевірити в документації конкретного сервісу.

Безпечна процедура налаштування виглядає так:

  1. Скопіюйте точне доменне ім’я з панелі реєстратора — компанії, яка обслуговує його реєстрацію.
  2. Перевірте його запис у форматі ASCII у панелі або інструменті з підтримкою IDNA.
  3. Введіть запис у форматі, якого вимагає сервіс, не змінюючи крапок і дефісів.
  4. Після налаштування перевірте роботу сайту, HTTPS і, якщо користуєтеся нею, пошти.

Сама можливість закодувати текст не означає, що його можна зареєструвати як домен. Реєстр, який керує відповідною доменною зоною, визначає допустимі символи та їхні поєднання. Діють також обмеження довжини міток, тому важлива довжина після перетворення, а не лише кількість видимих літер. Уточніть доступність імені та правила реєстрації в реєстратора або оператора доменної зони.

Чому браузер іноді показує код замість літер?

Браузери застосовують власні правила відображення міжнародних доменних імен. Вони можуть показати ім’я з літерами національного алфавіту або залишити його в технічному форматі xn--. Рішення залежить, зокрема, від використаних алфавітів і механізмів захисту від підміни адрес.

Проблему становлять символи, які виглядають схоже, хоча мають різні коди Unicode. Наприклад, латинську «a» та кириличну «а» буває складно розрізнити. Використання такої подібності для шахрайства називають гомографічною атакою.

Відображення Punycode може ускладнити шахраєві приховування відмінності, але не замінює перевірки адреси. Для входу в банківський сервіс або пошту користуйтеся збереженою закладкою чи самостійно вводьте відому вам адресу. HTTPS підтверджує зашифроване з’єднання з конкретним доменом, а не те, що він належить компанії, за яку сайт видає себе своїм оформленням.

Чи варто вибирати домен із польськими літерами?

Домен, що відповідає написанню назви бренду, може бути зрозумілим для польської аудиторії. Проте він буває менш зручним для людей без польської розкладки клавіатури та в системах із гіршою підтримкою міжнародних доменних імен. Тому під час вибору враховуйте не лише вигляд адреси, а й те, як ви її передаватимете та якими інструментами користуватиметеся.

Якщо ви реєструєте варіант із польськими літерами й варіант без них, виберіть одну основну адресу, а з другої налаштуйте перенаправлення на неї. Перенаправлення сайту не налаштовує пошту автоматично. Крім того, підтримка міжнародного домену в адресі електронної пошти — це окреме питання, не тотожне підтримці символів Unicode перед знаком @.

Перед купівлею домену з’ясуйте в постачальника хостингу та пошти, чи підтримує він вибране ім’я і якого формату вимагає. Це допоможе оцінити практичну придатність домену ще до друку візитівок і публікації адреси.

Дивіться також: Що таке ASCII?

Читайте також

Дізнайтеся, як PHP-FPM обробляє запити PHP, чим відрізняється від вебсервера та як налаштувати процеси під трафік і ресурси хостингу.
Дізнайтеся, як BIND обслуговує DNS, чим відрізняються його серверні ролі та коли варто розгортати його самостійно замість керованої послуги.
Дізнайтеся, що означають польський реєстр і номер REGON, чим вони відрізняються від NIP та KRS і як перевірити дані підприємства.