·4分で読めます

MacのURLエンコーダー/デコーダー

%20や%3DだらけのパーセントエンコードされたURLを読むのは、すべてのスペースが数字に置き換えられた文章を読むようなものです。

サーバーログからURLを取り出すと、こんな見た目になっています。https://example.com/search?q=hello%20world&redirect=https%3A%2F%2Fother.com%2Fpath。クエリパラメータを読みたいのに、パーセントエンコーディングのせいで一目で理解するのはほぼ不可能です。そこでブラウザツールに貼り付けてデコードし、結果を読み、何かをテストするために修正版を再エンコードします。本来些細な作業のはずが、ウェブサイトへの往復が2回発生します。

URLエンコーディングは、開発者が常に扱いながらもほとんど意識しないものの1つです——リダイレクトが壊れたり、クエリ文字列が不正な形式になったり、二重にエンコードされたパラメータによって、5分の作業が1時間のデバッグセッションに変わるまでは。

URLエンコーディングが実際に問題を引き起こすとき

二重エンコーディングは典型的な罠です。URLがアプリケーションで一度エンコードされ、さらにミドルウェア層で再度エンコードされると、%20%2520になってしまいます。これを診断するには、URLを段階的にデコードして、どこで余分なエンコーディングが紛れ込んだかを正確に把握する必要があります。ターミナルでpython3 -c "import urllib.parse; print(urllib.parse.unquote('...'))"を使えば動作はしますが、長いURLに対しては遅く、ミスも起こりやすくなります。

エンコーディングのミスは、OAuthフローやウェブフックURL、リダイレクトURIが完全に一致する必要があるAPIコールバックも壊してしまいます。素早くエンコード・デコードできれば、アプリが送信する内容とサーバーが期待する内容を比較できます。

URLを即座にエンコード・デコード

Bellowsには、41個の開発者ツールの1つとしてURLエンコーダー/デコーダーが含まれています。エンコードされたURLを貼り付ければ読みやすいバージョンが表示され、平文のURLを入力すれば適切にエンコードされた出力が得られます。ワンクリックでエンコードとデコードを切り替えられ、結果はリアルタイムで更新されます。

Bellows URL encoder and decoder tool on macOS

リダイレクトのデバッグ

OAuthやSSOのフローでは、リダイレクトURIがURLエンコードされたクエリパラメータとして渡されます。リダイレクトが失敗したとき、最初のステップはURLをデコードして、対象が登録済みのコールバックと一致しているかを確認することです。ローカルツールがあれば、IDEを離れることも、機密性のある可能性のあるコールバックURLを公開ウェブサイトに貼り付けることもなく、これを行えます。

クエリ文字列を扱う

複雑なフィルターや検索クエリをURLパラメータで受け取るAPIでは、&=+、スペースといった特殊文字を注意深くエンコードする必要があることが多くあります。専用のエンコーダーを使えば、特定の文脈でどの文字をエスケープすべきか推測することなく、正しい出力が得られます。

Mac App StoreでBellowsを入手する

次の記事

Bellows

41 developer tools in one native Mac app — JSON, JWT, Base64, hashes, and more.

Get Bellows on the Mac App Store