Chrome の Cookie を JSON にエクスポートする方法
TL;DR:Chrome の Cookie を JSON にエクスポートするには、CookieVault Editor をインストールし、Export をクリックして JSON(または curl/wget 用に Netscape cookies.txt)を選びます。Chrome DevTools にはエクスポート機能が組み込まれていません。CI/CD で自動化するには Puppeteer の「page.cookies()」または Playwright の「context.cookies()」を使います。
Chrome の Cookie の JSON エクスポートは、ブラウザの Cookie ストアを構造化ファイルにシリアライズするプロセスです。エクスポートしたファイルはバックアップ、共有、別ブラウザプロファイルへのインポート、「curl」や「wget」などコマンドラインツールへの投入に使えます。Chrome DevTools の Application パネルは Cookie の表示と編集ができますが、エクスポートボタンはありません —— 構造化エクスポートには Manifest V3 拡張機能かヘッドレスブラウザスクリプトが必要です1。本ガイドは異なるワークフローへの実用度順に 3 つの方法を扱います。
クイック比較:エクスポート方法
要点:対話的なワンクリックエクスポートには Manifest V3 拡張機能を使います。CI/CD パイプラインでの自動エクスポートには Puppeteer または Playwright を使います。拡張機能がインストールできない一回限りの取得には DevTools コンソールを使います(HttpOnly Cookie が欠落する点に注意)。
| 方法 | HttpOnly Cookie エクスポート | 出力形式 | 自動化対応 | 拡張機能が必要 |
|---|---|---|---|---|
| CookieVault Editor(拡張機能) | あり | JSON、Netscape、HAR | なし(手動クリック) | 必要 |
| Puppeteer「page.cookies()」 | あり | JSON(「JSON.stringify」経由) | あり(スクリプト化、CI 対応) | 不要(ヘッドレス Chrome) |
| Playwright「context.cookies()」 | あり | JSON(「JSON.stringify」経由) | あり(スクリプト化、CI 対応) | 不要(ヘッドレス Chromium) |
| DevTools コンソール「document.cookie」 | なし(HttpOnly 取りこぼし) | 生文字列(手動解析) | なし | 不要 |
| DevTools ネットワーク経由の HAR | 部分(リクエストヘッダー内) | HAR | なし | 不要 |
Chrome DevTools のドキュメントによれば、Application パネルの Cookie テーブルは検査と編集のために設計されており、データエクスポートのためではありません1。ネットワークパネルは Cookie ヘッダーを含む完全なリクエスト記録を HAR ファイルとしてエクスポートできますが、HAR から個別の Cookie を取り出すには後処理が必要です。
方法 1:CookieVault Editor(推奨)
要点:CookieVault Editor は Cookie をツールバーポップアップから 3 つの形式でエクスポートできます —— 構造化データには JSON、curl/wget には Netscape cookies.txt、完全なリクエスト記録には HAR。HttpOnly Cookie を含めてエクスポートあたり 1 クリックです。
8 ステップのエクスポートワークフロー:
- エクスポートする Cookie を決める —— 単一ドメインのエクスポート(例えば「staging.example.com」)が必要か、完全なブラウザエクスポートが必要かを判断します。単一ドメインのほうが小さく安全に共有でき、完全エクスポートはセッション状態全体をキャプチャします。
- エクスポート形式を選ぶ —— プログラム利用と再インポートには JSON。「curl -b」と「wget —load-cookies」には Netscape cookies.txt。ヘッダーとレスポンスボディを含む完全なリクエスト記録には HAR。
- CookieVault Editor をインストール —— Chrome ウェブストアからインストールします。HttpOnly Cookie を含む完全な Cookie ストアにアクセスする「cookies」権限を要求します。
- 拡張機能のポップアップを開く —— CookieVault Editor のツールバーアイコンをクリックします。ポップアップは現在のドメインの全 Cookie を表示します。「すべての Cookie」をクリックするとブラウザ内の全 Cookie が見られます。
- 「Export」をクリック —— 形式ピッカーが現れます。JSON、Netscape cookies.txt、HAR から選びます。
- ファイルを保存 —— Chrome がファイル保存ダイアログを開きます。場所とファイル名を選びます。
- エクスポートを確認 —— ファイルをテキストエディターか JSON ビューアーで開きます。期待した Cookie が含まれ、HttpOnly Cookie も含まれていることを確認します。
- エクスポートしたファイルを使う —— 下流ツールに渡します:「curl -b cookies.txt」、Playwright の「context.addCookies()」、CookieVault Editor の Import 機能でプロファイル間のセッション転送。
重要:エクスポートした Cookie ファイルは認証トークンを含みます。パスワードと同じ扱いで —— バージョン管理にコミットせず、暗号化されていないチャネルで共有せず、不要になったら削除してください。
方法 2:Puppeteer または Playwright(自動化)
要点:CI/CD パイプライン、テストフィクスチャ生成、スクリプト化されたワークフローには、Puppeteer の「page.cookies()」と Playwright の「context.cookies()」が Cookie 配列を JSON として返します。どちらも HttpOnly Cookie を含みます。出力は「JSON.stringify」でファイルに書き込みます。
最小限の Puppeteer エクスポートスクリプト:
const puppeteer = require('puppeteer');
const fs = require('fs');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
// 必要なら認証(page.type、page.click など)
const cookies = await page.cookies();
fs.writeFileSync('cookies.json', JSON.stringify(cookies, null, 2));
await browser.close();
})();
等価な Playwright のアプローチ:
const { chromium } = require('playwright');
const fs = require('fs');
(async () => {
const browser = await chromium.launch();
const context = await browser.newContext();
const page = await context.newPage();
await page.goto('https://example.com');
const cookies = await context.cookies();
fs.writeFileSync('cookies.json', JSON.stringify(cookies, null, 2));
await browser.close();
})();
どちらの方法も、型付きフィールド「name」「value」「domain」「path」「expires」(Unix タイムスタンプ)「httpOnly」「secure」「sameSite」を持つ Cookie オブジェクトの配列を返します。出力は「context.addCookies()」での再インポートと直接互換です。
方法 3:DevTools コンソール(制限あり)
要点:DevTools コンソールで「document.cookie」を実行すると、現在のドメインの「名前=値」のペアをセミコロン区切りで返します。この方法は速いですが不完全です —— HttpOnly Cookie は除外され、メタデータ(有効期限、フラグ、Path)は失われます。
「document.cookie」アプローチは、拡張機能をインストールできないときの簡易フォールバックとして機能します:
- DevTools(「F12」)→ Console タブを開く
- 「document.cookie」と入力して Enter
- 出力文字列をコピー
- 手動で解析するか、スクリプトで「; 」と「=」で分割
この方法には 3 つの大きな制限があります:
- HttpOnly Cookie は JavaScript から見えません —— 「document.cookie」から除外されます
- Cookie のメタデータ(有効期限、SameSite、Secure、HttpOnly、Path、Domain)は含まれません
- 他のドメインが設定したサードパーティ Cookie は現在のページの JavaScript コンテキストからアクセスできません
簡単な健全性チェック以上のことには、方法 1 か方法 2 を使ってください。
エクスポート形式リファレンス
要点:JSON と Netscape が最もよく使われる 2 つのエクスポート形式です。JSON はすべてのメタデータを保ち、再インポート可能です。Netscape は curl/wget 互換のために設計されたレガシー形式です。HAR は Cookie を HTTP ヘッダーの一部として含む完全なリクエスト記録です。
JSON 形式
[
{
"name": "session_id",
"value": "abc123def456",
"domain": ".example.com",
"path": "/",
"expires": 1756252800,
"httpOnly": true,
"secure": true,
"sameSite": "Lax"
}
]
JSON の利点:
- 型付きフィールド(フラグはブール、有効期限は数値)
- Puppeteer/Playwright の「addCookies()」と直接互換
- スキーマ検証可能
- 人間が読めて差分が取れる
- ドメイン別グルーピングのネスト構造に対応
Netscape cookies.txt 形式
# Netscape HTTP Cookie File
.example.com TRUE / TRUE 1756252800 session_id abc123def456
各行はタブ区切り 7 フィールド:domain、サブドメイン含む(TRUE/FALSE)、path、secure(TRUE/FALSE)、有効期限(Unix タイムスタンプ)、name、value。
Netscape の利点:
- 「curl -b」と「wget —load-cookies」と直接互換
- ファイルサイズが小さい
- ほぼすべてのコマンドライン HTTP ツールがサポート
- シェルスクリプト(「awk」「cut」)で簡単に解析できる
どの形式を使うか
| 用途 | 推奨形式 |
|---|---|
| ブラウザプロファイル間のバックアップと復元 | JSON |
| 「curl」や「wget」に Cookie を渡す | Netscape cookies.txt |
| QA チームとテストフィクスチャを共有 | JSON |
| デバッグ用に完全なリクエスト/レスポンスを保管 | HAR |
| Puppeteer/Playwright で CI/CD 自動化 | JSON |
| Postman や Insomnia にインポート | JSON(コレクションインポート経由) |
エクスポートした Cookie のセキュリティ留意事項
要点:Cookie エクスポートファイルは資格情報相当のアーティファクトです。漏洩したセッション Cookie ファイルは、誰でもあなたの認証済みセッションに完全アクセスできるようにします。パスワードや API キーと同じ注意で扱ってください。
エクスポートした Cookie ファイルの取り扱い 6 つのセキュリティルール:
- Cookie エクスポートファイルをバージョン管理にコミットしない —— 「*.cookies.json」と「cookies.txt」を「.gitignore」に追加
- 暗号化されていないチャネル(メール、E2E 暗号化のない Slack DM、公開 Pastebin)でエクスポートを共有しない
- 不要になったエクスポートファイルは削除する —— ファイル内のセッション Cookie はサーバーがセッションを期限切れにするまで有効のまま
- 共有された開発マシンでのファイル権限を制限する(Linux/Mac では「chmod 600 cookies.json」)
- テストフィクスチャを共有するときは、実際のセッション値をプレースホルダートークンに置き換え、置換を文書化する
- エクスポートファイルが誤って漏洩したら、影響を受けるサイトからログアウトしてパスワードを変更し、すべての関連セッションを直ちに無効化する
これらの予防策は JSON、Netscape、HAR のいずれにも等しく適用されます —— 3 つすべてがセッションを認証する生の Cookie 値を含みます。
関連ページ
- Chrome で Cookie を削除する方法 —— バックアップとしてエクスポートした後に Cookie を削除
- Chrome で Cookie を編集する方法 —— 削除せずに Cookie 値を変更
- Cookie を消去してもログイン状態を保つ —— 保護対象セッションをエクスポートしてから他をすべて消去
- Chrome で Cookie をホワイトリスト化する方法 —— 特定の Cookie を削除から守る
- CookieVault Editor —— Cookie の閲覧、編集、エクスポートのオープンソース Manifest V3 拡張機能
- CookieVault Guardian —— ホワイトリスト対応の自動クリーンアップ
Footnotes
-
Cookie の検査と編集のための Chrome 公式 DevTools ドキュメントは https://developer.chrome.com/docs/devtools/storage/cookies にあります。Application パネルは Cookie をテーブルで表示しインライン編集をサポートしますが、エクスポート機能は含みません。ネットワークパネルの HAR エクスポートはリクエストヘッダーの一部として Cookie を含みますが、個別の Cookie レコードを取り出すには後処理が必要です。 ↩ ↩2