Введение
Тестирование веб-служб начинается с понимания обычного поведения HTTP. Успешное соединение, код состояния, метаданные ответа и содержимое страницы дают разные части картины.
Эта работа предоставляет локальную веб-службу для изучения запросов GET и HEAD с curl. Вы прочитаете ответы и сохраните полезные заголовки и содержимое без угадывания каталогов, инъекций или обхода аутентификации.
Прочитайте HTTP-ресурс и его состояние
На этом шаге вы изучите локальный HTTP-ресурс с curl и отличите состояние приложения от успеха соединения.
Войдите в Kali и выберите общую рабочую папку:
kali
cd /home/labex/project
URL вроде http://127.0.0.1:8080/scope.txt определяет схему (http), хост (127.0.0.1), необязательный порт (8080) и путь (/scope.txt). Хост и порт выбирают службу; путь выбирает ресурс внутри неё.
Curl отправляет запросы к URL. Метод HTTP по умолчанию — GET, запрашивающий представление ресурса. Запросите учебную страницу:
curl http://127.0.0.1:8080/
Тело ответа — HTML-страница с заголовком Kali Training Welcome. Curl выводит тело текстом, а не отображает страницу как браузер.
Параметр -i включает заголовки ответа в показанный вывод. Изучите ресурс области работ:
curl -i http://127.0.0.1:8080/scope.txt
Строка состояния сообщает 200 OK, далее идут заголовки, пустая строка и тело Authorized local training only. Заголовки HTTP описывают ответ; тело несёт содержимое.
Запросите путь, которого нет на предоставленном сервере:
curl -i http://127.0.0.1:8080/missing
Он возвращает 404 Not Found с коротким телом. TCP-соединение и обмен HTTP всё же успешны; приложение сообщает, что запрошенный ресурс не существует. Curl без параметра ошибки по статусу может успешно завершиться при HTTP 404, поэтому читайте состояние ответа, не считая каждый завершённый запрос корректным ресурсом.
-o записывает тело в названный файл. -s скрывает индикатор хода, а -S всё равно показывает ошибку при неудачной передаче; они объединяются в -sS. Сохраните текст области работ:
curl -sS -o scope.txt http://127.0.0.1:8080/scope.txt
cat scope.txt
Ожидаемый вывод:
Authorized local training only.
Вы сохранили тело ответа вместо написанного вручную описания.
Сохраните заголовки ответа отдельно от тела
На этом шаге вы сравните GET и HEAD и сохраните заголовки сервера и страницу как отдельные материалы.
Параметр -I (заглавная I) просит curl отправить HEAD-запрос. HEAD запрашивает метаданные ответа без передачи тела ресурса:
curl -I http://127.0.0.1:8080/
Найдите 200 OK, Content-Type: text/html и заголовок учебного сайта. Ответ не включает тело HTML. Заголовок длины содержимого всё же может описывать размер соответствующего тела GET.
Используйте GET для фактического содержимого. Параметр curl -D записывает заголовки ответа в следующий файл, а -o — тело в другой файл:
curl -sS -D response-headers.txt -o page.html http://127.0.0.1:8080/
Прочитайте сохранённые метаданные:
cat response-headers.txt
Они должны включать успешное состояние, тип содержимого HTML и X-Training-Site: guided-web. Поля сервера и даты могут различаться.
Прочитайте тело отдельно:
cat page.html
Ожидаемое содержимое:
<html><title>Kali Training Welcome</title><body>Local practice site.</body></html>
Заголовки и тело отвечают на разные вопросы: первые описывают ответ сервера, второе содержит запрошенный ресурс. Раздельное хранение облегчает дальнейшие сравнения и обработку текста.
Резюме
Вы разобрали компоненты URL, отправили GET и HEAD, отличили состояние HTTP от успеха соединения и изучили заголовки и тело. Вы сохранили исходные метаданные ответа и содержимое страницы отдельно для дальнейшего анализа.

