curlでCookieとセッションを管理する

curlでCookieジャーを使ったCookieの送受信とセッション管理を解説。複数リクエストにまたがるセッション維持とCookieパターンの他言語変換方法を学びましょう。

General

詳細な説明

curlでCookieを管理する

Cookieはセッション維持、認証状態の追跡、設定の保存に不可欠です。curlはCookieジャーとヘッダー操作を通じて、堅牢なCookie管理を提供します。

Cookieの送信

-b を使ってリクエストにCookieを付加します:

curl -b "session_id=abc123; theme=dark" https://example.com/dashboard

レスポンスからCookieを保存

-c を使って受信したCookieをファイル(Cookieジャー)に保存します:

curl -c cookies.txt https://example.com/login \
  -d "username=admin&password=secret"

Cookieジャーの使用

-b-c を組み合わせて、複数リクエストにわたる永続的なセッションを維持します:

# ログインしてCookieを保存
curl -c cookies.txt -d "user=admin&pass=secret" https://example.com/login

# 保存したCookieを後続のリクエストで使用
curl -b cookies.txt https://example.com/dashboard
curl -b cookies.txt https://example.com/api/data

Cookieジャーファイルの形式

CookieジャーはNetscape Cookie形式を使用します:

# domain  flag  path  secure  expiry  name  value
.example.com  TRUE  /  TRUE  1735689600  session_id  abc123

セッションの維持

完全なセッションワークフロー(ログイン、操作実行、ログアウト):

JAR="session_cookies.txt"

# ログイン
curl -s -c "$JAR" -X POST https://example.com/login \
  -d '{"email":"user@example.com","password":"pass"}' \
  -H "Content-Type: application/json"

# 認証済みリクエスト
curl -s -b "$JAR" -c "$JAR" https://example.com/api/profile

# ログアウト
curl -s -b "$JAR" -X POST https://example.com/logout

# クリーンアップ
rm "$JAR"

Cookieのセキュリティヘッダー

最新のCookieにはcurlが尊重するセキュリティ属性が含まれます:

  • Secure: HTTPSでのみ送信される
  • HttpOnly: JavaScriptからアクセス不可(curlには影響なし)
  • SameSite: クロスオリジンの動作を制御する

重要な注意事項

  • -b にファイル名を指定するとCookieジャーファイルから読み込み、文字列を指定するとインラインCookieとして送信される
  • -c フラグは各リクエストでCookieファイルを作成または上書きする
  • -b-c を同じファイルに指定することで、複数リクエストにわたってCookieを蓄積できる

ユースケース

QAエンジニアが、ログインして複数ページにわたる操作を行い、セッションの永続性を検証することで、認証済みWebアプリケーションのワークフローをテストする必要がある場合に使用します。

Try It — Curl to Code Converter

フルツールを開く