BrowserTools
Werbung
Startseite / Netzwerk / URL-Parser

URL-Parser

Zerlege jede URL in ihr Schema, ihren Host, Port, Pfad, ihre Abfrageparameter und ihren Hash, lokal in deinem Browser geparst.

URL-Parser wird geladen… Wenn nichts passiert, aktiviere JavaScript.

Eine URL (Uniform Resource Locator) sieht aus wie eine einzige Zeichenkette, ist aber tatsächlich ein strukturierter Datensatz aus mehreren eigenständigen Komponenten, jede mit eigener Bedeutung. Eine vollständige URL wie https://user:pass@example.com:8443/path/page?q=hello&lang=en#section bündelt ein Schema, optionale Anmeldedaten, einen Host, einen optionalen Port, einen Pfad, eine Query String und ein Fragment. Diese Teile mit dem Auge zu lesen ist leicht falsch zu machen, vor allem wenn die Query String lang ist, prozentkodierte Zeichen enthält oder denselben Schlüssel mehr als einmal wiederholt. Ein Parser teilt die URL präzise nach den im WHATWG URL Standard definierten Regeln auf, denselben Regeln, denen jeder moderne Browser folgt.

Häufig gestellte Fragen

Wird die URL, die ich einfüge, an einen Server gesendet?
Nein. Das Parsen geschieht vollständig in deinem Browser über die eingebauten APIs URL und URLSearchParams. Die URL, die du eingibst, einschließlich aller darin enthaltenen Token oder Anmeldedaten, wird niemals übertragen, gespeichert oder irgendwo protokolliert. Das Werkzeug funktioniert vollständig offline, sobald die Seite geladen ist.
Welche Teile hat eine URL?
Eine URL hat bis zu sieben Teile: das Schema (etwa https), optionale Userinfo (Benutzername und Passwort), den Host (eine Domain oder IP-Adresse), einen optionalen Port, den Pfad, eine optionale Query String (der Teil nach dem Fragezeichen) und ein optionales Fragment (der Teil nach dem Hash). Bei https://example.com:8443/a/b?x=1#top ist das Schema https, der Host example.com, der Port 8443, der Pfad /a/b, die Abfrage x=1 und das Fragment top.
Warum wird der Port bei manchen URLs als Standard angezeigt?
Wenn eine URL den Standardport ihres Schemas verwendet (443 für https, 80 für http), lässt der Browser das Portfeld leer, weil er impliziert ist. Dieses Werkzeug kennzeichnet diesen Fall als Standard. Wenn du ausdrücklich einen nicht standardmäßigen Port wie :8443 angibst, wird er genau so angezeigt, wie er geschrieben ist.
Was ist der Unterschied zwischen host und hostname?
Der Hostname ist nur die Domain oder IP-Adresse, zum Beispiel example.com. Der Host umfasst den Hostname plus den Port, wenn ein nicht standardmäßiger Port vorhanden ist, zum Beispiel example.com:8443. Wenn in der URL kein expliziter Port steht, sind host und hostname identisch.
Wie werden wiederholte Abfrageparameter behandelt?
URLSearchParams bewahrt jedes Vorkommen eines Schlüssels in der Reihenfolge, sodass eine Query String wie a=1&a=2 zwei separate Zeilen in der Tabelle erzeugt, statt sie zusammenzufassen. Das entspricht der Art, wie Server und Frameworks die Daten typischerweise empfangen, wo wiederholte Schlüssel bei Mehrfachauswahl-Filtern und array-artigen Parametern üblich sind.
Dekodiert es prozentkodierte Zeichen in Abfragewerten?
Ja. URLSearchParams dekodiert sowohl Schlüssel als auch Werte automatisch prozentweise, sodass %20 als Leerzeichen und %40 als @ in der Tabelle erscheint. Wenn du einen Wert kodieren oder dekodieren musst, um ihn wieder in eine URL einzusetzen, übernimmt das Werkzeug URL Encoder diese Richtung.
Warum bekomme ich einen Fehler über eine ungültige URL?
Der native URL-Parser verlangt eine absolute URL mit einem Schema, etwa https://example.com. Bloße Eingaben wie example.com/page oder relative Pfade wie /page werden abgelehnt, weil es keine Basis gibt, gegen die sie aufgelöst werden könnten. Füge ein Schema wie https:// am Anfang hinzu, und die URL wird korrekt geparst.
Kann es Nicht-Web-Schemata wie mailto oder ftp parsen?
Ja, solange die Eingabe eine gültige absolute URL ist. Schemata wie ftp, ws, wss, file und mailto werden alle geparst, auch wenn einige Komponenten (wie Host oder Port) bei Schemata, die sie nicht verwenden, leer sein können. Die angezeigten Felder spiegeln wider, was der URL-Standard für dieses Schema extrahiert.

Über URL-Parser

Dieses Werkzeug nutzt die nativen, in deinem Browser eingebauten APIs URL und URLSearchParams, sodass die Ergebnisse genau dem entsprechen, wie ein Browser, ein fetch-Aufruf oder ein Server-Framework die Adresse interpretieren würden. Es zeigt das Schema und das vollständige Protokoll, jeden in der Autorität eingebetteten Benutzernamen und jedes Passwort, den Host und den Hostname, den Port (oder einen Hinweis, dass der Standard des Schemas gilt), den Pathname, den berechneten Origin und das Hash-Fragment. Die Query String wird in eine übersichtliche Tabelle aus Schlüssel-Wert-Paaren aufgeschlüsselt, wobei jeder Wert einzeln kopierbar ist, was weitaus schneller ist, als sich durch eine Wand aus Et-Zeichen und Gleichheitszeichen zu wühlen.

Alles läuft lokal in deinem Browser. Die URL, die du einfügst, wird niemals hochgeladen, protokolliert oder an einen Server gesendet, daher ist es sicher, Links zu untersuchen, die Zugriffstoken, Sitzungskennungen, signierte Parameter oder andere sensible Abfragewerte enthalten. Entwickler greifen zu einem URL-Parser, wenn sie Weiterleitungen, OAuth-Rückruf-URLs, den Tracking-Parameter-Wirrwarr aus Marketingkampagnen, API-Endpunkte mit vielen Abfrageoptionen oder Deep Links in mobilen Apps debuggen. Wenn die Eingabe keine gültige absolute URL ist, zeigt das Werkzeug einen klaren Fehler an, statt zu raten.

Der URL-Standard, auf den sich jahrzehntelang niemand einigte

URLs wurden erstmals 1994 von Tim Berners-Lee im RFC 1738 formalisiert, doch jahrelang danach parste jeder Browser, jede Bibliothek und jede Sprache sie geringfügig anders. Grenzfälle wie Backslashes, Leerzeichen am Anfang und Ende, eigenartig platzierte Doppelpunkte und Prozentkodierung im Host verursachten echte Sicherheitslücken, weil ein Parser auf dem Server und ein Parser im Browser darüber uneinig sein konnten, auf welchen Host eine URL tatsächlich verwies. Angreifer nutzten diese Unstimmigkeiten aus, um an URL-Zulassungslisten vorbeizuschlüpfen und serverseitige Anfragefälschung auszulösen.

Um dem Chaos ein Ende zu setzen, veröffentlichte das WHATWG den URL Standard, eine lebende Spezifikation, die das Parsen als präzisen Zustandsautomaten statt als lockere Grammatik definiert. Entscheidend ist, dass die Spezifikation geschrieben wurde, um zu beschreiben, was Browser tatsächlich tun, einschließlich ihrer Eigenheiten, sodass der Algorithmus von Grund auf interoperabel ist. Die JavaScript zugänglich gemachten Klassen URL und URLSearchParams implementieren genau diesen Algorithmus, weshalb die Ausgabe dieses Werkzeugs dem entspricht, was die Adressleiste deines Browsers und fetch-Aufrufe sehen.

Ein feines Detail, das der Standard klar festlegt, ist der Unterschied zwischen den speziellen Schemata (http, https, ws, wss, ftp, file) und allem anderen. Spezielle Schemata erhalten eine zusätzliche Normalisierung, etwa das Kleinschreiben des Hosts und das Auflösen des Standardports, während nicht spezielle Schemata wörtlicher behandelt werden. Diese Unterscheidung erklärt, warum eine https-URL und eine benutzerdefinierte myapp-URL mit demselben Text nach dem Doppelpunkt in recht unterschiedliche Komponentenwerte geparst werden können.

Werbung
Werbung
Werbung