cURL
受信したCookieやヘッダーを見るには
curl --head www.google.com
そして、リクエストにヘッダーを追加できることはわかっています。
curl --cookie "Key=Value" www.google.com
現在、永続的な Cookie を必要とする問題のテストに取り組んでいますが、その数は膨大になる可能性があります。
cURL
2 つのリクエスト間で 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 Cookieヘッダーの内容を設定する
クッキーファイル- クッキーを読み込むファイル名
CURLOPT_COOKIEJAR- クッキーを保存するファイル名
CURLOPT_COOKIESESSION- 新しいCookieセッションを開始する
クッキーリスト- メモリに保持されているクッキーを追加または操作する
その後、クッキーを好きなように保存し、必要に応じて後の HTTP セッションに割り当てることができます。