“对不存在的文件使用curl --cookie”的目的是什么?

“对不存在的文件使用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”是什么意思?

谢谢。

答案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不是将它们发送回请求中。

相关内容