コンテンツにスキップ

curlでクッキーを送受信する方法

[質問]

curlでクッキーの送信をエミュレートできますか

[回答] Gemini

はい、curlを使ってクッキーの送信をエミュレートすることは非常に簡単です。ブラウザが自動で行っている処理を、コマンドラインで手動で再現するイメージですね。

主に「直接指定して送る」方法と、「ファイル(クッキーファイル)を使って送る」方法の2パターンがあります。


1. 文字列で直接クッキーを指定する

一時的なテストや、クッキーの値がわかっている場合は -b(または --cookie)フラグを使います。

curl -b "session_id=12345; user_mode=dark" https://example.com
* 形式: "名前1=値1; 名前2=値2" のようにセミコロンで区切ります。


ログイン状態を維持する場合など、サーバーから送られてきたクッキーを保存し、次のリクエストでそれを使いたい場合に便利です。

ステップA:サーバーからのクッキーを保存する (-c)

-c(または --cookie-jar)オプションを使うと、サーバーから発行されたクッキーを指定したファイルに書き出します。

curl -c cookies.txt https://example.com/login

ステップB:保存したクッキーを使ってリクエストする (-b)

保存したファイルを使ってアクセスするには、再度 -b オプションにファイル名を指定します。

curl -b cookies.txt https://example.com/dashboard

3. ブラウザの挙動を完全に再現する(推奨)

実務でよく使うのは、「保存」と「読み込み」を同時に指定する方法です。これにより、受け取ったクッキーを更新しながら、次のリクエストへ引き継ぐことができます。

curl -b cookies.txt -c cookies.txt https://example.com/api/data

補足:デバッグに役立つテクニック

正しくクッキーが送受信されているか確認したいときは、-v (verbose) オプションを追加してください。

  • 送信時: > Cookie: ... という行が表示されます。
  • 受信時: < Set-Cookie: ... という行が表示されます。

次にお手伝いできることはありますか? 例えば、「特定のサイトのログイン処理をcurlで自動化したい」といった具体的なシナリオがあれば、コマンドの構成案を作成しますよ!