如何使用 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 <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
【讨论】:
【参考方案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 已关闭?