【问题标题】:Send cookies with curl使用 curl 发送 cookie
【发布时间】:2011-11-03 03:38:31
【问题描述】:

我正在使用 curl 来检索 cookie,如下所示:

curl -c cookies.txt url

然后我从 cookies.txt 文件中解析出我想要的 cookie,并用 cookie 再次发送请求

curl -b "name=value" url 

这是发送 cookie 的正确方法吗? 有没有更简单的方法?

【问题讨论】:

    标签: cookies curl


    【解决方案1】:

    您也可以使用 -b 指定一个 cookie 文件来读取 cookie。

    在许多情况下使用-c-b 到同一个文件是你想要的:

    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,这是错误的。
    • @blahdiblah:这是真的。如果您将 --cookie-jar 用于首先接收 cookie 然后重定向到第二页的命令行,它将使用第一页中的 cookie(假设它们匹配等)。它只是不会从任何文件中读取任何初始 cookie。
    • 是的,手册页具有误导性。我以为我只是通过使用 -c 选项来发送 cookie,直到我使用 -v 并看到它没有发送它们。
    • 可以分享一下cookies.txt的格式吗?它看起来怎么样?
    • man 文件现在更清晰了: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!
    【解决方案2】:

    很烦,官网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。

    【讨论】:

      【解决方案3】:

      如果您在 Firefox 上安装了 Firebug,只需打开 url。在网络面板中,右键单击并选择复制为 cURL。您可以查看此网络调用的所有 curl 参数。

      【讨论】:

        【解决方案4】:

        .example.com TRUE / FALSE 1560211200 MY_VARIABLE MY_VALUE

        cookie 文件格式显然由每个 cookie 一行组成,每一行由以下七个制表符分隔的字段组成:

        • domain - 创建并且可以读取变量的域。
        • 标志 - 一个 TRUE/FALSE 值,指示给定域中的所有计算机是否都可以访问该变量。此值由浏览器自动设置,具体取决于您为域设置的值。
        • path - 变量有效的域中的路径。
        • secure - 一个 TRUE/FALSE 值,指示是否需要与域的安全连接才能访问变量。
        • expiration - 变量到期的 UNIX 时间。 UNIX 时间定义为自 1970 年 1 月 1 日 00:00:00 GMT 以来的秒数。
        • name - 变量的名称。
        • value - 变量的值。

        来自http://www.cookiecentral.com/faq/#3.5

        【讨论】:

        • 请注意,文件中的值必须用制表符分隔,而不是空格。
        猜你喜欢
        • 2013-04-06
        • 2023-03-15
        • 1970-01-01
        • 2012-02-13
        • 1970-01-01
        • 1970-01-01
        • 2012-10-13
        • 2013-05-28
        • 2023-03-25
        相关资源
        最近更新 更多