Парсер URL: разложите ссылку на части — схема, логин и пароль, домен в punycode и юникоде, порт, путь, параметры и якорь. Расшифровка параметров и сборка обратно.
Подойдёт и адрес без схемы (//example.com), и относительный (/path?x=1). Пробелы, кириллицу и табы инструмент приведёт к каноническому виду.
Тип: Пусто
Адрес пуст: введите ссылку, чтобы увидеть её части.
Правьте любое поле — адрес пересобирается сразу
Часть перед собакой
Открытым текстом, как и в самом адресе
Можно кириллицей: при сборке станет punycode
Пусто — стандартный для схемы
Пробелы закодируются в %20
Параметры через «&», без знака «?»
Метка после «#», без самого знака
Итоговый адрес
Части пусты — соберите адрес из полей выше.
Одна строка на часть: что в ней стоит и что она значит
| Часть | Значение | Что это | Действие |
|---|---|---|---|
| Схема | не задано | Определяет, как открывать адрес. У веб-ссылок это http или https. | |
| Логин | не задано | Имя пользователя перед собакой. В веб-адресах встречается редко. | |
| Пароль | не задано | Стоит после двоеточия в логине. Передаётся открытым текстом: по адресу видно всем, кто его увидит. | |
| Хост | не задано | Домен вместе с портом — то, куда уходит запрос. | |
| Домен (hostname) | не задано | Домен без порта, в том виде, в каком он уходит в сеть. | |
| Домен (юникод) | не задано | То же имя в читаемом виде — так его показывает адресная строка браузера. | |
| Порт | не задано | Номер порта на сервере. Если не указан, берётся стандартный для схемы: 443 у https, 80 у http. | |
| Путь (pathname) | не задано | Адрес страницы или файла внутри сайта. Пробелы и кириллица в нём кодируются. | |
| Запрос (query) | не задано | Параметры после знака «?» — то, что передают серверу, например номер страницы или метку источника. | |
| Якорь (hash) | не задано | Метка внутри страницы после «#». На сервер не уходит: по ней браузер сам прокручивает страницу. | |
| Источник (origin) | не задано | Схема и домен вместе. По источнику браузер решает, тот же это сайт или другой. У схем без домена источника нет — это и значит «null». |
Имена и значения после декодирования: %D0%BF снова читается как «п», а «+» — как пробел
В адресе нет строки запроса: параметров не нашлось. Добавьте их в поле «Строка запроса» — таблица заполнится сразу.
Адрес устроен проще, чем кажется, пока не понадобится вытащить из него одну часть: схема говорит, по какому протоколу идти; логин с паролем перед собакой — кто запрашивает; домен — куда; порт — в какую дверь; путь — что именно; строка после «?» — с какими условиями; якорь после «#» — на какое место страницы. Ошибка в любой части ломает ссылку целиком, а глазами её не видно: адрес с опечаткой в домене или лишним пробелом в пути выглядит совершенно нормально.
Инструмент раскладывает адрес на эти части и показывает рядом то, что в нём записано на самом деле: кириллицу в декодированном виде, домен — и в punycode, и в юникоде, параметры — с расшифрованными именами и значениями. Заодно видно, что адрес пришлось поправить: пробелы закодировать, домен привести к punycode, регистр схемы опустить. Это тот же вид, который в итоге уходит на сервер, — по нему понятно, почему ссылка из мессенджера иногда не открывается: в ней остались пробелы или знаки, которых в адресе быть не может.
Обратная операция — сборка: поля частей редактируются, и адрес под ними пересобирается сразу, без кнопки «Применить». Это удобно, когда нужно поменять домен в длинной ссылке с параметрами, поправить путь или заменить порт, не трогая остальное. Всё считается в браузере, поэтому сюда можно вставлять адреса со служебными параметрами и токенами: они не уходят ни на сервер, ни в аналитику.
Вставьте адрес в поле сверху — разбор появится сразу, нажимать ничего не нужно. Таблица «Разбор адреса» показывает схему, логин и пароль, хост, домен в punycode и в юникоде, порт, путь, строку запроса, якорь и источник. Того, чего в адресе нет, в таблице стоит «не задано»: пустая ячейка читалась бы как ошибка разбора, а не как отсутствие части.
Параметры правятся и здесь: в панели «Собрать адрес» есть поле «Строка запроса», и адрес под ним пересобирается сразу. Это удобно для одной-двух правок, а когда записей много — их надо добавить, удалить, продублировать или переставить порядок — возьмите «Редактор параметров URL»: он раскладывает строку запроса в таблицу с именами, значениями, повторами имён, «+» и %20, собирает результат обратно и умеет дописывать UTM-метки, не теряя остальные параметры. Другая задача — перевести строку в проценты и обратно; для неё есть инструмент «Экранировать и разэкранировать текст» в категории «Работа с текстом»: там URL encode и decode применяются к произвольной строке, а не к адресу целиком. Проще говоря, этот инструмент отвечает на вопрос «из чего состоит ссылка», «Редактор параметров URL» — «какие параметры в ней оставить», а экранирование — «как записать в ней пробел».
Инструмент показывает канонический вид адреса — тот, который в итоге уйдёт в сеть. Пробелы в пути становятся %20, кириллица — процентными последовательностями, домен — punycode, схема и домен приводятся к нижнему регистру, а табы и переносы строк выбрасываются совсем. Под полем есть список «Что изменено в адресе»: там по пунктам написано, что именно поправлено. Само поле при этом остаётся вашим — каноническую строку можно забрать кнопкой «В исходник».
Домены с кириллицей в сети передаются в виде ASCII-совместимой кодировки punycode: «пример.рф» уходит как «xn--e1afmkfd.xn--p1ai». В таблице показаны оба вида: punycode — то, что реально уйдёт на сервер, юникод — то, что покажет адресная строка браузера. Расхождение объясняет, почему домен, скопированный из адресной строки, иногда выглядит непонятным набором букв и дефисов.
Это значит, что части в адресе нет. У относительного адреса нет ни схемы, ни домена — он считается от текущей страницы сайта; у адреса без схемы (`//example.com`) домен есть, а схемы нет, и браузер подставит ту, по которой открыта страница; без порта берётся стандартный порт схемы. Отсутствие части — не ошибка: адрес из одного якоря (#top) тоже разбирается, хотя в нём нет ничего, кроме метки.
Одно и то же имя встречается в строке запроса несколько раз: `?page=2&page=3`. Стандарт такие повторы разрешает и сохраняет порядок, поэтому в таблице обе записи остаются на своих местах, а счётчик сверху показывает и число параметров, и число уникальных имён. Как поступит сервер — зависит от него: чаще всего берёт первое или последнее значение, но бывает и так, что читает все, — поэтому повторы лучше убрать вручную, если они попали в адрес случайно.
Да, это и есть обратная операция. Поля в панели «Собрать адрес» редактируемые: правка любого из них сразу пересобирает адрес в поле сверху, а правка самого адреса переразбирает части. Домен можно вводить кириллицей — при сборке он сам станет punycode, а пробелы в пути и запросе закодируются. Кнопка «Копировать» заберёт готовый адрес, «В исходник» — перенесёт его в поле разбора.
Нет. Разбор и сборка идут целиком в браузере на JavaScript: адрес никуда не передаётся, не сохраняется и не логируется — в том числе вместе с логином и паролем, если они в нём есть. Проверить просто: отключите интернет и продолжите работу, разбор останется прежним. Обратная сторона в том, что при обновлении вкладки введённое пропадёт, поэтому нужный адрес лучше скопировать сразу.