---
url: https://docs.ogmabox.com/zh/app/replay.md
description: 在 Ogma 重放中创建、编辑和重新发送 HTTP 请求。
---

# 重放 {#replay}

重放让你修改并重新发送任意 HTTP 请求，并跟踪每次尝试，以便比较更改对响应的影响。

## 创建会话 {#creating-a-session}

重放会话保存一个请求及其尝试记录。常见创建方式包括：

* 在 **HTTP 历史记录**中选择请求，选择**发送到重放**。
* 在**自动化**中选择结果行，选择**发送到重放**。
* 打开**重放**并创建空白会话，粘贴或输入原始请求。
* 使用会话工具栏中的**导入**，从 API 定义生成会话。

各会话相互独立。打开多个会话，即可同时处理不同请求。

## 请求编辑器 {#the-request-editor}

编辑器显示完整 HTTP 请求：方法、URL、请求头和请求体。可直接编辑任意字段。

根据要执行的测试类型选择请求编辑模式：

| 标签页 | 可编辑内容 |
| --- | --- |
| 格式化 | 带有语法高亮的 HTTP 文本，在支持时提供格式化消息体。只有编辑此视图时，格式化才会成为请求的一部分。 |
| 原始 | 可编辑的 HTTP/1.x 请求的原始传输文本，包括可见的 CR/LF 转义。发送精确字节，而不会修复格式错误的消息定界。 |
| 十六进制 | 对完整 HTTP/1.x 请求进行字节级编辑，包括二进制内容。 |
| 表单 | 当请求体使用支持的表单编码时，提供基于字段的编辑。 |

工具栏包含方法、HTTP/TLS、目标、重定向、Content-Length、超时和 Cookie 来源控件。**查询参数**可用于添加、禁用或移除查询参数。当捕获的大型请求体尚未加载到编辑器时，使用**加载正文**。

原始和十六进制模式会刻意绕过变量展开、Cookie 替换、重定向和匹配与替换规则，让格式错误请求测试保留精确字节。它们是 HTTP/1.x 传输方式，不能用于构造原始 HTTP/2 帧。常规重放请使用结构化编辑器；检查实际发送内容时，查看产生的尝试记录。

## 发送和比较尝试 {#sending-and-comparing-attempts}

点击**发送**发出请求。响应会显示在右侧面板中。每次发送都会作为一次尝试，存储在编辑器下方的**请求记录**列表中。

如果**请求记录**已折叠，请展开它。选择一次尝试会加载该次尝试的请求和响应，而不只是最新响应。尝试控件包括在自动化中打开、删除单次尝试、导出 CSV，以及从视图中隐藏尝试。隐藏不同于删除。

使用**在比较器中打开此响应**，在比较工具中检查响应差异。每次只更改一个参数，以便将观察到的差异归因于该更改。

## 环境变量 {#environment-variables}

使用 {{env.VAR}} 引用环境、集合或会话变量。在**环境**中定义工作区/全局和项目值，然后使用集合或会话变量进行局部覆盖。需要在消息体内展开时，启用请求体模板；否则会保留其字节。

变量适用于：

* 在不同测试会话之间变化的令牌
* 测试访问控制时切换的账号 ID
* 在预发布和生产环境之间切换的主机

结构化发送时，最具体的值优先：会话、集合、项目，然后是全局。变量缺失会产生错误。转换和动态值请参阅[环境](./environment.md)。

## Cookie 和重定向 {#cookies-and-redirects}

选择**请求标头**保留会话中的 Cookie 请求头，选择 **Cookie 容器**使用匹配的项目 Cookie 存储中的 Cookie，或选择 **Ogma 浏览器**使用来自内嵌浏览器的匹配 Cookie。这些选择适用于结构化发送；原始和十六进制模式保留提供的字节。

使用**编辑项目 Cookie 容器**管理已保存的 Cookie。跟随重定向时，Ogma 最多跟随 10 次，并在源发生变化时移除 Authorization 和 Cookie 头部。源变化后请验证认证状态，不要假定凭据已被转发。

## 集合 {#collections}

集合用于组织相关会话。创建集合，可整理某个功能或测试场景的所有请求。

集合级变量应用于该集合内所有会话，因此你只需定义一次令牌，而不必逐个会话定义。

使用 **F2** 或会话上下文菜单重命名会话。使用**移至集合**或拖放移动会话，并在集合内重新排序。集合可包含子集合，并可导出/导入为 JSON。**关闭上方项**和**关闭下方项**指的是垂直会话列表。

## 导入 API 定义 {#importing-api-definitions}

1. 在会话工具栏中点击**导入**。
2. 选择自包含的 OpenAPI 3.x 文档、Postman v2.1 集合、GraphQL 内省结果或 WSDL 文档（最大 10 MB）。
3. 对于 GraphQL 内省，请在提示时提供 HTTP(S) 端点。
4. 发送前检查生成的集合和请求：目标 URL、参数、请求体示例和认证值可能需要根据你的环境修改。

导入会生成可编辑请求，不会运行扫描。不会获取外部模式引用，因此请将引用打包进输入文档。导入的路径还会出现在端点页面中，其来源为 API 规范，而不是 HTTP 历史记录条目。gRPC 反射不属于支持的导入格式。

## 序列 {#sequences}

使用**请求序列**面板选择至少两个现有重放会话，为序列命名并安排执行顺序。序列会发送真实请求，因此请使用已知的基线请求，并验证结果状态，不要将执行完成视为成功的证明。创建序列不会自动发现步骤之间的认证或令牌依赖关系。

## 发送到自动化 {#sending-to-automate}

需要大规模运行请求变体时，在会话中选择**发送到自动化**。Ogma 会打开自动化并预加载请求，让你定义载荷列表并运行测试任务。

## WebSocket 重放 {#websocket-replay}

WebSocket 重放是独立视图，包含连接状态和已发送/已接收消息时间线。在 WebSocket 历史记录中，使用**发送到 WS 重放**，连接后先发送必要的应用层初始化/认证消息，再测试修改后的帧。参阅 [WebSocket 重放](./ws-replay.md)。

## AI 辅助 {#ai-assist}

在响应上使用**使用 AI 分析**，请求分析选中的交互。请检查建议的测试和解释；助手的说明不是漏洞的独立证明。

## 相关页面 {#related-pages}

* [自动化](./automate.md)
* [WebSocket 重放](./ws-replay.md)
* [环境](./environment.md)
* [安全发现](./findings.md)
