在--dump-header寫入文件後,如何將這些頭文件讀回到下一個請求中?我想從一個文件中讀取它們,因爲它們中有很多。curl:從文件中讀取頭文件
我試過標準:cat headers | curl -v -H - ...
我實際使用功能的螢火蟲「複製要求標頭」,然後保存那些文件。這看起來是相同的格式。
在--dump-header寫入文件後,如何將這些頭文件讀回到下一個請求中?我想從一個文件中讀取它們,因爲它們中有很多。curl:從文件中讀取頭文件
我試過標準:cat headers | curl -v -H - ...
我實際使用功能的螢火蟲「複製要求標頭」,然後保存那些文件。這看起來是相同的格式。
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 $(xargs -a headers.txt printf "-H '%s'") example.org
,捲曲7.55.0開始,現在可以從文件中讀取頭:
curl -H @filename
現在就是這麼簡單。
正如@dmitry-sutyagin回答,如果你的捲髮是至少版本7.55.0可以使用@
符號來從文件中讀取頭:
curl -H @headerfile.txt https://www.google.com/ # requires curl 7.55.0
如果你的捲髮是不是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/
工程在捲曲7.22.0。我添加了一個空間,所以它會是'bla bla',我無法將它絆倒。這個命令很容易用'curl -v -H「$(cat headers.txt)」google.com'測試..讓我們看看是否有其他人評論,以確保這是一個安全的方式來做到這一點。它沒有記錄。 – jcalfee314
我之前明確地去除了'-v',因爲我認爲它是沒有添加到正確答案的噪聲,但是你是對的,它更容易。所以我把它加回 –
但它的作用或多或少是巧合的,因爲它將它作爲帶有嵌入換行符的單個標題進行輸入。恕我直言,一個更清潔的版本將在header.txt文件的每一行上都有一個-H,並將它從命令行中刪除。 –