URL-Parser

urls in Scheme, Host, Port, Pfad und Query zerlegen

Examples:

Der URL Parser zerlegt jede URL gemäß der RFC-3986-Spezifikation in ihre einzelnen Bestandteile und zeigt genau, wie Browser und HTTP-Clients jedes Segment interpretieren. Fügen Sie eine URL wie https://www.example.com:8443/api/v2/users?status=active&limit=50#results ein und sehen Sie jede Komponente extrahiert: Schema, Host, Port, Pfad, Query-Parameter und Fragment.

URL-Struktur verstehen

URLs sind die Adressen des Webs, aber ihre Struktur ist nuancierter, als die meisten Entwickler realisieren, bis sie auf einen Parsing-Grenzfall stoßen. Eine URL ist nicht einfach "das, was man in den Browser tippt" -- sie ist ein präzise definiertes Format, spezifiziert in RFC 3986, mit Regeln darüber, welche Zeichen wo erlaubt sind, wie Sonderzeichen kodiert werden müssen und wie jede Komponente von der nächsten abgegrenzt wird. Wenn diese Details falsch umgesetzt werden, entstehen echte Fehler: unterbrochene Weiterleitungsketten, fehlgeleitete API-Aufrufe, Sicherheitslücken durch URL-Verwirrung und Analytics-Tracking-Fehler durch verlorene Query-Parameter.

Die grundlegende Struktur einer URL ist schema://benutzerinfo@host:port/pfad?query#fragment, aber die meisten URLs lassen mehrere dieser Komponenten weg. Das Schema teilt dem Client mit, welches Protokoll zu verwenden ist (http, https, ftp). Der Host identifiziert den Server, entweder als Domainname oder als IP-Adresse. Der Port ist normalerweise implizit -- 443 für HTTPS, 80 für HTTP -- kann aber explizit angegeben werden, wenn ein Dienst auf einem nicht standardmäßigen Port läuft. Der Pfad identifiziert die spezifische Ressource auf dem Server. Der Query-String transportiert Parameter als Schlüssel-Wert-Paare. Und das Fragment verweist auf einen bestimmten Abschnitt innerhalb der Ressource, wird ausschließlich vom Client verarbeitet und nie an den Server gesendet.

Was Probleme bereitet, sind die Grenzfälle. Eine URL kann Zugangsdaten enthalten (benutzer:passwort@host), obwohl dies für HTTP als veraltet gilt. IPv6-Adressen müssen in eckige Klammern gesetzt werden ([2001:db8::1]). Query-Parameter-Werte können selbst ?- und =-Zeichen enthalten, wenn sie prozentkodiert sind. Das erste ? trennt Pfad von Query, aber nachfolgende ?-Zeichen sind wörtliche Bestandteile der Query. Dieser Parser behandelt all diese Fälle und zeigt jede Komponente separat an, wodurch die Struktur der URL eindeutig wird.

So parsen Sie eine URL in ihre Bestandteile

  1. Fügen Sie eine beliebige vollständige URL in das Eingabefeld ein
  2. Der Parser extrahiert jede Komponente: Schema, Benutzerinfo, Host, Port, Pfad, Query, Fragment
  3. Query-Strings werden weiter in einzelne Schlüssel-Wert-Parameterpaare aufgeschlüsselt
  4. Standard-Ports werden basierend auf dem Schema identifiziert (z. B. 443 für https)
  5. Kodierungsprobleme oder nicht standardmäßige Konstruktionen werden hervorgehoben

Beispiele für URL-Parsing

Standard-HTTPS-URL

Eingabe: https://www.example.com:8443/api/v2/users?status=active&limit=50#results

KomponenteWert
Schemahttps
Hostwww.example.com
Port8443
Pfad/api/v2/users
Query-Stringstatus=active&limit=50
Fragmentresults

Query-Parameter:

SchlüsselWert
statusactive
limit50

URL mit Authentifizierung

Eingabe: ftp://admin:[email protected]/pub/reports/2024/

KomponenteWert
Schemaftp
Benutzernameadmin
Passworts3cret
Hostfiles.example.com
Port21 (Standard)
Pfad/pub/reports/2024/

URL mit IPv6-Host

Eingabe: http://[2001:db8::1]:8080/index.html

KomponenteWert
Schemahttp
Host2001:db8::1
Port8080
Pfad/index.html

Komplexer Query-String

Eingabe: https://search.example.com/results?q=url+encoding&lang=en&page=3&sort=relevance

Query-Parameter:

SchlüsselWert
qurl encoding
langen
page3
sortrelevance

Wann Sie den URL Parser verwenden sollten

  • Debugging von Weiterleitungsketten, um jede URL in der Sequenz zu inspizieren und zu identifizieren, wo Parameter verloren gehen oder geändert werden
  • Analyse von OAuth-Callback-URLs, um Redirect-URIs, State-Parameter und Autorisierungscodes zu überprüfen
  • Extrahieren von Query-Parametern aus langen URLs in Webhook-Payloads, Analytics-Tracking-Links oder API-Antworten
  • Inspektion von Deep Links in mobilen Anwendungen, um Routing und Parameterübergabe zu verstehen
  • Sicherheitsanalyse potenziell bösartiger URLs, um Verschleierung in Host-, Pfad- oder Query-Komponenten zu identifizieren
  • Vergleich von URLs, um festzustellen, ob zwei unterschiedlich aussehende URLs tatsächlich auf dieselbe Ressource zeigen

So funktioniert die URL-Struktur (RFC 3986)

Die URL-Anatomie

Eine URL folgt dieser allgemeinen Struktur:

schema://benutzerinfo@host:port/pfad?query#fragment

Jede Komponente dient einem bestimmten Zweck:

  • Schema -- identifiziert das Protokoll (http, https, ftp, ssh, mailto)
  • Benutzerinfo -- optionale Zugangsdaten (benutzer:passwort@), für HTTP/HTTPS als veraltet eingestuft
  • Host -- Domainname (example.com) oder IP-Adresse (192.0.2.1 oder [2001:db8::1])
  • Port -- optionale TCP-Portnummer; Standards hängen vom Schema ab (80 für HTTP, 443 für HTTPS)
  • Pfad -- hierarchischer Ressourcen-Identifikator (/api/v2/users)
  • Query -- Schlüssel-Wert-Parameter nach ?, getrennt durch & (status=active&limit=50)
  • Fragment -- clientseitiger Anker nach #, wird nicht an den Server gesendet (#section-2)

Prozentkodierung

Sonderzeichen in URLs müssen prozentkodiert werden mit % gefolgt von zwei Hexadezimalziffern. Gängige Kodierungen:

ZeichenKodiertHäufiger Kontext
Leerzeichen%20 oder +Query-Parameter
&%26Parameterwert mit wörtlichem &
=%3DParameterwert mit wörtlichem =
/%2FPfadsegment mit wörtlichem /
?%3FPfad mit wörtlichem ?
#%23Wert mit wörtlichem #

Standard-Ports nach Schema

SchemaStandard-Port
http80
https443
ftp21
ssh22
telnet23
mysql3306
postgresql5432

Wenn der Standard-Port verwendet wird, wird er typischerweise in der URL weggelassen. Der Parser identifiziert sowohl explizite als auch implizite Ports.

URL-Parsing in der Praxis

Der häufigste Grund, warum Entwickler einen URL-Parser verwenden, ist Debugging. Sie betrachten eine Weiterleitungskette und der finalen URL fehlt ein Query-Parameter, der in der ursprünglichen vorhanden war. Wurde der Parameter durch die Weiterleitung verworfen? Wurde er umbenannt? Wurde er in den Pfad absorbiert? Das parallele Parsen jeder URL in der Kette zeigt genau, wo der Parameter verschwunden ist. Dies ist besonders häufig bei OAuth-Flows, bei denen Redirect-URIs State-Parameter, Autorisierungscodes und Scope-Werte tragen, die mehrere Weiterleitungen intakt überstehen müssen.

Ein weiterer häufiger Anwendungsfall ist die API-Integrationsarbeit. Wenn Sie einen Webhook-Payload oder eine Callback-URL von einem Drittanbieter-Service erhalten, müssen Sie bestimmte Query-Parameter extrahieren, um das Ereignis zu verarbeiten. Die URL könnte tief in einer JSON-Antwort verschachtelt sein, innerhalb einer anderen URL URL-kodiert oder in einer Logdatei abgeschnitten. Das Parsen in Komponenten gibt Ihnen sauberen Zugriff auf jeden Parameter, ohne manuelles String-Splitting, das an Grenzfällen wie kodierten &-Zeichen innerhalb von Parameterwerten scheitert.

Für die Sicherheitsanalyse enthüllt URL-Parsing Verschleierungstechniken, die beim Betrachten der rohen URL unsichtbar sind. Ein Angreifer könnte ein kodiertes @-Zeichen (%40) verwenden, damit eine URL auf eine vertrauenswürdige Domain zu zeigen scheint, während sie sich tatsächlich bei einer bösartigen authentifiziert. Oder er könnte kodierte Pfadtrennzeichen verwenden, um pfadbasierte Zugriffskontrollen zu umgehen. Das Parsen der URL mit einem standardkonformen Parser zeigt die tatsächliche Struktur nach der Dekodierung und macht diese Techniken sichtbar.

Häufig gestellte Fragen

Warum wird das Fragment nicht an den Server gesendet?

Der Fragment-Identifikator (alles nach #) wird ausschließlich vom Client (Browser) verarbeitet. Er wird aus der URL entfernt, bevor die HTTP-Anfrage gestellt wird. Der Server sieht das Fragment nie. Dies ist in RFC 3986 definiert und wird für clientseitige Navigation innerhalb einer Seite, Single-Page-Application-Routing und Ankerlinks verwendet.

Wie behandelt der Parser URLs mit mehreren ?- oder #-Zeichen?

Gemäß RFC 3986 trennt nur das erste ? den Pfad von der Query und nur das erste # (nach der Query) trennt die Query vom Fragment. Zusätzliche ?-Zeichen innerhalb der Query werden als wörtliche Zeichen behandelt. Zusätzliche #-Zeichen innerhalb des Fragments sind ebenfalls wörtlich. Der Parser folgt diesem Standardverhalten.

Kann der Parser internationalisierte Domainnamen (IDN) verarbeiten?

Ja. Internationalisierte Domainnamen wie beispiel.de (mit Umlauten oder Nicht-ASCII-Zeichen) werden unverändert angezeigt, und der Parser zeigt auch die Punycode-Kodierung (z. B. xn--bsp-jma.example.com), die beim tatsächlichen DNS-Lookup verwendet wird.

Was ist der Unterschied zwischen %20 und + für Leerzeichen?

Beide repräsentieren ein Leerzeichen, werden aber in verschiedenen Kontexten verwendet. %20 ist die Standard-Prozentkodierung für ein Leerzeichen und ist überall in einer URL gültig. Die +-Kodierung für Leerzeichen ist spezifisch für das application/x-www-form-urlencoded-Format, das bei HTML-Formularübermittlungen und Query-Strings verwendet wird. In der Pfadkomponente ist + ein wörtliches Pluszeichen, kein Leerzeichen. Der Parser behandelt beide Kodierungen korrekt basierend auf ihrem Kontext.

Wie erkenne ich, ob zwei verschiedene URLs auf dieselbe Ressource zeigen?

Parsen Sie beide URLs und vergleichen Sie ihre Komponenten. URLs, die sich nur im Standard-Port unterscheiden (z. B. http://example.com vs. http://example.com:80), in nachgestellten Schrägstrichen, der Query-Parameter-Reihenfolge oder Kodierungsunterschieden, können zur selben Ressource führen. Verwenden Sie den URL Normalizer, um URLs vor dem Vergleich zu kanonisieren.

Warum wird meine URL in verschiedenen Programmiersprachen unterschiedlich geparst?

Verschiedene URL-Parsing-Bibliotheken können Grenzfälle unterschiedlich behandeln. Pythons urllib.parse, JavaScripts URL-Konstruktor und Gos net/url folgen im Allgemeinen RFC 3986, können aber bei fehlerhaften URLs, relativen Referenzen oder ungewöhnlichen Kodierungsmustern voneinander abweichen. Dieser Parser folgt strikt der RFC-3986-Spezifikation und ist als Referenzimplementierung nützlich, um sie mit dem Parser Ihrer Sprache zu vergleichen.

Verwandte Tools

IPparse•Kostenlose Netzwerk- & Subnetz-Rechner-Tools

© 2026 IPparse. All tools run locally in your browser.

100% Privacy-First • No Data Collected