【问题标题】:curl - selecting specific cookie value from cookie-jar filecurl - 从 cookie-jar 文件中选择特定的 cookie 值
【发布时间】: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 好电话——正是我想要的。这解决了问题!
  • 请接受作为答案

标签: php curl cookies


【解决方案1】:

下面的代码从 youfilewithcookie 文件中读取第 5 行,获取第 7 列的内容并将其读取到名为 sessId 的变量中。

awk 'NR==5' youfilewithcookie | awk {'print $7'} | (read sessId; yourculcommand here with $sessId)

【讨论】:

  • 请查看How do I write a good answer。不鼓励仅使用代码的答案,因为它们没有解释如何解决问题中的问题。您应该更新您的答案以解释它的作用以及它如何解决问题。 - 这不仅会帮助 OP,还会帮助其他有类似问题的人。
  • 结束了这个,以解决会话 cookie 不在第 5 行的情况:awk '/PHPSESSID/' jivox-cookies | awk {'print $7'} | ...
猜你喜欢
  • 1970-01-01
  • 2021-04-28
  • 2012-02-10
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-05
  • 1970-01-01
相关资源
最近更新 更多