[解決済み] 2つのcurlリクエストの間でクッキーを保存する
質問
を使うことは知っています。
cURL
を使うと、受け取ったクッキーやヘッダを見ることができます。
curl --head www.google.com
そして、リクエストにヘッダを追加するには
curl --cookie "Key=Value" www.google.com
私は現在、永続的なクッキーを必要とする問題のテストに取り組んでおり、たくさんのクッキーが存在する可能性があります。
どのようにすれば効率的に2つの
cURL
リクエストの間でクッキーを効率的に保存するにはどうしたらよいでしょうか?
可能であれば、一時ファイルを保存に使用します。
どのように解決するのですか?
を使用します。
--cookie-jar
または
--dump-header
パラメータを使用すると、受信したクッキーをファイルに保存することができます。このパラメータは
--cookie
パラメータは、後でそのファイルからクッキーを読み出すことができます。
-b, --cookie <name=data>
(HTTP)HTTPサーバーにデータをクッキーとして渡します。これは、以前サーバから "Set-Cookie:" 行で受け取ったデータだと思われます。データは "NAME1=VALUE1; NAME2=VALUE2" のような形式であることが必要です。
行に'='記号が使われていない場合、それは以前に保存されたクッキー行を読み込むために使用するファイル名として扱われ、そのファイル名は から以前に保存されたクッキー行を読み取るために使われるファイル名として扱われます。このメソッドを使用すると、curl が受信した Cookie を記録する Cookie エンジンも有効になります。これは、-L、-location オプションと組み合わせて使用する場合に便利です。Cookie を読み込むファイルの形式は、プレーン HTTP ヘッダー (Set-Cookie 形式) または Netscape/Mozilla の Cookie ファイル形式である必要があります。
b, --cookie で指定されたファイルは、入力としてのみ使用されます。このファイルには、クッキーは書き込まれません。 クッキーを保存するには、-c, --cookie-jar オプションを使用します。 .
このオプションを使用する場合は注意が必要で、複数の転送が発生する可能性があります。NAME1=VALUE1; 形式を使用するか、またはファイルで Set-Cookie 形式を使用してドメインを指定しない場合、Cookie は任意のドメインに対して送信され (リダイレクトが行われた後でも)、サーバーが設定した Cookie によって変更されることはありません。クッキーエンジンが有効で、あるサーバーが同じ名前のクッキーを設定した場合、そのサーバーへの将来の転送で両方が送信され、おそらくあなたが意図したものではありません。これらの問題に対処するには、Set-Cookieにドメインを設定するか(そうすることでサブドメインを含むようになります)、Netscapeの形式を使用します。
このオプションが複数回使用された場合、最後のものが使用されます。
<ブロッククオート
-c, --cookie-jar <ファイル名>
(HTTP) 操作の完了後、curl にすべてのクッキーを書き込ませたいファイルを指定します。 Curlは指定されたファイルから以前に読み込んだすべてのクッキーと、リモートサーバから受信したすべてのクッキーを書き込みます。 . クッキーが知られていない場合、データは書き込まれません。ファイルは、Netscape のクッキー ファイル フォーマットを使用して書き込まれます。ファイル名を1つのダッシュ、"-"に設定すると、クッキーは標準出力に書き出されます。
このコマンドラインオプションは、curl が Cookie を記録して使用するようにする Cookie エンジンを有効にします。これを有効にする別の方法は、-b、-cookie オプションを使用することです。
Cookie jar を作成または書き込むことができない場合、curl 操作全体が失敗することはなく、エラーを明確に報告することさえあります。v を使用すると警告が表示されますが、この致命的な可能性のある状況について得られる目に見えるフィードバックはこれだけです。
7.43.0 以降、ドメイン名なしで Set-Cookie 形式でインポートされた Cookie は、このオプションではエクスポートされません。
このオプションが複数回使用された場合、最後に指定されたファイル名が使用されます。
<ブロッククオート
-D, --dump-header <file>
プロトコルヘッダを指定されたファイルに書き出す。
このオプションは、HTTP サイトが送信するヘッダを保存したいときに使うと便利です。ヘッダからクッキーを読み取るには、-b, --cookie オプションを使用して、2 回目の curl を起動する必要があります。c, --cookie-jar オプションは、クッキーを保存するためのより良い方法です。 .
FTPで使用する場合、FTPサーバの応答行は"headers"と見なされるため、そこに保存されます。
このオプションが複数回使用された場合、最後に使用されたものが使用されます。
また、コマンドラインの cURL アプリ を使用するコードを書いてください。 libCurl ライブラリ . libCurl は HTTP クッキーに関連するいくつかの機能を備えています。
のオプション
curl_easy_getinfo()
:
- curlinfo_cookielist - すべての既知のクッキーを取得する
のオプション
curl_easy_setopt()
:
-
CURLOPT_COOKIE - HTTP クッキーヘッダの内容を設定します。
-
curlopt_cookiefile - クッキーを読み込むファイル名
-
curlopt_cookiejar - クッキーを保存するファイル名
-
curlopt_cookiesession - 新しいクッキーセッションを開始する
-
curlopt_cookielist - メモリに保持されているクッキーに追加したり操作したりする
そうすれば、クッキーを好きなように保存し、後のHTTPセッションに必要に応じて割り当てることができます。
関連
-
[解決済み] URI、URL、URNの違いは何ですか?
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] java.net.URLConnectionを使用してHTTPリクエストを発生させ処理する方法
-
[解決済み] cURL呼び出しによるHTTPリクエストを使用してヘッダーを送信する方法は?
-
[解決済み] ローカルストレージとCookieの比較
-
[解決済み] 「Chromeデバッガで「注意:暫定的なヘッダが表示されます。
-
[解決済み] なぜCSRF防止トークンをクッキーに入れるのが一般的なのですか?
-
[解決済み】HTTPのPOSTとPUTの違いは何ですか?
-
[解決済み】無効なデータに対するRESTレスポンスコード
-
[解決済み] AndroidでCookieを使ったhttpリクエストはどうすればいいのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] HTTPヘッダーの大文字と小文字は区別されますか?
-
[解決済み] HTTP POSTリクエストでは、どのようにパラメータが送信されるのですか?
-
[解決済み] updateとdeleteのHTTPステータスコード?
-
[解決済み] ETagとヘッダーエクスパイアの比較
-
[解決済み】Accept* HTTPヘッダのq=0.5とは何ですか?
-
[解決済み] URLマトリックスパラメータとクエリパラメータの比較
-
[解決済み] なぜCache-Control属性はリクエストヘッダ(クライアントからサーバーへ)に送信されるのですか?
-
[解決済み] Angular2 http.get()、map()、subscribe()とobservableパターン - 基本的な理解
-
[解決済み] HTTPリダイレクトコードの違い
-
[解決済み] URLのプロトコルを継承するために、先頭のダブルスラッシュを使用することに何か不都合はありますか? 例:src="//domain.com"