我知道你可以使用 wget 将 cookie 保存到文件中
wget --save-cookies my-file.txt https://stackoverflow.com
有没有办法直接通过管道
--save-cookies
到 bash 环境变量?
你可以像这样写入/dev/stdout:
$ cookies="$(wget --save-cookies /dev/stdout https://stackoverflow.com)"
$ echo "$cookies"
# HTTP cookie file.
# Generated by Wget on 2022-01-24 17:59:48.
# Edit at your own risk.
.stackoverflow.com TRUE / FALSE 2682374400 prov 0c002a59-7bf1-f8e9-2806-e50bb7e03a11
有点晚了,但我也刚刚偶然发现了这一点,并且花了一段时间才找到“官方”解决方案:使用选项
--save-headers
到 wget
。使用此选项,wget
在与文档本身相同的位置输出标题。这意味着您可以使用 stdout
作为输出文件名在 -
上输出它们。从stdout
,您可以按照通常的方式捕获标题和文档。例如:
wget -q -O- --no-check-certificate --save-headers --method=POST --body-data='{username:admin,password:secret}' --header='Content-Type:application/json' -O - http://1.2.3.4/api/foo/bar
但请注意,这将在 stdout
上输出标题
和文档。就我而言,这就是我想要的。
如果你真的只想捕获标题,你可以尝试
--server-response
。这应该使 wget
在 stderr
上输出响应标头。我个人没有尝试过,也没有研究过手册的那一部分,所以我无法帮助解决这一问题。但是,如果 --save-headers
不能解决您的问题。