MHT ファイルとは
Internet Explorer や Word、Chrome の「MHTML として保存」がページを一つのファイルに書き出したとき、できあがるのは RFC 2557 形式の電子メールです。multipart/related の本体に HTML と、そのページが参照していた画像・スタイルシート・スクリプトがすべて収まり、各パートには取得元の URL が記されています。じゅうぶん理にかなった形式ですが、いまではほとんど何も開けません。
表示のしくみ
パートを分離し、それぞれを転送エンコーディング(テキストはたいてい quoted-printable、画像は Base64)から復号したうえで、ルート HTML の参照を書き換えます。この最後の工程が仕事のほぼすべてです。src・href・CSS の url() はいずれも元の絶対アドレスを指したままなので、書き換えなければページは素のまま表示されます。各参照は、そのために保存されたパートへ Content-Location(cid: 参照なら Content-ID)で結び付けられ、そのパートのバイト列を指すようになります。
何も取得せず、何も実行しない
再構成したページは sandbox="allow-same-origin" だけを付けた iframe に入れます。allow-scripts はないので、アーカイブ内のスクリプトは一切動きません。
さらに default-src 'none' の Content-Security-Policy をページに挿入します。これは見た目以上に重要です。アーカイブが保存しなかった参照は書き換え後も絶対 http URL のまま残り、ブラウザーは表示の際にそれを黙って取りに行きます。このポリシーがそれを止めます。読み込みが許されるのは blob: と data:、つまりファイルの中にあるパートだけです。
不完全なアーカイブ
ウェブアーカイブは日常的に不完全なまま保存されます。保存側がたどらなかったスタイルシート内の背景画像、遅延読み込みの画像、別ドメインのフォントなどです。そうした参照は数えて一覧します。ページの表示がおかしいとき、その一覧がたいてい理由を説明してくれます。壊れた画像アイコンよりはるかにましな答えです。
そのほかの表示
件名、ページを保存した日付、そして元の URL — ルートパートの Content-Location で、そのページが実際にあった場所です。加えて各パートの MIME タイプ、転送エンコーディング、宣言された文字セット、復号後のサイズ、そしてルート HTML のソースを読むための切り替え。
プライバシー
アーカイブはブラウザー内で開かれます。アップロードもされず、アーカイブもツールもネットワークに接続しません。
Tiny Online Tools







