本文へ移動
Develop Tools
← 使い方ガイドへ戻る

WebページをHTMLで保存する方法|ページの魚拓を手元に残す

後から本文や構造を確認したい場合は、何を保存するかを決め、HTMLソースまたは現在DOMを取得して、元URLと保存日時を記録します。HTML単体では外部Resourceまで完全保存されません。

HTMLソースを読み込み、相対URLと安全設定を確認してPreview後にHTMLを保存する流れ
HTMLソースを読み込み、相対URLと安全設定を確認してPreview後にHTMLを保存する流れ

HTMLをBrowser内で加工して安全にPreviewする

HTMLコードまたは1件のHTMLファイルを読み込み、元URL、JavaScript、Linkの扱いを設定して、sandbox付きPreviewを確認してから.htmlとして保存できます。

HTML魚拓作成・保存ツールを開く

結論:目的に合うHTMLを用意し、Previewと外部参照を確認してから保存する

静的なPageならPage sourceまたは保存済みHTML Fileを利用できます。JavaScriptで内容が追加されるPageは、初期HTMLではなく実行後DOMを取得する必要があります。

現行DevelopToolsはResource crawlerではありません。HTML内のURLを整えますが、CSS・画像・Fontを1ファイルへ収集しません。

「保存できた」と「将来も同じ見た目で完全再現できる」は別の判定です。

保存対象をHTMLソース・現在DOM・ページ完全保存に分ける

方式保存するもの残りやすいもの別途必要なもの
HTMLソース保存サーバーが返したHTML文字列静的なタグ・属性・本文JavaScript実行後に追加された内容
現在DOM保存ブラウザが構築・更新したDOMの直列化SPAが追加した要素Canvas画素、閉じたShadow DOM、すべての実行状態
ページ完全保存HTMLと参照Resource一式CSS・画像・Font等を収集できた範囲CORS・認証・動的通信・権利上の確認

「HTMLを保存した」は、外部CSS、画像、Font、動画、iframe先までファイル内へ入ったことを意味しません。まず何を後から確認したいかを決め、保存方式と不足情報を記録します。

保存前に目的と入力元を決める

本文・構造を残すのか、画面の見た目を残すのか、操作後の状態を残すのかで方法が変わります。

原本URL、取得日時、Browser、Login状態、JavaScript実行有無も作業記録へ残すと再確認しやすくなります。

確認項目確認方法判断
本文とTagHTMLソースを表示して確認静的Sourceで足りる
操作後のContentDOM inspectorで確認現在DOMが必要
見た目だけScreenshot/PDFと比較HTML以外も候補
Offline再現Networkを切って確認外部Resource収集が必要

HTML魚拓を作る基本手順

  1. 保存対象のHTMLソースまたはHTMLファイルを用意します。
  2. 元URLを入力し、相対URLの基準とMetadataを設定します。
  3. JavaScript削除を有効にし、必要なら外部Linkを無効化します。
  4. PC幅・Smartphone幅でPreviewし、本文・画像・Linkを確認します。
  5. 別名でDownloadし、再度開いてNetwork依存を確認します。

CORSでURL取得できない場合は失敗ではなく、貼り付けまたはFile読込へ切り替えます。

保存方式を目的別に選ぶ

目的第一候補
Tagと本文を調査HTMLソース
SPAの表示後Content現在DOM
見た目の記録ScreenshotまたはPDF
Offlineで近く再現Resourceを含む専用保存方式
改ざん耐性が必要信頼できるArchive・Timestamp基盤

外部Resourceと相対URLを保存前に確認する

記述HTML単体に含まれるか確認点
<link rel="stylesheet" href="/app.css">含まれない元Serverへ接続できるか、CSS内url()も解決できるか
<img src="../images/a.png">含まれない元URL基準で絶対URLへ変換されているか
<img src="data:image/png;base64,...">含まれる容量増加、MIME type、生成元の権利を確認
<canvas>描画命令・Bitmapは通常含まれない必要なら同一Origin条件で画像化する別工程が必要
blob: URL実体は含まれない作成元Pageの寿命を越えて利用できない

絶対URL化やbase要素の追加は参照先を直す処理であり、Resource本体をHTMLへ埋め込む処理ではありません。元ServerからResourceが削除されると、保存HTMLの見た目も変わる可能性があります。

DevelopToolsでできること・できないこと

項目現行ツールの対応
入力HTMLコード貼り付け、.html/.htm 1ファイル、CORSを許可したURLからの取得
URL処理元URLを基準にhref・src・srcset・poster・actionを絶対URL化し、必要ならbaseを追加
安全化初期設定でscript、on*属性、javascript: URL、meta refreshを除去。リンク無効化は選択式
Metadata魚拓Title、Local保存日時、元URLを本文先頭へ追加
Previewscript権限を与えないsandbox付きiframeでPC幅・Smartphone幅を確認
出力DOCTYPEとUTF-8 metaを含むHTMLを、Windows禁止文字を置換したFile名でDownload
未対応閲覧中PageからのDOM直接取得、外部Resourceのinline化、ZIP、Canvas/Shadow DOM状態、完全Offline化

URL欄は任意サイトを回避取得するProxyではありません。取得先がCORSで許可しない場合は、HTMLソースまたは現在DOMを利用者自身で用意して貼り付けます。

保存HTMLは信頼できないActive Contentとして扱う

DOMParserでtext/htmlとして解析したDocumentは処理中は概ねinertですが、未加工NodeをActive DOMへ挿入すればevent handler等が動く可能性があります。parseしただけで安全になったとは判断できません。

  • 初回はNetworkと機密Dataを切り離した環境で確認する
  • script、onerror等のevent属性、javascript: URL、meta refreshを確認する
  • iframe、object、embed、form、外部Resource、Download linkの遷移先を確認する
  • Previewではallow-scriptsやallow-same-originを安易に付けずsandboxで隔離する
  • 保存日時は利用端末のLocal時刻であり、改ざん耐性のあるTimestampや法的証拠ではない

仕様確認に使用した一次資料

CORS、sandbox、HTML直列化、Shadow DOM等はBrowser実装が更新されます。保存手順を固定する場合は対象Browserの対応状況と、利用時点のMDN・HTML Standardも確認してください。

具体例:公開仕様PageのHTMLを日付付きで保存する

静的な仕様PageのSourceを保存し、取得元URLと保存日時を魚拓上部へ記録します。

本文とLink構造は残りますが、外部CSSと画像は元Serverへ接続するため、Offline確認結果も記録します。

  1. Page sourceをUTF-8でCopy
  2. DevelopToolsへ貼り付け
  3. 元URLとTitleを入力
  4. 安全Previewを確認
  5. archive日付付きFile名で保存

第三者Pageを保存・共有する場合は著作権、利用規約、個人情報を確認してください。

よくある質問

URLを入力すれば、どのWebページでも保存できますか?
できません。Browserのcross-origin readは取得先ServerのCORS許可に依存します。許可されない場合はHTMLソース保存、現在DOMのコピー、保存済みHTMLファイルの読込へ切り替えます。
生成したHTMLは完全なオフライン保存ですか?
いいえ。現行ツールは外部CSS、画像、Font、動画等をファイル内へ埋め込みません。絶対URLへ変換しても参照先Serverへの通信は残ります。
入力したHTMLはDevelopToolsへ送信されますか?
貼り付け・File読込・加工・DownloadはBrowser内で処理します。URL取得を実行した場合だけ、利用者のBrowserから入力した取得先URLへ直接通信します。