Verwenden Sie den Parameter --cookie-jar
oder --dump-header
, um empfangene Cookies in einer Datei zu speichern. Der --cookie
Parameter kann die Cookies aus dieser Datei später zurücklesen.
-b, --cookie <name = data>
(HTTP) Übergeben Sie die Daten als Cookie an den HTTP-Server. Es handelt sich angeblich um die Daten, die zuvor vom Server in einer Zeile "Set-Cookie:" empfangen wurden. Die Daten sollten das Format "NAME1 = VALUE1; NAME2 = VALUE2" haben.
Wenn in der Zeile kein '=' Symbol verwendet wird, wird es als Dateiname behandelt, aus dem zuvor gespeicherte Cookie-Zeilen gelesen werden. Diese sollten in dieser Sitzung verwendet werden, wenn sie übereinstimmen. Wenn Sie diese Methode verwenden, wird auch die Cookie-Engine aktiviert, mit der Curl auch eingehende Cookies aufzeichnet. Dies kann nützlich sein, wenn Sie dies in Kombination mit der Option -L, --location verwenden. Das Dateiformat der Datei, aus der Cookies gelesen werden sollen, sollte aus einfachen HTTP-Headern (Set-Cookie-Stil) oder dem Netscape / Mozilla-Cookie-Dateiformat bestehen.
Die mit -b, --cookie angegebene Datei wird nur als Eingabe verwendet. Es werden keine Cookies in die Datei geschrieben. Verwenden Sie zum Speichern von Cookies die Option -c, --cookie-jar .
Seien Sie vorsichtig, wenn Sie diese Option verwenden und mehrere Übertragungen auftreten können. Wenn Sie NAME1 = VALUE1 verwenden; Format oder verwenden Sie in einer Datei das Set-Cookie-Format und geben Sie keine Domäne an. Dann wird das Cookie für eine beliebige Domäne gesendet (auch nachdem Weiterleitungen befolgt wurden) und kann nicht durch ein vom Server festgelegtes Cookie geändert werden. Wenn die Cookie-Engine aktiviert ist und ein Server ein Cookie mit demselben Namen setzt, werden beide bei einer zukünftigen Übertragung an diesen Server gesendet, wahrscheinlich nicht so, wie Sie es beabsichtigt haben. Um diese Probleme zu beheben, legen Sie eine Domain in Set-Cookie fest (dazu gehören auch Subdomains) oder verwenden Sie das Netscape-Format.
Wenn diese Option mehrmals verwendet wird, wird die letzte verwendet.
-c, --cookie-jar <Dateiname>
(HTTP) Geben Sie an, in welche Datei Curl nach einem abgeschlossenen Vorgang alle Cookies schreiben soll. Curl schreibt alle Cookies, die zuvor aus einer bestimmten Datei gelesen wurden, sowie alle Cookies, die von Remote-Servern empfangen wurden . Wenn keine Cookies bekannt sind, werden keine Daten geschrieben. Die Datei wird im Netscape-Cookie-Dateiformat geschrieben. Wenn Sie den Dateinamen auf einen einzelnen Bindestrich "-" setzen, werden die Cookies in stdout geschrieben.
Diese Befehlszeilenoption aktiviert die Cookie-Engine, mit der Curl aufgezeichnet und Cookies verwendet werden. Eine andere Möglichkeit, es zu aktivieren, ist die Verwendung der Option -b, --cookie.
Wenn das Cookie-Glas nicht erstellt oder beschrieben werden kann, schlägt der gesamte Curl-Vorgang nicht fehl oder meldet sogar einen Fehler eindeutig. Wenn Sie -v verwenden, wird eine Warnung angezeigt. Dies ist jedoch das einzige sichtbare Feedback, das Sie zu dieser möglicherweise tödlichen Situation erhalten.
Seit 7.43.0 werden Cookies, die im Set-Cookie-Format ohne Domainnamen importiert wurden, von dieser Option nicht exportiert.
Wenn diese Option mehrmals verwendet wird, wird der zuletzt angegebene Dateiname verwendet.
-D, --dump-header <Datei>
Schreiben Sie die Protokollheader in die angegebene Datei.
Diese Option ist praktisch, wenn Sie die Header speichern möchten, die eine HTTP-Site an Sie sendet. Cookies aus den Headern können dann in einem zweiten Curl-Aufruf mit der Option -b, --cookie gelesen werden! Die Option -c, --cookie-jar ist eine bessere Möglichkeit, Cookies zu speichern .
Bei Verwendung in FTP werden die Antwortzeilen des FTP-Servers als "Header" betrachtet und somit dort gespeichert.
Wenn diese Option mehrmals verwendet wird, wird die letzte verwendet
Alternativ können Sie anstelle der Befehlszeilen- cURL-App Code schreiben, der die libCurl-Bibliothek verwendet . Dadurch haben Sie eine direktere Kontrolle über die Verarbeitung von Cookies. libCurl bietet verschiedene Funktionen für HTTP-Cookies:
Optionen für curl_easy_getinfo()
:
Optionen für curl_easy_setopt()
:
Anschließend können Sie die Cookies speichern, wie Sie möchten, und sie nach Bedarf späteren HTTP-Sitzungen zuweisen.
-c
Flagge vor langer Zeit gefunden, nachdem ich diese Frage gestellt hatte - ich habe nie bemerkt, dass hier eine Antwort gepostet wurde. Vielen Dank.