我知道使用cURL
我可以使用
curl --head www.google.com
我知道我可以使用
为我的请求添加标题curl --cookie "Key=Value" www.google.com
我目前正在测试一个需要持久性cookie的问题,而且可能会有很多问题。
如何在两个
cURL
请求之间有效保留Cookie?
如果可能,使用临时文件进行存储。
答案 0 :(得分:53)
使用--cookie-jar
或--dump-header
参数将收到的Cookie保存到文件中。 --cookie
参数可以稍后从该文件中回读cookie。
-b, - cool< name = data>
(HTTP)将数据作为cookie传递给HTTP服务器。据推测,它是先前从“Set-Cookie:”行中的服务器接收的数据。数据应采用“NAME1 = VALUE1; NAME2 = VALUE2”格式。
如果行中没有使用'='符号,则将其视为用于从读取先前存储的Cookie行的文件名,如果它们匹配,则应在此会话中使用。使用此方法还可以激活cookie引擎,这将使curl记录传入的cookie,如果您将它与-L, - location选项结合使用,这可能很方便。从中读取cookie的文件的文件格式应该是纯HTTP标头(Set-Cookie样式)或Netscape / Mozilla cookie文件格式。
使用-b, - coolie指定的文件仅用作输入。不会将cookie写入文件。 要存储Cookie,请使用-c, - cool-jar选项。
如果您使用此选项并且可能会发生多次转移,请务必小心。如果你使用NAME1 = VALUE1;格式,或在文件中使用Set-Cookie格式并且不指定域,然后为任何域发送cookie(即使在遵循重定向后),也不能由服务器设置cookie修改。如果启用了cookie引擎并且服务器设置了相同名称的cookie,则两者将在将来转移到该服务器时发送,可能不是您想要的。要解决这些问题,请在Set-Cookie中设置一个域(这样做将包括子域)或使用Netscape格式。
如果多次使用此选项,将使用最后一个选项。
-c, - cool-jar<文件名>
(HTTP)指定curl在完成操作后写入所有cookie的文件。 Curl会写入先前从指定文件读取的所有Cookie以及从远程服务器接收的所有Cookie 。如果没有已知的cookie,则不会写入任何数据。该文件将使用Netscape cookie文件格式编写。如果将文件名设置为单个短划线“ - ”,则cookie将写入stdout。
此命令行选项将激活cookie引擎,该引擎使curl记录并使用cookie。激活它的另一种方法是使用-b, - cookie选项。
如果无法创建或写入cookie jar,整个curl操作不会失败甚至清楚地报告错误。使用-v会显示一个警告,但这是对这种可能致命的情况唯一可见的反馈。
由于此选项不会导出以Set-Cookie格式导入但没有域名的7.43.0 cookie。
如果多次使用此选项,将使用最后指定的文件名。
-D, - dump-header< file>
将协议标头写入指定的文件。
当您想要存储HTTP站点发送给您的标头时,此选项很方便使用。然后可以使用-b, - cool选项在第二次curl调用中读取标题中的Cookie! -c, - cool-jar选项是存储cookie的更好方法。
在FTP中使用时,FTP服务器响应行被视为“标题”,因此保存在那里。
如果多次使用此选项,将使用最后一个
或者,不要使用命令行cURL app,而是编写一些使用libCurl library的代码。这将使您更直接地控制cookie处理。 libCurl有几个与HTTP cookie相关的功能:
curl_easy_getinfo()
的选项:
curl_easy_setopt()
的选项:
CURLOPT_COOKIE - 设置HTTP Cookie标头的内容
CURLOPT_COOKIEJAR - 将Cookie存储到
CURLOPT_COOKIESESSION - 开始新的Cookie会话
CURLOPT_COOKIELIST - 添加或操作内存中的Cookie
然后,您可以根据需要存储Cookie,并根据需要将它们分配给以后的HTTP会话。
答案 1 :(得分:2)
curl -b cookie.txt -c cookie.txt <url>
或curl --cookie cookie.txt --cookie-jar cookie.txt <url>
都将存储和发送已保存的Cookie。
答案 2 :(得分:0)
我要感谢这里的所有人帮助我找到使用CURL登录到我的wordpress网站的解决方案。这是我的一点贡献,希望对将来碰到这一点的人有所帮助
对于Windows 10版本比1706更新的版本,可以从命令行使用curl。
curl -c c:\Users\<your-name>\Desktop\cookie.txt -F "log=<your username>" -F "pwd=<your-pwd>" https://acme.net/wp-login.php
您将不会在终端中看到任何回复。它会自动刷新,但您的Cookie已存储。
然后在下面键入以下内容,以读取和发送刚存储的cookie。
curl -b c:\Users\<your-name>\Desktop\cookie.txt -L https://acme.net/my-profile/
只有登录用户才能访问的整个网页将在您的终端内显示,包括通过javascript动态加载的所有数据。
即使WP登录URL的终点是“ / register / login”或“ / login”,我仍然建议您使用“ /wp-login.php”作为端点。这是因为某些WP主题在其登录页面的隐藏输入中具有登录随机数。本机WP登录页面没有此页面。
您可以参考的其他来源:
https://wpmayor.com/login-to-wordpress-dashboard-via-curl/
https://gist.github.com/subfuzion/08c5d85437d5d4f00e58
https://www.youtube.com/watch?v=B4ilccLUQVs
https://makandracards.com/makandra/48262-how-to-use-cookies-with-curl