在--dump-header写入文件之后,如何将这些头读回到下一个请求中?我想从文件中读取它们,因为它们有很多.
我试过标准: cat headers | curl -v -H - ...
我实际上使用Firebug中的功能来"复制请求标题",然后将它们保存到文件中.这似乎是相同的格式.
Cpt*_*uss 52
这个怎么样:
curl -v -H "$(cat headers.txt)" yourhost.com
Run Code Online (Sandbox Code Playgroud)
这里headers.txt看起来像
Header1: bla
Header2: blupp
Run Code Online (Sandbox Code Playgroud)
在BASH工作.
Dan*_*erg 32
简单:
$ curl -H @header_file $URL
Run Code Online (Sandbox Code Playgroud)
...头文件是纯文本文件,每行都有HTTP标头.
curl无法像这样"批量更改"标题,甚至无法从文件中进行批量更改.
使用旧卷曲版本的最佳方法可能是编写一个shell脚本,从文件中收集所有头文件并使用它们,例如:
#!/bin/sh
while read line; do
args="$args -H '$line'";
done
curl $args $URL
Run Code Online (Sandbox Code Playgroud)
像这样调用脚本:
$ sh script.sh < header_file
Run Code Online (Sandbox Code Playgroud)
Dmi*_*gin 22
从curl 7.55.0开始,它现在可以从文件中读取标题:
curl -H @filename
Run Code Online (Sandbox Code Playgroud)
现在就这么简单.
正如@ dmitry-sutyagin所回答的那样,如果你的curl至少是版本7.55.0,你可以使用@符号从文件中读取标题:
curl -H @headerfile.txt https://www.google.com/ # requires curl 7.55.0
Run Code Online (Sandbox Code Playgroud)
如果你的卷曲不是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
Run Code Online (Sandbox Code Playgroud)
这可能会输出如下内容:
-H 'Set-Cookie: 1P_JAR=2018-02-13-08; [...]'
-H 'Set-Cookie: NID=123=n7vY1W8IDElvf [...]'
Run Code Online (Sandbox Code Playgroud)curl --config headerfile.txt https://www.google.com/
| 归档时间: |
|
| 查看次数: |
32369 次 |
| 最近记录: |