
2026/11/01 19:44
異例のユニコード文字を使用するドメインハック(2018年)
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
インターネットは、現代のシステムが DNS の構造において特別なユニコード文字を有効なトップレベルドメインとして扱うようになったため、標準的な文字と数字を超えて進化しています。ブラウザに入力する際に、これら独自の記号を含む URL を入力すると、IDNA2008 プロセス(RFC5895)によって自動的に標準の ASCII テキストに変換されます。このプロセスは、Simple_Lowercase_Mapping 属性に基づいて特定のユニコードエントリを構成要素である ASCII 文字にマッピングします。この機能は国番号コードだけでなく、アメリカ合衆国の州名などのサブドメインや、数学風やフランクフルト体のような様々なスタイルフォントにも適用され、ユーザーが視覚的に特徴のあるウェブアドレスを作成することを可能にしています。この革新は、一部のソーシャルメディアプラットフォームにおける文字数の制限や URL フィルタへの巧妙な回避手段を実現しますが、互換性において重大な分断を生み出します:ブラウザや
wget/curl などのツールは概ね対応していますが、dig や host といった伝統的なユーティリティや一部のオンラインサービスでは、このような複雑なドメイン構造を認識できず動作しない場合が多いです。したがって、開発者は独自のデジタルアイデンティティを構築できる一方で、レガシーのネッティングツールに依存する組織は、専用の設定なしではこれらの革新的なアドレスを解決することが困難であり、すべてのユニコード文字が対応しているわけではありません(例えば、特定のスタイルで点がついている丸や四角形などはサポートされていない)。本文
ユニコードの「派手な」ドメイン名:見えないリンクと URL の魔法
ユニコード規格には、あまり使用されていないシンボルが多数存在します。 商標記号
™、サービスマーク ℠、処方箋用記号 ℞ など、単なる文字ではない特殊な記号も定義されています。
📦 雑多な文字(Miscellaneous)の奇妙なエントリ
「文字似符号」カテゴリには、以下のような単一文字のエントリがあります。
- 電話記号:℡
- ヌメロサイン:№
ドメイン名として使える?
驚くべきことに、これらの文字はドメインネームシステム(DNS)上のトップレベルドメイン(TLD)として機能します。
の代わり:https://edent.tel/https://edent.℡/
の代わり:https://www.norid.no/https://www.norid.№/
注意:これらのリンクをコピーしてブラウザに貼り付けると、正常に表示されます。
🎨 ドメイン名の任意部分への適用
この手法は TLD だけでなく、ドメイン名の任意の部分にも適用可能です。以下の例のように、URL の文字自体を変形させることができます。
| スタイル | URL 例 |
|---|---|
| スクリプト風 | |
| マス体太字 | |
| フラクチャー | |
| マス体太字斜体 | |
| マス体太字スクリプト | |
| ダブルストローク | |
| モノスペース | |
| スーパースクリプト | |
| マス体無衬線太字 | |
| マス体無衬線太字斜体 | |
| マス体無衬線斜体 | |
| マス四角形 | (※注:ドットは必ず四角形でなければなりません) |
| 丸囲み | (※注:ドットは丸囲みにしてはいけません) |
⚠️ 注意点:すべてのフォントスタイルがブラウザでサポートされているわけではありません。
🪄 仕組みは?(魔法の裏側)
これは実際には「魔法」ではなく、ブラウザが行う自動変換処理によるものです。
- DNS サーバーの役割:
といったクエリに対して、DNS サーバー自体はdig edent.℡
という記号をそのまま認識・返信することはしません。.℡ - ブラウザの正規化:
ブラウザはドメイン内で特殊な文字(例:
)を見つけると、RFC 5895 に規定された IDNA2008 プロセスに従って自動で正規化します。.℡ - マッピング処理:
Unicode データベース(
プロパティ)を参照し、特殊文字を通常のアルファベットに置き換えます。Simple_Lowercase_Mapping
℡ の変換例(内部データ)
Unicode データ内のエントリには以下のような情報があります:
2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
→ TU+0054
→ EU+0045
→ LU+004C
これにより、
.℡ は .tel として解釈されます。Python では以下のようにテスト可能です:
import sys print(sys.argv[1].decode("utf-8").encode("idna"), "℡")
✅ 実際に動作する?
はい、現代的なブラウザやオペレーティングシステムであれば問題なく動作します。 また、コマンドラインツール(
wget, curl)でも正常に機能します。
⛔ 失敗するケースと制限事項
一方で、以下の状況ではリンクとして認識されません:
- 特定の Web サイト:Twitter や Facebook など、一部のプラットフォームはこれを有効な URL とみなさず、自動でリンク化しません。
- コマンドラインツール:
,dig
などの DNS クエリツールもこのドメインを解釈できません。host
以下は
bash で dig を実行した結果の例(失敗ケース)です:
<<>> DiG 9.10.6 <<>> edent.℡;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 55282
💡 なぜこれが必要なのか?(有用性)
この技術は非常に有用であり、近年の重要な発見の一つです。その利点は以下の通りです:
- 見た目が派手:URL そのものが装飾的です。
- 文字数の節約:特定のドメインでは略語として機能し、URL を短くできます。
- フィルタ回避:内容が不適切と判断されやすい URL でも、特殊記号を使うことでアクセス可能になる場合があります(※全てのプラットフォームで有効ではありません)。
重要:あらゆる現代的なブラウザはこれらの「派手な」ドメイン名をサポートしていますが、自動リンク化されないサイト(Facebook など)では共有しても機能しません。
🌍 どこで使える?(有効な TLD の一覧)
主に国コードですが、以下の単一文字が有効な TLD にマッピング可能です。
| シンボル | 国・地域 / 備考 |
|---|---|
| ㏕ | 米国軍(米海兵隊など) |
| ℡ | .tel レジストリ |
| № | ノルウェー |
| ㍳ | オーストラリア |
| ㍷ | ドミニカ共和国 |
| ㎀ | パナマ |
| ㎁ | ナミビア |
| ㎃ | モロッコ |
| ㎊ | フランス領ポリネシア |
| ㎋ | ノルfolkアイルランド |
| ㎏ | キルギス |
| ㎖ | マリ |
| ㎙ | ミクロネシア連邦 |
| fi | フィンランド |
| ㎜ | ミャンマー |
| ㎝ | カメルーン |
| ㎞ / ㏎ | コモロ |
| ㎰ | パレスチナ |
| ㎳ | モントセラト |
| ㎷ / ㎹ | マレー共和国(旧名) |
| ㎺ | パラオ |
| ㎽ / ㎿ | マラウイ |
| ㏄ | ココス(キーリング)諸島 |
| ㏅ | コンゴ民主共和国 |
| ㏉ | ガイアナ |
| ㏗ | フィリピン |
| ㏘ | サン=ピエール=ミクロン諸島 |
| ㏚ | プエルトリコ |
| ㏛ | スリナム |
| ㏜ | エルサルバドル |
| ℠ | サンマリノ |
| ™ | トルクメニスタン |
| st / ſt | サオトメ・プリンシペ(旧名) |
| ㎇ | グレートブリテン(廃止) |
| ß | 南スーダン(利用不可) |
| ㏌ | インドおよびインディアナ(.us のサブドメイン) |
| Ⅵ / ⅵ | バージン諸島およびバージニア(.us のサブドメイン) |
| fl | フロリダ(.us のサブドメイン) |
| ㎚ | ニューメキシコ(.us のサブドメイン) |
| ㎵ | ネバダ(.us のサブドメイン) |
| ㍵ | .ovh の一部として使用 |
さらに有効な文字が見つかった場合は、コメント欄にご連絡ください。
🔗 このブログ記事はいつでも以下で閲覧できます:
https://🅂𝖍𝐤ₛᵖ𝒓.ⓜ𝕠𝒃𝓲/🆆🆃🅵/