Curl: читать заголовки из файла
После того, как заголовок -dump записывает файл, как читать эти заголовки обратно в следующий запрос? Я хотел бы прочитать их из файла, потому что их несколько.
Я попробовал стандарт в: cat headers | curl -v -H - ...
Я использую функцию Firebug для "Копировать заголовки запросов", а затем сохраняю их в файле. Это похоже на тот же формат.
Ответы
Ответ 1
до скручивания 7.55.0
curl не имел никакого способа для "массового изменения" таких заголовков, даже не из файла.
Ваш лучший подход со старой версией curl, вероятно, должен вместо этого написать сценарий оболочки, который собирает все заголовки из файла и использует их, например:
#!/bin/sh
while read line; do
args="$args -H '$line'";
done
curl $args $URL
Вызовите скрипт следующим образом:
$ sh script.sh < header_file
поскольку curl 7.55.0
Полегче:
$ curl -H @header_file $URL
... где заголовочный файл представляет собой текстовый файл с заголовком HTTP в каждой строке.
Ответ 2
как насчет этого:
curl -v -H "$(cat headers.txt)" yourhost.com
где headers.txt
выглядит как
Header1: bla
Header2: blupp
работает в BASH.
Ответ 3
Начиная с curl 7.55.0, теперь он может читать заголовки из файла:
curl -H @filename
Теперь это легко.
Ответ 4
curl $(xargs -a headers.txt printf "-H '%s'") example.org
Ответ 5
Как ответил @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/