【发布时间】:2014-02-23 04:27:45
【问题描述】:
如何使用 curl 将收到的 cookie 信息打印到标准输出?
根据手册页,如果您使用“-”作为 -c --cookie-jar 选项的文件名,它应该将 cookie 打印到标准输出。问题是我得到一个错误:
curl: option -: is unknown
我正在运行的命令示例:
curl -c --cookie-jar - 'http://google.com'
【问题讨论】:
如何使用 curl 将收到的 cookie 信息打印到标准输出?
根据手册页,如果您使用“-”作为 -c --cookie-jar 选项的文件名,它应该将 cookie 打印到标准输出。问题是我得到一个错误:
curl: option -: is unknown
我正在运行的命令示例:
curl -c --cookie-jar - 'http://google.com'
【问题讨论】:
去掉“-c”
curl --cookie-jar - 'http://google.com'
您还可以尝试详细模式并查看 cookie 标头:
curl -v 'http://google.com'
【讨论】:
您收到该错误是因为您以错误的方式使用了该选项。当您在手册页中看到如下选项时:
-c, --cookie-jar <file name>
这意味着如果你想使用那个选项,你必须使用-c OR --cookie-jar,永远不要同时使用!这两个是等价的,事实上,-c 是--cookie-jar 的缩写形式。手册页中有很多很多以相同方式设计的选项。
在你的情况下:
curl -c - 'http://google.com'
--cookie-jar 作为-c 选项的参数给出,因此,它被解释为文件名,而不是选项(如您所想),并且- 仍然单独存在,这会导致错误,因为curl ,确实没有这样的选择。
【讨论】:
您需要使用两个选项来仅获取标准输出上的 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) 获取/保存 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 罗纳尔多
【讨论】: