~에서https://curl.haxx.se/docs/httpscripting.html
--cookie 옵션을 사용하면 Curl의 "쿠키 엔진"이 활성화됩니다. 컬이 수신된 쿠키에 대해 알기를 원하는 경우, 존재하지 않는 파일에는 --cookie를 사용하세요. 예를 들어, 컬이 페이지의 쿠키에 대해 알고 특정 위치를 추적하도록 하려는 경우(따라서 잠재적으로 수신한 쿠키를 다시 보내려면) 다음과 같이 호출할 수 있습니다.
curl --cookie nada --location http://www.example.com
"존재하지 않는 파일에 --cookie 사용"의 목적은 무엇입니까?
"컬이 수신된 쿠키만 이해하도록 하려는 경우"란 무엇을 의미합니까?
감사해요.
답변1
이 -L
옵션("3XX 리디렉션 따르기")을 사용하고 --cookie
존재하지 않는 파일 도 사용하는 경우 curl
이전 응답에 설정된 쿠키는 영구적으로 저장되지 않고 후속 요청 시 전송됩니다. IMHO, 존재하지 않는 파일을 사용하는 것보다 더 --cookie /dev/null
안전하고 동일한 효과를 얻을 수 있습니다.
곱슬한 의지아니요--cookie
또는 옵션을 사용 하지 않는 한 기본적으로 모든 쿠키를 다시 보냅니다 . 그러나 쿠키를 허용하지 않으면 많은 웹사이트에서 무한 리디렉션을 수행하게 됩니다. 그러나 디스크에 어떤 상태도 저장하고 --cookie-jar
개별 호출을 통해 curl
추적 하도록 하고 싶지는 않을 것입니다.
가짜 문서 --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
없음:
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
set-cookie
두 번째 호출에서는 요청에서 쿠키를 다시 보내는 대신 응답에 설정된 쿠키를 무시하는 방법에 유의하세요 .