Introdução
Os testes web começam pelo entendimento do comportamento HTTP comum. Uma conexão bem-sucedida, um código de estado, metadados de resposta e o conteúdo da página fornecem, cada um, uma parte diferente do cenário.
Este laboratório fornece um serviço web local para que você inspecione solicitações GET e HEAD com curl. Você lerá suas respostas e preservará cabeçalhos e conteúdo úteis sem tentar adivinhar diretórios, fazer injeção nem contornar autenticação.
Leia um recurso HTTP e seu estado
Nesta etapa, você usará curl para inspecionar um recurso HTTP local e distinguir o estado da aplicação do sucesso da conexão.
Entre no Kali e selecione o espaço de trabalho compartilhado:
kali
cd /home/labex/project
Uma URL como http://127.0.0.1:8080/scope.txt identifica um esquema (http), host (127.0.0.1), porta opcional (8080) e caminho (/scope.txt). O host e a porta escolhem o serviço; o caminho escolhe um recurso dentro desse serviço.
Curl faz solicitações a URLs. Seu método HTTP padrão é GET, que pede uma representação de um recurso. Solicite a página de treinamento:
curl http://127.0.0.1:8080/
O corpo da resposta é uma página HTML contendo o título Kali Training Welcome. Curl exibe o corpo como texto; não renderiza a página como um navegador web.
A opção -i inclui os cabeçalhos de resposta na saída exibida. Inspecione o recurso de escopo:
curl -i http://127.0.0.1:8080/scope.txt
A linha de estado informa 200 OK, seguida pelos cabeçalhos, uma linha em branco e o corpo Authorized local training only. Os cabeçalhos HTTP descrevem a resposta; o corpo carrega seu conteúdo.
Solicite um caminho que o servidor fornecido não disponibiliza:
curl -i http://127.0.0.1:8080/missing
Isso retorna 404 Not Found com um corpo curto. A conexão TCP e a troca HTTP ainda tiveram sucesso; a aplicação informa que o recurso solicitado não existe. Curl sem uma opção de falha por estado pode sair com sucesso para um HTTP 404, portanto leia o estado da resposta em vez de presumir que toda solicitação concluída corresponde a um recurso válido.
-o grava o corpo em um arquivo nomeado. -s oculta o medidor de progresso, enquanto -S ainda mostra um erro se uma transferência falhar; elas se combinam como -sS. Salve o texto de escopo:
curl -sS -o scope.txt http://127.0.0.1:8080/scope.txt
cat scope.txt
Saída esperada:
Authorized local training only.
Você salvou o corpo da resposta, em vez de uma descrição digitada manualmente.
Salve os cabeçalhos da resposta separados do corpo
Nesta etapa, você comparará GET e HEAD e preservará os cabeçalhos e a página do servidor como artefatos separados.
A opção -I (I maiúsculo) pede ao curl que envie uma solicitação HEAD. HEAD solicita os metadados da resposta sem transferir o corpo do recurso:
curl -I http://127.0.0.1:8080/
Procure 200 OK, Content-Type: text/html e o cabeçalho do site de treinamento. A resposta não inclui o corpo HTML. Um cabeçalho de comprimento do conteúdo ainda pode descrever o tamanho que teria o corpo GET correspondente.
Use GET quando precisar do conteúdo real. A opção -D do curl grava os cabeçalhos da resposta no nome de arquivo seguinte, e -o grava o corpo em outro arquivo:
curl -sS -D response-headers.txt -o page.html http://127.0.0.1:8080/
Leia os metadados salvos:
cat response-headers.txt
Eles devem incluir um estado de sucesso, o tipo de conteúdo HTML e X-Training-Site: guided-web. Os campos de servidor e data podem variar.
Leia o corpo separadamente:
cat page.html
Conteúdo esperado:
<html><title>Kali Training Welcome</title><body>Local practice site.</body></html>
Cabeçalhos e corpo respondem a perguntas diferentes: os primeiros descrevem como o servidor respondeu, enquanto o segundo contém o recurso solicitado. Mantê-los separados facilita comparações e processamento de texto posteriores.
Resumo
Você interpretou componentes de URL, fez solicitações GET e HEAD, distinguiu o estado HTTP do sucesso de conexão e inspecionou cabeçalhos e corpo. Salvou os metadados originais da resposta e o conteúdo da página separadamente para análise posterior.

