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アプリケーションのワークフローをテストする必要がある場合に使用します。