Qual é o propósito de “ usar curl –cookie com um arquivo que não ' não existe ”?
On Fevereiro 13, 2021 by adminDe https://curl.haxx.se/docs/httpscripting.html
Curl “s” mecanismo de cookies “é ativado quando você usa a opção –cookie. Se você quiser curl para entender os cookies recebidos , use –cookie com um arquivo que não existe. Exemplo, se você deseja permitir que o curl entenda os cookies de uma página e siga um local (e, portanto, possivelmente, enviar os cookies recebidos de volta), você pode invocá-lo como:
curl --cookie nada --location http://www.example.com
Qual é o propósito de “usar –cookie com um arquivo que não” existe “?
O que significa” se você só quiser curl entender os cookies recebidos “quer dizer?
Obrigado.
Resposta
Quando estiver usando o -L
option (“follow through 3XX redirects”) e também usando --cookie
com um arquivo não existente, curl
enviará em solicitações subsequentes os cookies definidos nas respostas anteriores sem armazená-los permanentemente em qualquer lugar. IMHO, em vez de usar um arquivo inexistente, usar --cookie /dev/null
seria mais seguro e teria o mesmo efeito.
Curl não devolve cookies por padrão, a menos que --cookie
ou --cookie-jar
opções foram usadas. Mas muitos sites enviarão você para redirecionamentos infinitos se você não aceitar seus cookies; no entanto, você pode não querer armazenar nenhum estado no disco e permitir que eles o rastreiem por meio de curl
invocações separadas .
Exemplo com um arquivo --cookie
falso:
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
E sem um:
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
Observe como a segunda invocação ignora os cookies definidos nas respostas com set-cookie
em vez de enviá-los de volta nas solicitações.
-L
é um caso em quecurl
faz várias solicitações em uma única chamada; o outro caso é quando você ' está usandocurl
com vários urls. 2. não usando nenhuma opção--cookie
como fiz no segundo exemplo. " Aceitar cookies " significa enviá-los de volta em solicitações, em um cabeçalhoCookie:
.