URLパーサー
Webhookが誤作動したり、トラッキングリンクが誤ったパラメータを運んだりしたとき、いちばん速いのはURLを分解して各部分を読むことです。任意のURLを貼り付けると、このパーサーがそれを構成要素に分解します。スキーム、ユーザー名とパスワード、ホスト、ポート、パス、クエリ文字列、フラグメントに分け、さらにクエリをキーと値のペアの表に展開します。当社のサーバー上でPHP標準のURLパーサーを使って動作するため、PHPのバックエンドが同じリンクをどう読むかがそのまま分かります。
URLを解析する方法
-
1
URLを貼り付け
絶対URLでも相対URLでも、任意のURLを入力します。クリックするものはなく、入力しながら解析されます。
-
2
各部分を読む
見つかったスキーム、ホスト、ポート、ユーザー、パスワード、パス、クエリ、フラグメントが表に入ります。空の部分はダッシュで表示されます。
-
3
クエリを展開する
各`key=value`のペアがそれぞれの行に表示され、パーセントエンコーディングと`+`は実際の文字にデコードされます。
-
4
パラメータをコピー
コピーボタンで、すべてのクエリパラメータを一度に`key=value`形式の行として取得でき、APIクライアントに貼り付ける準備が整います。
URLの構造
https://user:pass@api.example.com:8443/v1/users?page=2&sort=name#profileというURLを例にとります。パーサーはこれを次のように分解します。
| 部分 | 値 |
|---|---|
| scheme | https |
| user | user |
| pass | pass |
| host | api.example.com |
| port | 8443 |
| path | /v1/users |
| query | page=2&sort=name |
| fragment | profile |
続いて、クエリ文字列は専用の表に展開されます。page = 2、sort = name です。
クエリ文字列の読み取り方
- 値はパーセントエンコーディングからデコードされ、
+は空白になります。そのためq=hello%20worldとq=hello+worldはどちらもhello worldと読まれます。 - ペアは最初の
=で分割されるため、token=a=b=cはa=b=cを値として保持します。 - 重複したキーは最後の値だけを保持します。
?id=1&id=2はid=2を返します。すべての値を保持したい場合は配列構文id[]=1&id[]=2を使うと、リストとして表示されます。 filter[status]=openのような角かっこ付きのキーは入れ子構造になり、JSONとして表示されます。
ポート、パス、フラグメント
- ポートは書かれたとおりに表示されます。何も追加も削除もされないため、
:443は443と表示され、ポートのないURLではその行が空になります。 - 末尾のスラッシュはパスを変えます。
https://a.comのパスは空で、https://a.com/のパスは/です。 - フラグメント(
#の後)はブラウザだけが使う値で、アンカーへのスクロールやクライアントサイドのルーターの制御に使われます。サーバーには決して届かないため、バックエンドが読む必要のあるものはクエリ文字列に入れてください。 - ホストは入力されたとおりに返されます。このパーサーは国際化(非ASCII)ドメインをPunycodeに変換したり、その逆を行ったりしません。
よくある質問
はい。/v1/users?ref=navのような相対リンクにはスキームもホストもないため、それらの行は空のままで、パスとクエリは入力されます。完全に拒否されるのは、http://a.com:portのように数字でないポートを持つ、形式が誤ったURLだけです。
最後の値だけが保持されるため、?id=1&id=2はid = 2を返します。これはPHPのバックエンドが読み取るのとまったく同じです。すべての値が必要な場合は配列構文id[]=1&id[]=2を使うと、リストとして表示されます。
パーサーはポートを書かれたとおりに表示します。既定のポートを削除したり、欠けているポートを補ったりすることは決してないため、ポートのないURLは空の行を表示し、https://a.com:443は443を表示します。
このツールはブラウザだけでなくサーバー上で動作するため、URLは解析のために当社のサーバーへ送信されます。URLそのものは保存しません。パーサーが使われたという匿名の回数のみを記録します。
関連ツール
ASCII表リファレンス
0から127までの完全なASCII表です。NUL、LF、DELなどの制御コードを含め、各文字の10進数、16進数、8進数、2進数、HTML数値文字参照を表示します。
HTML文字参照
HTMLエンティティの検索可能なリスト、その名称コードおよび数値コード、および特殊文字や記号のワンクリックコピー機能を提供します。
JavaScript圧縮ツール
変数名のリネーム、空白の削除、デッドコードの除去、定数畳み込みでJavaScriptを圧縮し、より小さなバンドルを作成します。
FPS カウンター
requestAnimationFrame でブラウザーの FPS を測定。平滑化、最小・最大フレームレート、警告しきい値、任意のグラフに対応。ローカルで動作し、アップロードも API も不要です。
プレースホルダー画像ジェネレーター
1〜4000 pxの画像に色と文字を設定し、PNGで保存できます。外部URLとHTMLもコピーできます。
キーボードショートカット一覧
macOS、Windows、Linux向けに、VS Code、Chrome、GNU Readlineを使うBashの公式資料に基づく既定ショートカットを検索できます。
このツールは他の言語でも利用できます
- ตัวแยกวิเคราะห์ URL [TH]
- محلل عناوين URL [AR]
- URL-parser [NL]
- URL-parser [SV]
- Analyseur d'URL [FR]
- Parser URL [PL]
- URL Parser [ID]
- Analisador de URL [PT]
- URL-Parser [DE]
- Analizador de URL [ES]
- URL 파서 [KO]
- Trình phân tích URL [VI]
- URL Parser [EN]
- Parser URL [IT]
- Парсер URL [RU]
- URL Ayrıştırıcı [TR]
- URL解析器 [ZH]