--dump-header 写入文件后,如何将这些标头读回下一个请求?我想从文件中读取它们,因为它们有很多。
我尝试了标准:cat headers | curl -v -H - ...
我实际上是在使用 Firebug 中的功能来“复制请求标头”,然后将它们保存到文件中。这似乎是相同的格式。
--dump-header 写入文件后,如何将这些标头读回下一个请求?我想从文件中读取它们,因为它们有很多。
我尝试了标准:cat headers | curl -v -H - ...
我实际上是在使用 Firebug 中的功能来“复制请求标头”,然后将它们保存到文件中。这似乎是相同的格式。
简单的:
$ curl -H @header_file $URL
...其中头文件是一个纯文本文件,每行都有一个 HTTP 头。像这样:
Color: red
Shoesize: 11
Secret: yes
User-Agent: foobar/3000
Name: "Joe Smith"
curl 无法像那样“批量更改”标题,甚至无法从文件中。
使用旧 curl 版本的最佳方法可能是编写一个 shell 脚本,从文件中收集所有标题并使用它们,例如:
#!/bin/sh
while read line; do
args="$args -H '$line'";
done
curl $args $URL
像这样调用脚本:
$ sh script.sh < header_file
这个怎么样:
curl -v -H "$(cat headers.txt)" yourhost.com
headers.txt
看起来像哪里
Header1: bla
Header2: blupp
在 BASH 中工作。
从 curl 7.55.0 开始,它现在可以从文件中读取标题:
curl -H @filename
现在就这么容易。
正如@dmitry-sutyagin所回答的那样,如果您的 curl 至少是 7.55.0 版本,您可以使用该@
符号从文件中读取标题:
curl -H @headerfile.txt https://www.google.com/ # requires curl 7.55.0
如果您的 curl 不是 7.55.0 或更高版本,则有一个有用的技巧:
-K/--config <config file>
,并在文本文件中放置几-H/--header <header>
行。例如:
curl --dump-header foo.txt https://www.google.com/
dos2unix foo.txt
手动或使用脚本将文件转换为-H 'header'
行:
cat foo.txt |
awk '$1 == "Set-Cookie:"' |
perl -ne "chomp; next if /^\\s*\$/; if (/'/) { warn; next } print \"-H '\$_'\\n\";" |
tee headerfile.txt
这可能会输出如下内容:
-H 'Set-Cookie: 1P_JAR=2018-02-13-08; [...]'
-H 'Set-Cookie: NID=123=n7vY1W8IDElvf [...]'
curl --config headerfile.txt https://www.google.com/
curl $(xargs -a headers.txt printf "-H '%s'") example.org