Ссылка на русскоязычный сайт часто выглядит невинно, но при разборе на компоненты вскрывает сразу несколько особенностей, которых нет в англоязычном интернете: кириллические домены, percent-encoding кириллицы в пути и метки счётчиков вроде Яндекс.Метрики в query string.
Из чего состоит URL
- Схема —
https://, способ соединения с ресурсом. - Хост —
example.ruили, для кириллического домена,сайт.рф, который браузер внутри себя превращает в punycode. - Порт — необязательный, по умолчанию 443 для HTTPS и 80 для HTTP.
- Путь —
/статьи/сеть, может содержать кириллицу. - Строка запроса — после
?, пары ключ-значение, часто с UTM-метками рекламных кампаний. - Фрагмент — после
#, часть страницы, которую видит только браузер.
Как домен .рф превращается в набор латинских символов
Домены на кириллице — например, сайт.рф — не существуют в DNS в исходном виде. Браузер конвертирует их по алгоритму Punycode в форму вроде xn--80aswg.xn--p1ai, и именно она уходит в DNS-запрос. Если скопировать такую ссылку из адресной строки в текстовый редактор, можно увидеть либо кириллицу, либо punycode — в зависимости от того, откуда именно скопирован URL.
Почему кириллический путь превращается в стену процентов
Путь и query string не поддерживают кириллицу напрямую — каждый символ кодируется в несколько байт UTF-8, а затем каждый байт становится последовательностью вида %D0%A1. Одно русское слово в пути легко превращается в строку из 30–40 символов, что затрудняет чтение логов сервера и заметно увеличивает длину ссылки, которой делятся в мессенджерах.
Зачем разбирать URL на части
- Проверить, какая UTM-метка (
utm_source,utm_campaign) реально пришла с кликом по рекламе. - Отличить настоящий punycode-домен от визуально похожего кириллического — это основа IDN-фишинга.
- Декодировать кириллический путь или параметр, не поднимая консоль браузера.
IDN-фишинг: почему кириллица в адресной строке — это риск
Некоторые кириллические буквы визуально неотличимы от латинских: русская «а», «е», «о», «р», «с», «х» выглядят так же, как латинские a, e, o, p, c, x. Это позволяет зарегистрировать домен вроде аррle.com (с кириллической «а») — он не имеет отношения к настоящему apple.com, но в большинстве шрифтов не отличим от него на глаз. Современные браузеры показывают такие смешанные домены сразу в punycode-виде (xn--...), чтобы подделку было видно в адресной строке.