Punycode(IDN)変換
Web処理はすべてブラウザ内で完結します。データは送信されません
日本語・中国語・ドイツ語などの国際化ドメインを Punycode(xn--r8jz45g.jp)に、あるいは xn-- で始まる文字列を読める形に戻します。ブラウザが助けてくれるのは片方向だけです。日本語ドメインを入力すれば符号化してくれますが、xn-- の文字列を渡しても中身は教えてくれません。そして必要になるのはむしろ後者です。文字化けしたドメインを受け取り、クリックする前に正体を知りたい —— まさにその場面です。結果はラベルごとに対応を示すので、どの部分が何になったかが一目で分かります。あわせて 2 つの検査も行います。63 バイトを超えるラベル(DNS の上限で、日本語ドメインはすぐ達します)の指摘と、複数の文字体系が混在するドメイン(аpple の a に見えるキリル文字)の同形異義字リスクの警告です。
機能
- 双方向に対応:国際化ドメインを xn-- へ、xn-- を読める形へ
- ラベルごとの対応表で、どの部分が何になったかが分かります
- 完全な URL ではホスト名だけを変換し、プロトコル・パス・ポート・クエリはそのまま
- ラベルが 63 バイトを超える場合は DNS の長さ制限を警告
- ラテン文字とキリル文字・ギリシャ文字が混在するドメインは同形異義字フィッシングのリスクとして警告
- 日本語入力の句点「。」もピリオドとして扱います
- ブラウザの IDN 実装と 1 文字単位で一致します(実行時の変換結果と突き合わせて検証済み)
使い方
- ドメインまたは完全な URL を貼り付けます(xn-- を含むものは復号、それ以外は符号化)
- Unicode 形式と Punycode 形式の両方が表示されます
- 判定が違う場合は方向を手動で指定してください
- 必要な行は行ごとのコピーボタンで取り出せます
よくある質問
- Punycode とは何で、なぜ必要なのですか?
- DNS は ASCII 文字しか扱えないため、日本語や中国語のドメインは RFC 3492 に従って xn-- で始まる文字列に符号化してから解決されます。アドレスバーには読める形が表示されますが、実際の問い合わせや証明書で使われるのは Punycode の形です。名前解決の調査、証明書の申請、メールヘッダーの確認で必要になるのはこの文字列です。
- 同形異義字のリスクとは何ですか?
- 文字体系が違っても形がほぼ同じ文字があります。キリル文字の а(U+0430)とラテン文字の a がその例です。攻撃者は аpple.com を登録でき、画面上では apple.com と見分けがつかないため、フィッシングに使われます。本ツールはラテン文字とキリル文字・ギリシャ文字が混在する場合に警告します(純粋にラテン文字のみ、キリル文字のみの場合は警告しません)。
- ラベルの長さが超過するのはなぜですか?
- DNS では 1 つのラベルは 63 バイトまでですが、Punycode に符号化すると長さはおよそ 2 倍になります。漢字・かな 1 文字は 3 バイトで、符号化後は平均 4〜5 文字になります。そのため 15 文字程度のラベルでも 63 バイトを超えることがあります。ブラウザは止めてくれず、解決の段階で失敗します。
- 入力したドメインは記録されますか?
- いいえ。変換はブラウザ内で完結し、ページはリクエストを送りません。ドメイン自体が情報を含むことがあり(社内システムのホスト名など)、それが端末から出ることはありません。
関連ツール
ドメイン分解
Webドメインをサブドメイン・登録ドメイン・公共サフィックス・TLD に分解し、TLD の種類とローカライズされた国名、IDN の Punycode 形式を示します。
URL 解析
WebURL を解析し、スキーム・ホスト・ポート・パス・クエリパラメータ・アンカーに分解します。パラメータは元の値とデコード値を並記。すべてブラウザ内で処理します。
URL エンコード
エンコード日本語や中国語、空白・記号を %XX にエスケープし、復元します。URL 全体とパラメータ値では方式が異なり、間違えるとリンクが開けません。ブラウザ内で処理します。
UA 解析
WebUser-Agent を解析し、ブラウザ・バージョン・OS・デバイス種別・エンジンを判定します。判定はパターン照合による概算です。すべてブラウザ内で処理します。
HTTP ステータスコード
WebHTTP ステータスコードの検索。番号から意味を、キーワードから番号を引けます。1xx〜5xx の分類・利用場面・確認のポイント付き。すべてブラウザ内で処理します。
MIME タイプ
Web拡張子から MIME タイプを、MIME タイプから既定の拡張子を検索。js なら text/javascript、image/svg+xml なら .svg が返ります。すべてブラウザ内で処理します。