如何使用 curl 将收到的 cookie 信息打印到标准输出?

Posted

技术标签:

【中文标题】如何使用 curl 将收到的 cookie 信息打印到标准输出?【英文标题】:How do you print received cookie info to stdout with curl? 【发布时间】:2014-02-23 04:27:45 【问题描述】:

根据手册页,如果您使用“-”作为 -c --cookie-jar 选项的文件名,它应该将 cookie 打印到标准输出。问题是我得到一个错误:

curl: option -: is unknown

我正在运行的命令示例:

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

【问题讨论】:

【参考方案1】:

去掉“-c”

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

您还可以尝试详细模式并查看 cookie 标头:

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

【讨论】:

【参考方案2】:

您收到该错误是因为您以错误的方式使用了该选项。当您在手册页中看到如下选项时:

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

这意味着如果你想使用那个选项,你必须使用-c OR --cookie-jar,永远不要同时使用!这两个是等价的,事实上,-c--cookie-jar 的缩写形式。手册页中有很多很多以相同方式设计的选项。

在你的情况下:

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

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

【讨论】:

【参考方案3】:

您需要使用两个选项来仅获取标准输出上的 cookie 文本:

--cookie-jar &lt;file name&gt; 来自手册页:

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

--output &lt;file&gt; 来自手册页:

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

将其设置为 /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

【讨论】:

【参考方案4】:

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

1) 获取/保存 cookie 到文件“/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/

希望对你有用。

[]s 罗纳尔多

【讨论】:

以上是关于如何使用 curl 将收到的 cookie 信息打印到标准输出?的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 和 Curl 登录 Google,Cookie 已关闭?

linux工具之curl与wget高级使用

是否可以使用 CURL 设置 cookie 内容?

curl详解

PHP cURL 没有存储会话 cookie...如何解决这个问题?

为啥 Chrome 没有收到我的 cookie?