【发布时间】:2011-11-03 03:38:31
【问题描述】:
我正在使用 curl 来检索 cookie,如下所示:
curl -c cookies.txt url
然后我从 cookies.txt 文件中解析出我想要的 cookie,并用 cookie 再次发送请求
curl -b "name=value" url
这是发送 cookie 的正确方法吗? 有没有更简单的方法?
【问题讨论】:
我正在使用 curl 来检索 cookie,如下所示:
curl -c cookies.txt url
然后我从 cookies.txt 文件中解析出我想要的 cookie,并用 cookie 再次发送请求
curl -b "name=value" url
这是发送 cookie 的正确方法吗? 有没有更简单的方法?
【问题讨论】:
您也可以使用 -b 指定一个 cookie 文件来读取 cookie。
curl -b cookies.txt -c cookies.txt http://example.com
进一步
仅使用 -c 将使 curl 开始时不使用 cookie,但仍会解析和理解 cookie,如果使用重定向或多个 URL,它将在单个调用中使用接收到的 cookie,然后将它们全部写入输出文件结束。
-b 选项将一组初始 cookie 输入 curl 以便它在启动时知道它们,并激活 curl 的 cookie 解析器以便它也将解析和使用传入的 cookie。
另见
Everything curl 一书中的cookies chapter。
【讨论】:
--cookie-jar 的手册页没有说“此命令行选项将激活制作 curl 记录的 cookie 引擎并使用 cookie。” [强调我的] 因为这听起来像是 --cookie-jar 会导致发送 cookie,这是错误的。
NOTE that the file specified with -b, --cookie is only used as input. No cookies will be stored in the file. To store cookies, use the -c, --cookie-jar option or you could even save the HTTP headers to a file using -D, --dump-header!
很烦,官网https://ec.haxx.se/http/http-cookies没有cookie文件示例。
最后,我发现它不起作用,如果你的文件内容只是这样复制
foo1=bar;foo2=bar2
我猜格式必须看起来像@Agustí Sánchez 所说的风格 .你可以通过 -c 来测试它,在网站上创建一个 cookie 文件。
所以试试这个方法,它有效
curl -H "Cookie:`cat ./my.cookie`" http://xxxx.com
您可以从 chrome 控制台网络选项卡中复制 cookie。
【讨论】:
如果您在 Firefox 上安装了 Firebug,只需打开 url。在网络面板中,右键单击并选择复制为 cURL。您可以查看此网络调用的所有 curl 参数。
【讨论】:
.example.com TRUE / FALSE 1560211200 MY_VARIABLE MY_VALUE
cookie 文件格式显然由每个 cookie 一行组成,每一行由以下七个制表符分隔的字段组成:
【讨论】: