【发布时间】:2017-10-13 12:56:56
【问题描述】:
如何从 cookie-jar 文件中选择特定 cookie 的值以供将来的请求使用?
我需要在要求将当前 sessionId 作为表单数据传递的网站上提交表单。 sessionId 设置为登录页面上的 cookie。
第一个请求(身份验证)
curl -d "username=my_user&pass=my_pass" http://mywebsite.com/login.php -c, --cookie-jar my-cookies
第二次请求(表单提交)
curl -d "sessionId=jk5lkdr7cdqkn1ptqa0rmndbr7&formField1=abc&formField2=def" http://mywebsite.com/getReport.php -b, --cookie my-cookies
在上述请求数据中,我手动从 cookie 文件中复制了会话 ID。 cookie 文件如下所示。 (sessionId = PHPSESSID)
# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.
mywebsite.com FALSE / FALSE 0 PHPSESSID jk5lkdr7cdqkn1ptqa0rmndbr7
.mywebsite.com TRUE / FALSE 1516507485 info crownandcaliber%40mediaiqdigital.com
.mywebsite.com TRUE / FALSE 1507867485 pref deleted
.mywebsite.com TRUE / FALSE 0 affiliate_flag Y3Jvd25hbmRjYWxpYmVyQG1lZGlhaXFkaWdpdGFsLmNvbQ%3D%3D
.mywebsite.com TRUE / FALSE 0 cookie name%3ATm8gYWR2ZXJ0aXNlciBuYW1lIGF2YWlsYWJsZQ%3D%3D%3B
有没有办法让我以编程方式将第一个请求中设置的 PHPSESSID cookie 的值提取到第二个请求的表单数据中?
【问题讨论】:
-
@IuriiDrozdov - 不需要帮助来保持会话活跃;通过传递会话 cookie 作为响应来做到这一点。我希望提取会话 cookie 的 value 并将其作为请求 #2 的表单数据传递。 (除了传递整个 cookie 文件。)
-
那你为什么不从文件中读取呢?
-
awk 'NR==5' youfilewithcookie | awk {'打印 $7'} | (阅读 sessId;你的 culcommand 使用 $sessId)
-
@IuriiDrozdov 好电话——正是我想要的。这解决了问题!
-
请接受作为答案