URL パーサー

URL(Uniform Resource Locator)はWeb上のリソースを識別します。このツールはURLをスキーム、ホスト、ポート、パス、クエリパラメータ、フラグメントに分解します。パーセントエンコードされた値を自動デコードし、Punycode変換による国際化ドメイン名(IDN)を処理し、パラメータ内のBase64やJSONなどの埋め込みデータを検出できます。

仕様

よくあるユースケース

  • OAuth 2.0リダイレクトURLとコールバックパラメータのデバッグ
  • Webhook URLとそのクエリパラメータの検査
  • トラッキングパラメータの分析(UTM、リファラーデータ)
  • モバイルディープリンクのデコード(app://、カスタムスキーム)
  • URLルーティング問題のトラブルシューティング
  • 国際化ドメイン名をUnicodeとPunycode間で変換

機能

  • すべてのURLコンポーネントを解析(スキーム、ホスト、ポート、パス、クエリ、フラグメント)
  • パーセントエンコード(URLエンコード)された値を自動デコード
  • クエリストリングをキーと値のペアに解析
  • 国際化ドメイン名(IDN)をUnicodeとPunycode間で変換
  • パラメータ値内のBase64またはJSONを検出してデコード
  • 個別のコンポーネントをクリップボードにコピー

OAuthコールバック

試してみる →

codeとstateパラメータを含むOAuth 2.0認証コールバック。

https://app.example.com/callback?code=abc123&state=xyz789&redirect_uri=https%3A%2F%2Fexample.com

国際化ドメイン(Punycode)

試してみる →

Punycodeエンコードされたドメイン名を持つURL(xn--プレフィックスはIDNを示す)。

https://xn--mnchen-3ya.de/path

国際化ドメイン(Unicode)

試してみる →

Punycodeに変換されるUnicodeドメイン名を持つURL。

https://münchen.de/path

ヒント

  • パーセントエンコーディングは安全でない文字を%XXに置き換えます。XXは16進数値です。
  • フラグメント(#)はサーバーに送信されません。クライアント側専用です。
  • クエリパラメータは同じキーで複数回出現できます。
  • ユーザー情報の@や:などの一部の文字はエンコードが必要です。
  • パラメータ値にはencodeURIComponent()を、完全なURLにはencodeURI()を使用してください。

解説 URL パーサー

URL(Uniform Resource Locator)はWebのアドレッシングシステムであり、RFC 3986でURI(Uniform Resource Identifier)の特定タイプとして定義されています。URLは複数のコンポーネントで構成されます:スキーム(httpsなどのプロトコル)、オーソリティ(ホスト、オプションのポート、オプションのユーザー情報)、パス、オプションのキーと値のパラメータからなるクエリストリング、オプションのフラグメント識別子。

パーセントエンコーディング(URLエンコーディング)は、URL内の特殊文字を表現するメカニズムです。非予約文字セット(A-Z、a-z、0-9、-、_、.、~)以外の文字は%XXとしてエンコードする必要があります。XXはバイトの16進数値です。スペースは%20になります(クエリストリングでは+)。非ASCII文字はまずUTF-8バイトとしてエンコードされ、各バイトがパーセントエンコードされます。

クエリストリングは&文字で区切られたkey=valueペアとしてパラメータを運びます。Webアプリケーションはこれを検索語、ページネーション、フィルタリング、ソート、トラッキング(UTMパラメータ)に使用します。OAuth 2.0リダイレクトURLはクエリパラメータに認証コードとステートトークンを含みます。複雑な値自体がURLエンコードされている場合があり、慎重なデコードが必要なエンコーディングの層を作り出します。

国際化ドメイン名(IDN)はPunycodeエンコーディング(RFC 3492)を使用してドメイン名内の非ASCII文字を表現します。xn--プレフィックスはPunycodeエンコードされたラベルを示します。例えば、muenchen.deはxn--mnchen-3ya.deになります。このエンコーディングはASCII専用のDNSシステムとの互換性を確保しながら、あらゆる文字体系でのドメイン名をサポートします。

JavaScriptは異なる目的を持つ2つのURLエンコーディング関数を提供しています。encodeURIは完全なURIをエンコードし、URL内で構造的意味を持つ文字(: / ? # @ や = など)を保持します。encodeURIComponentはクエリパラメータ値のような単一のURIコンポーネントをエンコードし、/ や & を含むすべての特殊文字をエンコードします。パラメータ値にはencodeURIComponentを使用し、encodeURIは完全なURLをエンコードする場合にのみ使用してください。フラグメント識別子(#以降のすべて)はRFC 3986でクライアント側専用と定義されています。ブラウザはこれをページ内ナビゲーションやシングルページアプリケーションのクライアントサイドルーティングに使用しますが、サーバーに送信されるHTTPリクエストには含まれません。

PunycodeはASCII専用のDNSシステム内で国際化ドメイン名を可能にするエンコーディングです。非ラテン文字を含むドメインはxn--プレフィックス付きのPunycodeでDNSに保存されるため、muenchen.deはxn--mnchen-3ya.deとして保存されます。ブラウザはユーザーにUnicode形式を表示し、裏ではDNS解決にPunycode形式を使用します。

クエリストリングは同じパラメータ名に対して複数の値を含むことができます(例:?color=red&color=blue)。異なるフレームワークはこれを異なる方法で処理します——最後の値を返すもの、最初の値を返すもの、すべての値の配列を返すものがあります。このツールはすべてのパラメータの出現を表示します。JavaScriptでは、URLSearchParams.getAll()は最初や最後だけでなく、繰り返されるキーのすべての値を取得します。

← すべてのツールに戻る