URLパーサー
URLを高速に解析し、必要なクリーンな部分を簡単に取得。
このツールについて
ログファイル、ユーザー入力、あるいはウェブからコピーしたものなど、URLを取得した——そしてそれを分解する必要がある。単に見るだけでなく、各部分が実際に何を意味するのかを理解したい。そこでURLパーサーの出番だ。これは魔法ではないが、それに近い。ウェブアドレス用のスイスアーミーナイフと考えてほしい。複雑で汚いURLを渡すと、プロトコル、ドメイン、パス、クエリパラメータ、フラグメントなど、きれいにラベル付けされた部品として返してくれる。
これまでにいくつかのツールを使ってきたが、ほとんどはやりすぎか、あるいはあまりにも基本的すぎる。中には検証、リダイレクト、サニタイズなどすべてを試みるものもいれば、文字列を分割して終わりというものもある。このツールは?シンプルだ。パースするだけだ。それだけ。余分な機能はない。もっと必要なら、その上に機能を構築すればいい。簡単だ。
主な機能
- 標準的なURLをスキーム、ホスト、ポート、パス、クエリ、フラグメントといった主要コンポーネントに分解する。
- プロトコルの欠落、デフォルトポート、エンコードされた文字などのエッジケースをクラッシュすることなく処理する。
- クエリパラメータをきれいなオブジェクトまたは辞書として返すため、手動で分割・デコードする必要がない。
- 絶対URLと相対URLの両方に対応している。正直に言って、「https://」で始まるリンクばかりではないからだ。
- 軽量かつ高速——依存関係も肥大化もない。パースして終わりだ。
- 複数の言語(JavaScript、Pythonなど)で利用可能なので、コードがどこにあるかに関わらず使用できる。
よくある質問
Q: URLを検証するのか、それともパースするだけなのか?
A: パースするだけだ。「htp:/broken-url」のようなゴミを入力しても、それでも意味を理解しようとするが、「これは無効だ」とは言わない。それはあなたの責任だ。検証が必要なら、正規表現や専用の検証ツールと組み合わせるべきだ。パースと検証は別の仕事だ。
Q: 国際ドメインや変わったエンコーディングはどう扱うのか?
A: はい、パーセントエンコードされた文字(スペースの%20など)を適切にデコードする。国際ドメイン(.рфや.中国など)については、必要ならすでにPunycode形式になっているものとみなす——現代のほとんどのシステムは、URLがパーサーに到達する前にその処理を行う。ただし、キリル文字を翻訳してくれることは期待しないでほしい。