介绍
Web 测试从理解常规 HTTP 行为开始。连接成功、状态码、响应元数据和页面内容分别提供不同方面的信息。
本实验提供本地 Web 服务,让你使用 curl 检查 GET 与 HEAD 请求。你将阅读响应,保留有用的响应头与内容,不涉及目录猜测、注入或身份验证绕过。
读取 HTTP 资源及其状态
本步骤中,你将使用 curl 检查本地 HTTP 资源,并区分应用状态与连接成功。
进入 Kali 并选择共享工作区:
kali
cd /home/labex/project
像 http://127.0.0.1:8080/scope.txt 这样的 URL 指明了协议方案(http)、主机(127.0.0.1)、可选端口(8080)和路径(/scope.txt)。主机与端口选择服务,路径选择该服务内的资源。
Curl 向 URL 发起请求。默认 HTTP 方法为 GET,用于请求资源的表示形式。请求训练页面:
curl http://127.0.0.1:8080/
响应正文是包含标题 Kali Training Welcome 的 HTML 页面。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 正文。content-length 响应头仍可能描述对应 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 状态与连接成功,并检查了响应头和正文。你将原始响应元数据与页面内容分开保存,以供后续分析。

