Curl
“將 curl –cookie 用於不存在的文件”的目的是什麼?
來自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
而不是在請求中將它們發送回。