如何使用 curl 将收到的 cookie 信息打印到 stdout?

如何使用 curl 将收到的 cookie 信息打印到 stdout?

根据手册页,如果使用’-’作为-c —— cookie-jar 选项的文件名,它应该将 cookie 打印到 stdout。问题是我得到了一个错误:

curl: option -: is unknown

我正在运行的命令的一个示例:

curl -c --cookie-jar - 'http://google.com'
105114 次浏览

去掉“-c”

curl --cookie-jar - 'http://google.com'

你也可以尝试冗长模式,然后看到 cookie 头:

curl -v 'http://google.com'

之所以出现这个错误,是因为您以错误的方式使用了该选项。当您在手册页中看到如下选项时:

-c, --cookie-jar <file name>

这意味着,如果你想使用该选项,你必须使用 -c [俄语] --cookie-jar,永远不要两者兼用!这两个是等价的,实际上,-c--cookie-jar的缩写形式。手册页中有很多很多选项都是以相同的方式设计的。

就你而言:

curl -c - 'http://google.com'

--cookie-jar是作为 -c选项的参数给出的,因此,它被解释为一个文件名,而不像一个选项(正如您可能认为的那样) ,而且 -仍然单独存在,这会导致错误,因为 curl确实没有这样的选项。

您需要使用两个选项来获取 stdout 上的 cookie 文本:

来自手册页的 --cookie-jar <file name>:

如果您将文件名设置为一个破折号,’-’,cookie 将被写入标准输出。

来自手册页的 --output <file>:

将输出写入标准输出而不是标准输出。

设置为 /dev/null扔掉它。

--silent也很有帮助。

总而言之:

curl --silent --output /dev/null --cookie-jar - 'http://www.google.com/'

产出:

# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.


#HttpOnly_.google.com   TRUE    /   FALSE   1512524163  NID 105=DownH33BKZnCsWJeGvsIC5cKRi7CPT3K3QjfUB-4js5xGw6P_6svMqU1yKlKOEu4XwL_TdddZlcMITefFGOtCCyzJNhO_7E9UMNpbQHja40IAerYP5Bwj-FhY1m35mZdvkVSmrg1pZPvH96IkVVVVVVVV

我的用例: 根据 OWASP 的建议,测试您的网站是否使用了 HttpOnly cookie 设置:

curl --silent --output /dev/null --cookie-jar - 'http://www.google.com/' | grep HttpOnly

您可以保存收到的 Cookie 并使用以下命令将它们发送回服务器:

1)获取/保存 cookies 文件“/tmp/cookies.txt”:

curl -c /tmp/cookies.txt http://the.site.with.cookies/

2)将 cookie 发送回服务器(同样使用文件“/tmp/cookies.txt”) :

curl -b /tmp/cookies.txt http://the.site.with.cookies/

希望有用。

罗纳尔多