Was ist der Zweck von “ Verwenden Sie curl –cookie mit einer Datei, die ' nicht existiert ”?
On Februar 13, 2021 by adminVon https://curl.haxx.se/docs/httpscripting.html
Die „Cookie-Engine“ von Curl wird aktiviert, wenn Sie die Option –cookie verwenden. Wenn Sie nur möchten Curl, um empfangene Cookies zu verstehen , verwenden Sie –cookie mit einer Datei, die nicht existiert. Wenn Sie beispielsweise möchten, dass Curl Cookies von einer Seite versteht und einem Speicherort folgt (und möglicherweise empfangene Cookies zurücksendet), können Sie sie wie folgt aufrufen:
curl --cookie nada --location http://www.example.com
Was ist der Zweck von „–cookie mit einer Datei verwenden, die nicht“ existiert „?
Was bedeutet“, wenn Sie nur Curl möchten Verstandene Cookies verstehen „bedeuten?
Danke.
Antwort
Wenn Sie das -L
Option („3XX-Weiterleitungen folgen“) und Verwendung von --cookie
mit einer nicht vorhandenen Datei, curl
sendet in nachfolgenden Anfragen die in früheren Antworten gesetzten Cookies, ohne sie dauerhaft irgendwo zu speichern. IMHO, anstatt eine nicht vorhandene Datei zu verwenden, wäre die Verwendung von --cookie /dev/null
sicherer und erzielt den gleichen Effekt.
Curl wird nicht sendet standardmäßig Cookies zurück, es sei denn, --cookie
oder --cookie-jar
Optionen wurden verwendet. Viele Websites senden Sie jedoch in unendliche Weiterleitungen, wenn Sie ihre Cookies nicht akzeptieren. Möglicherweise möchten Sie jedoch keinen Status auf der Festplatte speichern und sich von ihnen durch separate curl
-Aufrufe verfolgen lassen
Beispiel mit einer gefälschten --cookie
-Datei:
curl --cookie nada -v -L https://www.google.com/news -o /dev/null 2>&1 | egrep -i "cookie|Connected to|^> GET|^< HTTP" * Connected to www.google.com (2a00:1450:400d:803::2004) port 443 (#0) > GET /news HTTP/1.1 < HTTP/2 302 * Added cookie NID="158=LONG-GARBAGE" for domain google.com, path /, expire 1564698265 < set-cookie: NID=158=LONG-GARBAGE;Domain=.google.com;Path=/;Expires=Thu, 01-Aug-2019 22:24:25 GMT;HttpOnly * Connected to news.google.com (2a00:1450:400d:807::200e) port 443 (#1) > GET /news HTTP/1.1 > Cookie: NID=158=LONG-GARBAGE < HTTP/2 301 * Connected to news.google.com (2a00:1450:400d:807::200e) port 443 (#2) > GET / HTTP/1.1 > Cookie: NID=158=LONG-GARBAGE < HTTP/2 302 * Connected to news.google.com (2a00:1450:400d:807::200e) port 443 (#3) > GET /?hl=en-US&gl=US&ceid=US:en HTTP/1.1 > Cookie: NID=158=LONG-GARBAGE < HTTP/2 200
Und ohne eine:
curl -v -L https://www.google.com/news -o /dev/null 2>&1 | egrep -i "cookie|Connected to|^> GET|^< HTTP" * Connected to www.google.com (2a00:1450:400d:803::2004) port 443 (#0) > GET /news HTTP/1.1 < HTTP/2 302 < set-cookie: NID=158=LONG-GARBAGE;Domain=.google.com;Path=/;Expires=Thu, 01-Aug-2019 22:24:43 GMT;HttpOnly * Connected to news.google.com (2a00:1450:400d:807::200e) port 443 (#1) > GET /news HTTP/1.1 < HTTP/2 301 < set-cookie: NID=158=LONG-GARBAGE;Domain=.google.com;Path=/;Expires=Thu, 01-Aug-2019 22:24:43 GMT;HttpOnly * Connected to news.google.com (2a00:1450:400d:807::200e) port 443 (#2) > GET / HTTP/1.1 < HTTP/2 302 < set-cookie: NID=158=LONG-GARBAGE;Domain=.google.com;Path=/;Expires=Thu, 01-Aug-2019 22:24:43 GMT;HttpOnly * Connected to news.google.com (2a00:1450:400d:807::200e) port 443 (#3) > GET /?hl=en-US&gl=US&ceid=US:en HTTP/1.1 < HTTP/2 200 < set-cookie: NID=158=LONG-GARBAGE;Domain=.google.com;Path=/;Expires=Thu, 01-Aug-2019 22:24:43 GMT;HttpOnly
Beachten Sie, dass beim zweiten Aufruf die in Antworten mit set-cookie
gesetzten Cookies ignoriert werden, anstatt sie in Anforderungen zurückzusenden.
Kommentare
- Danke. Wird –cookie ohne echte Datei nur verwendet, wenn Sie ' sind Verwenden Sie die Option -L (" folgen Sie 3XX-Weiterleitungen ")?
- " Wenn Sie ' ihre Cookies nicht akzeptieren ". Wie können Sie dafür sorgen, dass Curl keine Cookies akzeptiert?
- 1.
-L
ist ein Fall, in demcurl
führt mehrere Anforderungen in einem einzigen Aufruf aus. In einem anderen Fall verwenden Sie 'curl
mit mehreren URLs. 2. indem Sie keine--cookie
-Option verwenden, wie ich es im zweiten Beispiel getan habe. " Das Akzeptieren von Cookies " bedeutet, dass sie in Anfragen in einemCookie:
-Header zurückgesendet werden. - Wenn mit " " aufgezeichnet wird, meinen Sie, die Zeichenfolge irgendwo zu kopieren, damit sie mit nachfolgenden Anforderungen zurückgesendet werden kann Ja, Sie müssen ' " " aufzeichnen. Der Server ' weiß oder kümmert sich nicht darum, was Sie damit machen, solange Sie ihn ' zurücksenden, damit er erhalten bleibt Geben Sie mehrere Anfragen an und verfolgen Sie sie. Dies ist bereits ziemlich offtopisch, aber es gibt ' eine andere Methode, die Sie in HTTP beibehalten können – indem Sie sie in der URL codieren. Der Nachteil gegenüber Cookies ist, dass es ' für den Benutzer zu offensichtlich ist 😉
- Ich stimme der Frage zu, wie man Curl dazu bringt, Cookies nicht zu akzeptieren überhaupt. Wget hat das Flag " –no-cookies ". Gibt es ein Äquivalent in Curl? Es sei denn, Cookies werden standardmäßig nicht akzeptiert.
Schreibe einen Kommentar