Jaki jest cel stosowania “ curl –cookie z plikiem, który ' nie istnieje ”?
On 13 lutego, 2021 by adminOd https://curl.haxx.se/docs/httpscripting.html
Curl „s” mechanizm plików cookie „jest włączany, gdy używasz opcji –cookie. Jeśli chcesz curl, aby zrozumieć otrzymane pliki cookie , użyj opcji –cookie z plikiem, który nie istnieje. Na przykład, jeśli chcesz, aby curl rozumiał pliki cookie ze strony i śledził lokalizację (a tym samym prawdopodobnie odsyła otrzymane pliki cookie), możesz wywołać to w ten sposób:
curl --cookie nada --location http://www.example.com
Jaki jest cel „używania –cookie z plikiem, który nie„ nie istnieje ”?
Co oznacza„, jeśli chcesz tylko curl rozumieć otrzymane pliki cookie „oznacza?
Dziękuję.
Odpowiedź
Kiedy” używasz -L
(„wykonaj przekierowania 3XX”), a także użycie --cookie
z nieistniejącym plikiem, curl
będzie wysyłać w kolejnych żądaniach pliki cookie ustawione w poprzednich odpowiedziach, nie przechowując ich nigdzie na stałe. IMHO, zamiast używać nieistniejącego pliku, użycie --cookie /dev/null
byłoby bezpieczniejsze i przyniosłoby ten sam efekt.
Curl nie domyślnie wysyłają z powrotem jakiekolwiek pliki cookie, chyba że --cookie
lub --cookie-jar
. Jednak wiele witryn skieruje Cię na nieskończone przekierowania, jeśli nie zaakceptujesz ich plików cookie; możesz jednak nie chcieć przechowywać żadnego stanu na dysku i pozwolić im śledzić Cię za pomocą oddzielnych curl
wywołań .
Przykład z fałszywym plikiem --cookie
:
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
I bez jednego:
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
Zwróć uwagę, że drugie wywołanie ignoruje pliki cookie ustawione w odpowiedziach z set-cookie
, zamiast wysyłać je z powrotem w żądaniach.
-L
to przypadek, w którymcurl
wykonuje wiele żądań w jednym wywołaniu; w innym przypadku ' ponownie używaszcurl
z wieloma adresami URL. 2. nie używając żadnej opcji--cookie
, jak to zrobiłem w drugim przykładzie. " Akceptowanie plików cookie " oznacza wysyłanie ich z powrotem w żądaniach w nagłówkuCookie:
.