Parser URL
URL-e (Uniform Resource Locator) identyfikuja zasoby w sieci. To narzedzie rozklada URL-e na ich czesci skladowe: schemat, host, port, sciezke, parametry zapytania i fragment. Automatycznie dekoduje wartosci zakodowane procentowo, obsluguje miedzynarodowe nazwy domenowe (IDN) z konwersja Punycode i moze wykrywac osadzone dane takie jak Base64 lub JSON w parametrach.
Specyfikacje
Typowe zastosowania
- Debugowanie URL-i przekierowania OAuth 2.0 i parametrow callback
- Inspekcja URL-i webhookow i ich parametrow zapytania
- Analiza parametrow sledzenia (UTM, dane referrera)
- Dekodowanie mobilnych deep linkow (app://, niestandardowe schematy)
- Rozwiazywanie problemow z routingiem URL
- Konwersja miedzynarodowych nazw domenowych miedzy Unicode a Punycode
Funkcje
- Parsowanie wszystkich komponentow URL (schemat, host, port, sciezka, zapytanie, fragment)
- Automatyczne dekodowanie wartosci zakodowanych procentowo (URL-encoded)
- Parsowanie query string na pary klucz-wartosc
- Konwersja miedzynarodowych nazw domenowych (IDN) miedzy Unicode a Punycode
- Wykrywanie i dekodowanie Base64 lub JSON w wartosciach parametrow
- Kopiowanie poszczegolnych komponentow do schowka
Przyklady
Callback OAuth
Wypróbuj →Callback autoryzacji OAuth 2.0 z parametrami code i state.
https://app.example.com/callback?code=abc123&state=xyz789&redirect_uri=https%3A%2F%2Fexample.comDomena miedzynarodowa (Punycode)
Wypróbuj →URL z nazwa domeny zakodowana w Punycode (prefiks xn-- wskazuje IDN).
https://xn--mnchen-3ya.de/pathDomena miedzynarodowa (Unicode)
Wypróbuj →URL z nazwa domeny w Unicode, ktora zostanie przekonwertowana na Punycode.
https://münchen.de/pathWskazowki
- Kodowanie procentowe zastepuje niebezpieczne znaki %XX, gdzie XX to wartosc szesnastkowa.
- Fragment (#) nigdy nie jest wysylany do serwera; jest tylko po stronie klienta.
- Parametry zapytania moga pojawiac sie wielokrotnie z tym samym kluczem.
- Niektore znaki jak @ i : w informacjach o uzytkowniku wymagaja kodowania.
- Uzywaj encodeURIComponent() dla wartosci parametrow, encodeURI() dla pelnych URL-i.
Zrozumienie Parser URL
URL-e (Uniform Resource Locator) sa systemem adresowania w sieci, zdefiniowanym przez RFC 3986 jako specyficzny typ URI (Uniform Resource Identifier). URL sklada sie z kilku komponentow: schematu (protokolu jak https), autorytetu (hosta, opcjonalnego portu, opcjonalnych informacji o uzytkowniku), sciezki, opcjonalnego query stringa z parametrami klucz-wartosc i opcjonalnego identyfikatora fragmentu.
Kodowanie procentowe (kodowanie URL) to mechanizm reprezentowania znakow specjalnych w URL-ach. Znaki spoza niezastrzezonego zestawu (A-Z, a-z, 0-9, -, _, ., ~) musza byc zakodowane jako %XX, gdzie XX to wartosc szesnastkowa bajtu. Spacje staja sie %20 (lub + w query stringach). Znaki spoza ASCII sa najpierw kodowane jako bajty UTF-8, a nastepnie kazdy bajt jest kodowany procentowo.
Query stringi przenoszą parametry jako pary key=value oddzielone znakami &. Aplikacje webowe uzywaja ich do terminow wyszukiwania, paginacji, filtrowania, sortowania i sledzenia (parametry UTM). URL-e przekierowania OAuth 2.0 przenoszą kody autoryzacji i tokeny stanu w parametrach zapytania. Zlozone wartosci moga same byc URL-encoded, tworzac warstwy kodowania wymagajace ostroznego dekodowania.
Miedzynarodowe nazwy domenowe (IDN) uzywaja kodowania Punycode (RFC 3492) do reprezentowania znakow spoza ASCII w nazwach domenowych. Prefiks xn-- sygnalizuje etykiete zakodowana w Punycode. Na przyklad muenchen.de staje sie xn--mnchen-3ya.de. To kodowanie zapewnia kompatybilnosc z systemem DNS opartym wylacznie na ASCII, jednoczesnie wspierajac nazwy domenowe w dowolnym pismie.
JavaScript oferuje dwie funkcje do kodowania URL sluzace roznym celom. encodeURI koduje pelny URI, zachowujac znaki o znaczeniu strukturalnym w URL-ach (takie jak : / ? # @ i =). encodeURIComponent koduje pojedynczy komponent URI, taki jak wartosc parametru zapytania, kodujac wszystkie znaki specjalne wlacznie z / i &. Uzywaj encodeURIComponent dla wartosci parametrow, a encodeURI tylko do kodowania pelnego URL-a. Identyfikator fragmentu (wszystko po #) jest zdefiniowany przez RFC 3986 jako wylacznie po stronie klienta — przegladarki uzywaja go do nawigacji na stronie i routingu po stronie klienta w aplikacjach jednostronicowych, ale nigdy nie jest dolaczany do zadan HTTP wysylanych do serwera.
Punycode to kodowanie umozliwiajace miedzynarodowe nazwy domenowe w systemie DNS opartym wylacznie na ASCII. Domeny zawierajace znaki nielacinskie sa przechowywane w DNS przy uzyciu Punycode z prefiksem xn--, wiec muenchen.de jest przechowywane jako xn--mnchen-3ya.de. Przegladarki wyswietlaja uzytkownikowi forme Unicode, a w tle uzywaja formy Punycode do rozwiazywania DNS.
Query stringi moga zawierac wiele wartosci dla tej samej nazwy parametru, np. ?color=red&color=blue. Rozne frameworki obsluguja to inaczej — niektore zwracaja ostatnia wartosc, niektore pierwsza, a niektore tablice wszystkich wartosci. To narzedzie pokazuje wszystkie wystapienia parametrow. W JavaScript URLSearchParams.getAll() pobiera wszystkie wartosci dla powtarzajacego sie klucza, a nie tylko pierwsza lub ostatnia.