Http 在两个curl请求之间保存cookie

Http 在两个curl请求之间保存cookie,http,curl,cookies,header,Http,Curl,Cookies,Header,我知道使用cURL我可以通过使用 curl --head www.google.com 我知道我可以使用 curl --cookie "Key=Value" www.google.com 我目前正在测试一个需要持久cookie的问题,其中可能有很多 如何在两个cURL请求之间有效地保存cookie 如果可能,使用临时文件进行存储。使用--cookie jar或--dump header参数将收到的cookie保存到文件中。--cookie参数可以稍后从该文件读回cookie -b、 --饼干

我知道使用
cURL
我可以通过使用

curl --head www.google.com
我知道我可以使用

curl --cookie "Key=Value" www.google.com
我目前正在测试一个需要持久cookie的问题,其中可能有很多

如何在两个
cURL
请求之间有效地保存cookie

如果可能,使用临时文件进行存储。

使用
--cookie jar
--dump header
参数将收到的cookie保存到文件中。
--cookie
参数可以稍后从该文件读回cookie

-b、 --饼干

(HTTP)将数据作为cookie传递到HTTP服务器。它应该是以前在“Set Cookie:”行中从服务器接收到的数据。数据的格式应为“NAME1=VALUE1;NAME2=VALUE2”

如果行中未使用“=”符号,则该符号将被视为用于从读取以前存储的cookie行的文件名,如果它们匹配,则应在此会话中使用该文件名。使用此方法还可以激活cookie引擎,该引擎也会使curl记录传入的cookie,如果您将此方法与-L,--location选项结合使用,这可能会很方便。要从中读取Cookie的文件的文件格式应为纯HTTP头(设置Cookie样式)或Netscape/Mozilla Cookie文件格式

用-b,--cookie指定的文件仅用作输入。不会将Cookie写入该文件要存储cookie,请使用-c,--cookie jar选项

如果使用此选项,并且可能发生多次传输,请务必小心。如果使用名称1=值1;格式,或在文件中使用设置Cookie格式且不指定域,则Cookie将针对任何域发送(即使在遵循重定向之后),并且不能由服务器设置Cookie修改。如果启用了cookie引擎,并且服务器设置了相同名称的cookie,那么这两个cookie都将在将来传输到该服务器时发送,很可能不是您想要的。要解决这些问题,请在set Cookie中设置域(这样做将包括子域)或使用Netscape格式

如果多次使用此选项,将使用最后一个选项

-c、 --饼干罐

(HTTP)指定在完成操作后要将所有Cookie写入的文件Curl写入以前从指定文件读取的所有cookie以及从远程服务器接收的所有cookie。如果没有已知的cookie,则不会写入任何数据。该文件将使用Netscape cookie文件格式写入。如果将文件名设置为单破折号“-”,cookies将写入标准输出

此命令行选项将激活制作curl记录和使用cookie的cookie引擎。激活它的另一种方法是使用-b,--cookie选项

如果不能创建或写入cookie jar,那么整个curl操作将不会失败,甚至不会清楚地报告错误。使用-v将显示警告,但这是关于这种可能致命情况的唯一可见反馈

由于7.43.0以设置的Cookie格式导入的Cookie没有域名,因此此选项不会导出这些Cookie

如果多次使用此选项,将使用最后指定的文件名

-D、 --卸料头

将协议头写入指定的文件

当您想要存储HTTP站点发送给您的头文件时,使用此选项非常方便。然后,通过使用-b,--cookie选项,可以在第二次curl调用中读取来自头部的cookie!-c,--cookie jar选项是存储cookie的更好方法

在FTP中使用时,FTP服务器响应行被视为“头”,因此保存在那里

如果多次使用此选项,将使用最后一个选项

或者,编写一些使用命令行的代码,而不是使用命令行。这将使您能够更直接地控制cookie处理。libCurl有几个与HTTP Cookie相关的功能:

curl\u easy\u getinfo()的选项

  • -获取所有已知的cookies
curl\u easy\u setopt()的选项

  • -设置HTTP Cookie头的内容

  • -要从中读取Cookie的文件名

  • -用于存储Cookie的文件名

  • -启动新的cookie会话

  • -添加或操作内存中的cookie


然后你可以随心所欲地储存饼干,并根据需要将它们分配给以后的HTTP会话。

curl-b cookie.txt-c cookie.txt
curl--cookie cookie.txt--cookie jar cookie.txt
都将存储和发送保存的cookie。

我要感谢这里的每一位帮助我找到使用curl登录wordpress站点的解决方案的人。这是我的一点贡献,希望它也能帮助那些在未来偶然发现这一点的人

对于高于1706的windows 10 build,可以从命令行使用curl

curl -c c:\Users\<your-name>\Desktop\cookie.txt -F "log=<your username>" -F "pwd=<your-pwd>" https://acme.net/wp-login.php
curl-c:\Users\\Desktop\cookie.txt-F“log=“-F”pwd=”https://acme.net/wp-login.php
在终端上看不到任何响应。它只是自我刷新,但您的cookie已存储

然后输入以下内容,阅读并发送您刚刚存储的cookies

curl -b c:\Users\<your-name>\Desktop\cookie.txt -L https://acme.net/my-profile/
curl-bc:\Users\\Desktop\cookie.txt-Lhttps://acme.net/my-profile/
只有登录用户才能访问的整个网页将在终端内呈现,包括通过javascript动态加载的任何数据

即使WP登录url的端点是“/register/log-in”或“/login”,我仍然建议您使用“/WP-login.php”作为端点。这是因为一些WP主题在其登录页面的隐藏输入中有一个登录时间。本地WP-logi