Use the --cookie-jar
or --dump-header
参数将接收到的 cookie 保存到文件中。这--cookie
参数可以稍后从该文件中读回 cookie。
-b, --cookie
(HTTP) 将数据作为 cookie 传递到 HTTP 服务器。据推测,它是先前在“Set-Cookie:”行中从服务器接收到的数据。数据的格式应为“NAME1=VALUE1;NAME2=VALUE2”。
如果该行中没有使用“=”符号,则将其视为文件名,用于读取先前存储的 cookie 行,如果它们匹配,则应在本次会话中使用。使用此方法还会激活 cookie 引擎,这将使curl 也记录传入的 cookie,如果您将其与 -L, --location 选项结合使用,这可能会很方便。从中读取 cookie 的文件的文件格式应该是纯 HTTP 标头(Set-Cookie 样式)或 Netscape/Mozilla cookie 文件格式。
用 -b, --cookie 指定的文件仅用作输入。不会将 cookie 写入该文件。要存储 cookie,请使用 -c, --cookie-jar 选项.
如果您使用此选项,请务必小心,可能会发生多次传输。如果您使用 NAME1=VALUE1;格式,或者在文件中使用 Set-Cookie 格式并且不指定域,则 cookie 会针对任何域发送(即使在遵循重定向之后),并且无法由服务器设置的 cookie 进行修改。如果启用了 cookie 引擎并且服务器设置了同名的 cookie,则两者都将在将来传输到该服务器时发送,这可能不是您想要的。要解决这些问题,请在 Set-Cookie 中设置域(这样做将包括子域)或使用 Netscape 格式。
如果多次使用此选项,则将使用最后一次。
-c, --cookie-jar
(HTTP) 指定您希望curl 在完成操作后将所有cookie 写入哪个文件。Curl 写入之前从指定文件读取的所有 cookie 以及从远程服务器接收的所有 cookie。如果不知道 cookie,则不会写入任何数据。该文件将使用 Netscape cookie 文件格式写入。如果将文件名设置为单破折号“-”,则 cookie 将写入标准输出。
这个命令行选项将激活cookie引擎,使curl记录并使用cookie。激活它的另一种方法是使用 -b, --cookie 选项。
如果无法创建或写入cookie jar,则整个curl操作不会失败,甚至不会明确报告错误。使用 -v 将显示警告,但这是您获得的有关这种可能致命情况的唯一可见反馈。
自 7.43.0 起,以 Set-Cookie 格式导入且不带域名的 cookie 不会通过此选项导出。
如果多次使用此选项,则将使用最后指定的文件名。
-D, --dump-header
将协议头写入指定文件。
当您想要存储 HTTP 站点发送给您的标头时,可以方便地使用此选项。然后可以使用 -b, --cookie 选项在第二次curl调用中读取标头中的cookie! -c, --cookie-jar 选项是存储 cookie 的更好方法.
在 FTP 中使用时,FTP 服务器响应行被视为“标头”,因此保存在那里。
如果多次使用此选项,则将使用最后一次
或者,不使用命令行cURL app https://curl.haxx.se,编写一些使用的代码libCurl 库 https://curl.haxx.se/libcurl/。这将使您能够更直接地控制 cookie 处理。 libCurl 有几个与 HTTP cookie 相关的功能:
选项curl_easy_getinfo()
:
-
CURLINFO_COOKIELIST https://curl.haxx.se/libcurl/c/CURLINFO_COOKIELIST.html- 获取所有已知的cookie
选项curl_easy_setopt()
:
CURLOPT_COOKIE https://curl.haxx.se/libcurl/c/CURLOPT_COOKIE.html- 设置HTTP Cookie头的内容
CURLOPT_COOKIEFILE https://curl.haxx.se/libcurl/c/CURLOPT_COOKIEFILE.html- 从中读取cookie的文件名
CURLOPT_COOKIEJAR https://curl.haxx.se/libcurl/c/CURLOPT_COOKIEJAR.html- 存储 cookie 的文件名
CURLOPT_COOKIE 会话 https://curl.haxx.se/libcurl/c/CURLOPT_COOKIESESSION.html- 开始一个新的cookie会话
CURLOPT_COOKIELIST https://curl.haxx.se/libcurl/c/CURLOPT_COOKIELIST.html- 添加或操作内存中保存的cookie
然后,您可以根据需要存储 cookie,并根据需要将它们分配给以后的 HTTP 会话。