Как мне написать сценарий, который отправляет запрос на получение на веб-страницу и возвращает красиво отформатированные заголовки http?
Одним из вариантов может быть использование завиток с параметром --dump-header.
Есть довольно много модулей на разных языках, которые будут получать за вас заголовки HTTP.
и т. д. и т. д.
попробуйте этот мерзкий прием:
wget -O - -o /dev/null --save-headers http://google.com | \
awk 'BEGIN{skip=0}{ if (($0)=="\r") {skip=1;}; if (skip==0) print $0 }'
curl поддерживает просмотр заголовков при загрузке, или вы можете использовать -I
возможность сохранить заголовки в файл.
Если вы просто хотите просмотреть заголовки ... (не программно) просто используйте плагин [live http headers] [1] для mozilla firefox.
Эта функция bash примет URL + метод или сервер + путь + метод + порт. Если вы используете метод «HEAD», он вернет заголовки, если вы используете GET, он вернет все заголовки и весь ответ. Поддерживает https через openssl.
#!/bin/bash
function httpreq ()
{
if [ $# -eq 0 ]; then echo -e "httpreq SERVER PATH [GET/HEAD] [PORT]\nOR\nhttpreq URL [GET/HEAD]"; return 1; fi
if echo $1 | grep -q "://"
then
SUNUCU=$(echo $1 |cut -d '/' -f3 | cut -d':' -f1)
YOL=/$(echo $1 |cut -d '/' -f4-)
PROTO=$(echo $1 |cut -d '/' -f1)
METHOD=${2:-GET}
PORT=$(echo $1| sed -n 's&^.*://.*:\([[:digit:]]*\)/.*&\1&p')
if [ -z $PORT ]
then
if [ $PROTO == "https:" ]; then PORT=443; else PORT=80; fi
fi
else
SUNUCU=$1
YOL=$2
METHOD=${3:-GET}
PORT=${4:-80}
fi
if [ $PROTO == "https:" ];
then
echo -e "$METHOD $YOL HTTP/1.1\r\nHOST:$SUNUCU\r\n\r\n" | openssl s_client -quiet -connect $SUNUCU:$PORT
else
echo -e "$METHOD $YOL HTTP/1.1\r\nHOST:$SUNUCU\r\n\r\n" | nc $SUNUCU $PORT
fi
}