Mat*_*ark 48 cookies curl header http
我知道使用cURL我可以看到我收到的cookies /标题
curl --head www.google.com
Run Code Online (Sandbox Code Playgroud)
而且我知道我可以使用标题添加标题
curl --cookie "Key=Value" www.google.com
Run Code Online (Sandbox Code Playgroud)
我目前正在测试一个需要持久性cookie的问题,并且可能存在很多问题.
如何在两个
cURL请求之间有效地保留cookie ?
如果可能,使用临时文件进行存储.
Rem*_*eau 67
使用--cookie-jaror --dump-header参数将收到的cookie保存到文件中.该--cookie参数可以稍后从该文件中读回cookie.
-b,--cookie <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,-cookie指定的文件仅用作输入.不会将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应用程序,而是编写一些使用libCurl库的代码.这将使您更直接地控制cookie处理.libCurl有几个与HTTP cookie相关的功能:
选项curl_easy_getinfo():
选项curl_easy_setopt():
CURLOPT_COOKIE - 设置HTTP Cookie标头的内容
CURLOPT_COOKIEFILE - 从中读取cookie的文件名
CURLOPT_COOKIEJAR - 存储cookie的文件名
CURLOPT_COOKIESESSION - 开始一个新的cookie会话
CURLOPT_COOKIELIST - 添加或操作内存中的cookie
然后,您可以根据需要存储cookie,并根据需要将它们分配给以后的HTTP会话.
小智 15
只是为了扩展已接受的答案。使用 --cookie 和 --cookie-jar 标志可以在没有文件写入的情况下使用,使用进程替换:
cookie=$(curl -c - <url>)
Run Code Online (Sandbox Code Playgroud)
curl --cookie <(echo "$cookie") <url>
Run Code Online (Sandbox Code Playgroud)
curl -b cookie.txt -c cookie.txt <url>或curl --cookie cookie.txt --cookie-jar cookie.txt <url>同时存储和发送已保存的Cookie。
我要感谢这里的每个人帮助我找到使用 CURL 登录我的 WordPress 网站的解决方案。这是我的一点贡献,希望它也能帮助将来遇到这个问题的人
对于高于 1706 的 Windows 10 版本,您可以从命令行使用curl。
curl -c c:\Users\<your-name>\Desktop\cookie.txt -F "log=<your username>" -F "pwd=<your-pwd>" https://acme.net/wp-login.php
Run Code Online (Sandbox Code Playgroud)
您不会在终端中看到任何响应。它只是自行刷新,但您的 cookie 已经存储了。
然后输入下面的内容来读取并发送您刚刚存储的cookie。
curl -b c:\Users\<your-name>\Desktop\cookie.txt -L https://acme.net/my-profile/
Run Code Online (Sandbox Code Playgroud)
只有登录用户才能访问的整个网页将在您的终端内呈现,包括通过 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
| 归档时间: |
|
| 查看次数: |
50467 次 |
| 最近记录: |