> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 使用 XMAT 检查和修改网络流量

> 使用 XMAT 捕获、检查、分析和修改来自 XBOX 开发主机和 Windows 电脑的网络流量。

[XBOX 多人游戏分析工具 (XMAT)](https://github.com/microsoft/xbox-multiplayer-analysis-tool/blob/main/README.md) 可捕获、检查和修改来自 XBOX 开发主机和 Windows 电脑的网络流量。请下载[最新的 XMAT 版本](https://github.com/microsoft/xbox-multiplayer-analysis-tool/releases)。

XMAT 可以：

* 代理 HTTP 和 HTTPS 流量。
* 解密并显示请求和响应数据。
* 按主机、状态代码和方法筛选捕获的流量。
* 运行可修改或终止请求和响应的 C# 脚本。
* 捕获和分析来自 XBOX 开发主机的低级网络流量。
* 分析实时或已保存的捕获，以发现有问题的 XBOX 服务调用模式。

## 要求

XMAT 需要：

* 运行 Windows 10 版本 1809（内部版本 17763）或更高版本或 Windows 11 的开发电脑。
* 开发电脑上的管理员权限。
* [适用于 Windows x64 的 .NET 10 桌面运行时和 ASP.NET Core 运行时](https://dotnet.microsoft.com/download/dotnet/10.0)，或适用于 Windows x64 的 .NET 10 SDK。
* 对于主机捕获，需要运行恢复版本 2106 或更高版本的 XBOX 开发主机。
* 对于连接到 XBOX 开发主机的 XMAT 功能，需要 GDK Extensions for XBOX。

## 安装 XMAT

1. 从 [XMAT 版本](https://github.com/microsoft/xbox-multiplayer-analysis-tool/releases)下载当前的 ZIP 文件。
2. 将 ZIP 文件解压缩到本地文件夹。
3. 以管理员身份运行 XMAT。
4. 出现提示时，安装并信任 XMAT 根证书。XMAT 使用此证书解密 HTTPS 流量。

## 捕获 Web 流量

1. 在 XMAT 中，选择“**+**”选项卡。
2. 选择运行游戏的设备：
   * 对于默认 XBOX 开发主机，选择“**Default XBOX Console**”。
   * 对于其他 XBOX 开发主机，选择“**XBOX Console at IP or Hostname**”。
   * 对于开发电脑上的游戏，选择“**Local PC**”。
3. 选择“**Web Proxy**”，然后选择“**Add Capture**”。
4. 启动代理：
   * 对于 XBOX 开发主机，选择“**Enable XBOX Proxy**”。主机将重新启动并开始通过 XMAT 发送 Web 流量。
   * 对于 Windows 电脑，选择“**Start Capture**”。
5. 启动游戏并执行要检查的方案。
6. 选择一个连接以检查其请求和响应标头及正文。

使用“**Host**”、“**Status**”和“**Method**”筛选器隔离相关流量。在“**File**”菜单上选择“**Save Captures**”，将捕获保存为 XMATCAP 文件。

> \[!IMPORTANT]
> 如果在 XMAT 未进行捕获时 XBOX 开发主机仍配置为使用 XMAT 代理，则 XBOX 服务检查和其他网络请求可能会失败。测试完成后，请选择“**Disable XBOX Proxy**”。主机将重新启动以应用此更改。

## 识别合作伙伴服务主机

在模拟服务中断之前，请先捕获游戏的正常流量：

1. 启动 XMAT Web 代理捕获。
2. 启动游戏并执行所有使用联机服务的功能，包括：
   * 菜单和排行榜。
   * 多人游戏会话的创建和加入。
   * 好友和社交功能。
   * 游戏内商店。
   * 限时活动。
3. 使用“**Host**”筛选器查看游戏联系的每个主机。
4. 将捕获的主机与游戏的服务清单进行比较，并确定要测试的合作伙伴托管服务。

测试合作伙伴服务连接时，请勿阻止 Microsoft、XBOX 或 PlayFab 服务主机。请确认每个主机的所有权，而不是仅依赖其名称中的子字符串。

## 阻止合作伙伴服务

XMAT 脚本可以终止对所选主机的请求，同时让其他流量保持可用。

1. 在活动的 Web 代理捕获中打开“**Script Editor**”。

2. 选择“**SSL Connection Request**”事件。

3. 将示例主机替换为要阻止的每个合作伙伴服务主机。例如：

   ```csharp theme={null}
   string host = Params.Request.Host.ToLowerInvariant();

   if (host == "api.publisher.example" ||
       host.EndsWith(".api.publisher.example"))
   {
       Params.Continue = false;
   }
   ```

4. 选择“**Enable**”。验证脚本是否成功编译。

5. 执行受影响的游戏功能，并验证对所选主机的请求失败，而 Microsoft、XBOX 和 PlayFab 服务仍然可用。

“**SSL Connection Request**”事件会阻止 HTTPS 连接。如果合作伙伴服务使用未加密的 HTTP，请将相同的主机条件应用于“**Web Request**”事件，并将 `Params.Continue` 设置为 `false`。

若要模拟在游戏启动前就不可用的服务，请在启动游戏之前启用阻止脚本。

> \[!CAUTION]
> XMAT 脚本会影响来自所选设备的实时流量。请将阻止脚本限制为测试所需的特定合作伙伴主机，并在测试完成后禁用该脚本。

## 停止捕获

1. 禁用所有活动脚本。
2. 选择“**Stop Capture**”。
3. 如果 XBOX 开发主机正在使用代理，请选择“**Disable XBOX Proxy**”并等待主机重新启动。

有关已知问题和支持选项，请参阅 [XMAT 项目文档](https://github.com/microsoft/xbox-multiplayer-analysis-tool/blob/main/README.md#known-issues)和 [XMAT 支持策略](https://github.com/microsoft/xbox-multiplayer-analysis-tool/blob/main/SUPPORT.md)。


## Related topics

- [XR-074 与 XBOX 和合作伙伴服务的连接断开](/zh-CN/publishing/certification/xr/xr-074.md)
- [XBOX 主机游戏经认证测试的 XBOX 要求](/zh-CN/publishing/certification/console-cert-tested-requirements.md)
- [在 XBOX One 开发套件上捕获网络流量](/zh-CN/build/console-features/networking/tools/netcap-networking.md)
- [在 PC 上排查 XBOX 服务流量问题](/zh-CN/build/gdk-and-engines/guides/troubleshoot-xbox-services-traffic.md)
- [游戏存档工具](/zh-CN/build/core-features/common/game-save/game-saves-tools.md)
