Curl

“將 curl –cookie 用於不存在的文件”的目的是什麼?

  • April 1, 2020

來自https://curl.haxx.se/docs/httpscripting.html

當您使用 –cookie 選項時,Curl 的“cookie 引擎”被啟用。 如果您只想讓 curl 了解接收到的 cookie,請將 –cookie 與不存在的文件一起使用。例如,如果你想讓 curl 理解來自頁面的 cookie 並跟踪一個位置(因此可能會發回它收到的 cookie),你可以像這樣呼叫它:

curl --cookie nada --location http://www.example.com

“將 –cookie 用於不存在的文件”的目的是什麼?

“如果你只想讓 curl 理解收到的 cookie”是什麼意思?

謝謝。

當您使用-L選項(“通過 3XX 重定向”)並且還使用--cookie不存在的文件時,curl將在後續請求中發送先前響應中設置的 cookie,而不會將它們永久儲存在任何地方。恕我直言,而不是使用不存在的文件,使用--cookie /dev/null會更安全並且會達到相同的效果。

預設情況下, Curl不會發回任何 cookie,除非使用--cookie--cookie-jar選項。但是,如果您不接受他們的 cookie,許多網站會將您發送到無限重定向;但是,您可能不想在磁碟上儲存任何狀態並讓它們通過單獨的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

請注意第二次呼叫如何忽略在響應中設置的 cookie,set-cookie而不是在請求中將它們發送回。

引用自:https://unix.stackexchange.com/questions/497741