手軽屋
ツール一覧

URLとURIの違い|RFC 3986の構文を5分で理解する

URLは「住所」、URIは「識別子」――その違いはRFC 3986を読むと一発で腑に落ちます。

参照した一次情報

URI・URL・URNの関係

まず結論:URIが最も広い概念で、URLとURNはそれぞれURIの「使い方」を指す呼び方です。

つまり「URLはURIの一種」が正確な関係です。日常会話では「URL」がほぼ全用途で使われますが、技術文書ではより広い概念のURIが選ばれます。

RFC 3986が定義するURI構文

RFC 3986はURIを次の5つの構成要素に分解します。

scheme://userinfo@host:port/path?query#fragment
\____/   \______/ \__/ \__/\___/ \___/ \______/
  ①       ②      ③   ④   ⑤    ⑥    ⑦

例: https://user:pass@www.example.com:443/products?id=42&type=new#section-3
    ①       ②         ③               ④   ⑤        ⑥             ⑦
要素意味
① schemeプロトコル種別https / mailto / data
② userinfo認証情報(非推奨)user:pass
③ hostドメイン/IPwww.example.com
④ portポート番号443 / 8080
⑤ pathサーバ上の場所/products
⑥ queryパラメータid=42&type=new
⑦ fragmentページ内位置#section-3

IANA管理の公式スキーム

スキームは100種類以上が登録されています。よく目にする代表例:

http://     ── 平文HTTP(多くがhttpsへリダイレクト)
https://    ── 暗号化HTTP(現在のWeb標準)
ftp://      ── ファイル転送
file://     ── ローカルファイル
mailto:     ── メーラー起動(ホスト部なし)
tel:        ── 電話発信(モバイルで重要)
sms:        ── SMS送信
data:       ── インラインデータ(Base64画像など)
javascript: ── JS実行(セキュリティ上は使用回避)
about:      ── ブラウザ内部ページ(about:blank等)
cid:        ── メール内画像参照(HTMLメール)
urn:        ── 名前型識別子(ISBN等)

本ツールの抽出対象はhttp://https://に絞っています。tel:mailto:は別カテゴリ(電話/メール)として扱う方が混乱しないためです。

URL抽出で起きるトラブルと対策

RFC 3986とWHATWG URL Standardの違い

RFC 3986が「すべてのURI」をカバーするのに対し、WHATWG URL Standardは「ブラウザが実際にどう解釈するか」を定義しています。両者は完全に一致しません。

ブラウザのアドレスバーやJavaScriptのnew URL()はURL Standard準拠。サーバ側のURIライブラリはRFC 3986準拠が多いです。

URLの抽出は「悪用」もしやすい

文章からURLを取り出すと、リンク先がフィッシングや有害サイトの場合があります。営業活動や調査で外部のURLにアクセスする際は、必ず内容を確認してから踏むのが安全です。

本ツールはURLを「取り出す」だけで、自動的にアクセスしません。だから個人情報を含むURL(OAuth認証コード付きの戻りURL等)を貼っても外部に送られることはありません。

本ツールでの位置づけ

本ツール「メール・URL・電話番号 抽出」のURL抽出は、RFC 3986のうちhttp:///https://で始まる文字列に絞り、末尾の句読点・かっこ・前後の空白を自動的に除外します。

クエリ文字列やフラグメント(#以降)も保持されるため、SNS投稿URL(https://x.com/user/status/123?lang=ja)やGitHubのアンカー付きリンク(https://github.com/user/repo#installation)もそのままの形で取り出せます。

関連ツール・記事