从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”是什么意思?
谢谢。
答案1
当您使用该-L
选项(“遵循 3XX 重定向”)并且还使用--cookie
不存在的文件时,curl
将在后续请求中发送先前响应中设置的 cookie,而不将它们永久存储在任何地方。恕我直言,与其使用不存在的文件,使用--cookie /dev/null
会更安全并且会达到相同的效果。
卷曲会不是默认情况下发回任何 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
不是将它们发送回请求中。