2 つの curl リクエスト間で Cookie を保存する 質問する

2 つの curl リクエスト間で Cookie を保存する 質問する

cURL受信したCookieやヘッダーを見るには

curl --head www.google.com

そして、リクエストにヘッダーを追加できることはわかっています。

curl --cookie "Key=Value" www.google.com

現在、永続的な Cookie を必要とする問題のテストに取り組んでいますが、その数は膨大になる可能性があります。

cURL2 つのリクエスト間で Cookie を効率的に保存するにはどうすればよいですか?

可能であれば、一時ファイルを使用して保存します。

ベストアンサー1

--cookie-jarまたはパラメータを使用して--dump-header、受信した Cookie をファイルに保存します。--cookieパラメータは、後でそのファイルから Cookie を読み込むことができます。

-b, --cookie <名前=データ>

(HTTP) データを Cookie として HTTP サーバーに渡します。これは、サーバーから「Set-Cookie:」行で以前に受信したデータであると考えられます。データは、「NAME1=VALUE1; NAME2=VALUE2」の形式である必要があります。

行に「=」記号が使用されていない場合は、以前に保存されたCookie行を読み込むために使用するファイル名として扱われます。、一致する場合はこのセッションで使用されるはずです。この方法を使用すると、クッキー エンジンもアクティブになり、curl は受信クッキーも記録します。これは、-L、--location オプションと組み合わせて使用​​する場合に便利です。クッキーを読み込むファイルのファイル形式は、プレーン HTTP ヘッダー (Set-Cookie スタイル) または Netscape/Mozilla クッキー ファイル形式である必要があります。

-b、--cookie で指定されたファイルは入力としてのみ使用されます。ファイルには Cookie は書き込まれません。クッキーを保存するには、-c、--cookie-jarオプションを使用します。

このオプションを使用していて、複数の転送が発生する可能性がある場合は注意してください。NAME1=VALUE1; 形式を使用する場合、またはファイルで Set-Cookie 形式を使用してドメインを指定しない場合は、Cookie は任意のドメインに送信され (リダイレクトが行われた後でも同様)、サーバーが設定した Cookie によって変更することはできません。Cookie エンジンが有効で、サーバーが同じ名前の Cookie を設定すると、そのサーバーへの今後の転送で両方が送信されますが、これはおそらく意図した動作ではありません。これらの問題を解決するには、Set-Cookie でドメインを設定するか (これを行うとサブドメインが含まれます)、Netscape 形式を使用します。

このオプションを複数回使用した場合、最後のオプションが使用されます。

-c, --cookie-jar <ファイル名>

(HTTP) 操作が完了した後に curl がすべての Cookie を書き込むファイルを指定します。Curl は、指定されたファイルから以前に読み取ったすべての Cookie と、リモート サーバーから受信したすべての Cookie を書き込みます。. クッキーが認識されていない場合、データは書き込まれません。ファイルは Netscape クッキー ファイル形式を使用して書き込まれます。ファイル名を単一のダッシュ「-」に設定すると、クッキーは stdout に書き込まれます。

このコマンドライン オプションは、curl が Cookie を記録して使用する Cookie エンジンをアクティブにします。これを有効にする別の方法は、-b、--cookie オプションを使用することです。

クッキー ジャーを作成または書き込みできない場合、curl 操作全体が失敗することはなく、エラーも明確に報告されません。-v を使用すると警告が表示されますが、これはこの致命的な状況に関して得られる唯一の目に見えるフィードバックです。

7.43.0 以降、ドメイン名なしで Set-Cookie 形式でインポートされた Cookie は、このオプションではエクスポートされません。

このオプションを複数回使用した場合、最後に指定されたファイル名が使用されます。

-D, --dump-header <ファイル>

指定されたファイルにプロトコル ヘッダーを書き込みます。

このオプションは、HTTP サイトから送信されるヘッダーを保存したい場合に便利です。ヘッダーの Cookie は、-b、--cookie オプションを使用して 2 回目の curl 呼び出しで読み取ることができます。-c、--cookie-jar オプションは、Cookie を保存するより良い方法です。

FTP で使用する場合、FTP サーバーの応答行は「ヘッダー」と見なされ、そこに保存されます。

このオプションを複数回使用した場合、最後のオプションが使用されます

あるいは、コマンドラインを使用する代わりにcURL アプリ、これを使用するコードを書いてくださいlibCurl ライブラリこれにより、Cookie の処理を​​より直接的に制御できるようになります。libCurl には、HTTP Cookie に関連する機能がいくつかあります。

オプションcurl_easy_getinfo():

オプションcurl_easy_setopt():

その後、クッキーを好きなように保存し、必要に応じて後の HTTP セッションに割り当てることができます。

おすすめ記事