Парсер URL
URL (Uniform Resource Locator) идентифицируют ресурсы в интернете. Этот инструмент разбивает URL на составные части: схема, хост, порт, путь, параметры запроса и фрагмент. Он автоматически декодирует процентно-кодированные значения, обрабатывает интернационализированные доменные имена (IDN) с преобразованием Punycode и может обнаруживать встроенные данные, такие как Base64 или JSON, в параметрах.
Спецификации
Типичные сценарии использования
- Отладка URL-перенаправлений OAuth 2.0 и параметров обратного вызова
- Просмотр URL вебхуков и их параметров запроса
- Анализ параметров отслеживания (UTM, данные реферера)
- Декодирование мобильных глубоких ссылок (app://, пользовательские схемы)
- Устранение проблем с маршрутизацией URL
- Преобразование интернационализированных доменных имён между Unicode и Punycode
Возможности
- Разбор всех компонентов URL (схема, хост, порт, путь, запрос, фрагмент)
- Автоматическое декодирование процентно-кодированных (URL-кодированных) значений
- Разбор строки запроса в пары ключ-значение
- Преобразование интернационализированных доменных имён (IDN) между Unicode и Punycode
- Обнаружение и декодирование Base64 или JSON в значениях параметров
- Копирование отдельных компонентов в буфер обмена
Примеры
Обратный вызов OAuth
Попробовать →Обратный вызов авторизации OAuth 2.0 с параметрами code и state.
https://app.example.com/callback?code=abc123&state=xyz789&redirect_uri=https%3A%2F%2Fexample.comИнтернационализированный домен (Punycode)
Попробовать →URL с доменным именем в кодировке Punycode (префикс xn-- указывает на IDN).
https://xn--mnchen-3ya.de/pathИнтернационализированный домен (Unicode)
Попробовать →URL с доменным именем в Unicode, которое будет преобразовано в Punycode.
https://münchen.de/pathСоветы
- Процентное кодирование заменяет небезопасные символы на %XX, где XX — шестнадцатеричное значение.
- Фрагмент (#) никогда не отправляется на сервер; он используется только на стороне клиента.
- Параметры запроса могут появляться несколько раз с одним и тем же ключом.
- Некоторые символы, такие как @ и : в информации о пользователе, требуют кодирования.
- Используйте encodeURIComponent() для значений параметров, encodeURI() для полных URL.
Описание Парсер URL
URL (Uniform Resource Locator) — это система адресации в интернете, определённая RFC 3986 как специфический тип URI (Uniform Resource Identifier). URL состоит из нескольких компонентов: схема (протокол, например https), авторитет (хост, необязательный порт, необязательная информация о пользователе), путь, необязательная строка запроса из параметров ключ-значение и необязательный идентификатор фрагмента.
Процентное кодирование (URL-кодирование) — это механизм представления специальных символов в URL. Символы за пределами незарезервированного набора (A-Z, a-z, 0-9, -, _, ., ~) должны быть закодированы как %XX, где XX — шестнадцатеричное значение байта. Пробелы становятся %20 (или + в строках запроса). Не-ASCII символы сначала кодируются как байты UTF-8, затем каждый байт кодируется процентно.
Строки запроса несут параметры в виде пар key=value, разделённых символами &. Веб-приложения используют их для поисковых запросов, пагинации, фильтрации, сортировки и отслеживания (UTM-параметры). URL-перенаправления OAuth 2.0 передают коды авторизации и токены состояния в параметрах запроса. Сложные значения могут сами быть URL-кодированными, создавая слои кодирования, требующие тщательного декодирования.
Интернационализированные доменные имена (IDN) используют кодировку Punycode (RFC 3492) для представления не-ASCII символов в доменных именах. Префикс xn-- сигнализирует о метке, закодированной в Punycode. Например, muenchen.de становится xn--mnchen-3ya.de. Эта кодировка обеспечивает совместимость с системой DNS, работающей только с ASCII, при этом поддерживая доменные имена на любом письме.
JavaScript предоставляет две функции для URL-кодирования, служащие разным целям. encodeURI кодирует полный URI, сохраняя символы со структурным значением в URL (такие как : / ? # @ и =). encodeURIComponent кодирует один компонент URI, например значение параметра запроса, кодируя все специальные символы, включая / и &. Используйте encodeURIComponent для значений параметров и encodeURI только при кодировании полного URL. Идентификатор фрагмента (всё после #) определён RFC 3986 как исключительно клиентский — браузеры используют его для навигации по странице и клиентской маршрутизации в одностраничных приложениях, но он никогда не включается в HTTP-запросы, отправляемые серверу.
Punycode — это кодировка, которая делает возможными интернационализированные доменные имена в системе DNS, работающей только с ASCII. Домены, содержащие нелатинские символы, хранятся в DNS с использованием Punycode с префиксом xn--, поэтому muenchen.de хранится как xn--mnchen-3ya.de. Браузеры отображают Unicode-форму пользователям, используя форму Punycode для DNS-разрешения за кулисами.
Строки запроса могут содержать несколько значений для одного имени параметра, например ?color=red&color=blue. Различные фреймворки обрабатывают это по-разному — некоторые возвращают последнее значение, некоторые первое, а некоторые возвращают массив всех значений. Этот инструмент показывает все вхождения параметров. В JavaScript URLSearchParams.getAll() извлекает все значения для повторяющегося ключа, а не только первое или последнее.