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

# 使用 XBOX Multiplayer Analysis Tool 檢查與修改網路流量

> 使用 XMAT 擷取、檢查、分析與修改來自 XBOX 開發主機與 Windows PC 的網路流量。

[XBOX Multiplayer Analysis Tool (XMAT)](https://github.com/microsoft/xbox-multiplayer-analysis-tool/blob/main/README.md) 可擷取、檢查與修改來自 XBOX 開發主機與 Windows PC 的網路流量。請下載[最新的 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 Desktop Runtime 與 ASP.NET Core Runtime](https://dotnet.microsoft.com/download/dotnet/10.0)，或適用於 Windows x64 的 .NET 10 SDK。
* 若要進行主機擷取，需要執行 recovery 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 流量。

## 擷取網頁流量

1. 在 XMAT 中，選取 **+** 索引標籤。
2. 選取執行遊戲的裝置：
   * 若為預設 XBOX 開發主機，請選取 **Default XBOX Console**。
   * 若為其他 XBOX 開發主機，請選取 **XBOX Console at IP or Hostname**。
   * 若為開發電腦上的遊戲，請選取 **Local PC**。
3. 選取 **Web Proxy**，然後選取 **Add Capture**。
4. 啟動 Proxy：
   * 若為 XBOX 開發主機，請選取 **Enable XBOX Proxy**。主機會重新啟動，並開始透過 XMAT 傳送網頁流量。
   * 若為 Windows PC，請選取 **Start Capture**。
5. 啟動遊戲，並執行您要檢查的情境。
6. 選取一個連線，以檢查其要求與回應的標頭和本文。

使用 **Host**、**Status** 與 **Method** 篩選條件來隔離相關流量。在 **File** 功能表上選取 **Save Captures**，將擷取儲存為 XMATCAP 檔案。

> [!IMPORTANT]
>
> 如果 XBOX 開發主機在 XMAT 未擷取時仍設定為使用 XMAT Proxy，XBOX 服務檢查與其他網路要求可能會失敗。測試完成後，請選取 **Disable XBOX Proxy**。主機會重新啟動以套用變更。

## 識別合作夥伴服務主機

在模擬服務中斷之前，請先擷取遊戲的正常流量：

1. 啟動 XMAT 網頁 Proxy 擷取。
2. 啟動遊戲，並執行每一項使用線上服務的功能，包括：
   * 選單與排行榜。
   * 多人遊戲工作階段的建立與加入。
   * 好友與社交功能。
   * 遊戲內商店。
   * 限時活動。
3. 使用 **Host** 篩選條件檢閱遊戲所連線的每一個主機。
4. 將擷取的主機與遊戲的服務清單比較，找出要測試的合作夥伴託管服務。

測試合作夥伴服務連線時，請勿封鎖 Microsoft、XBOX 或 PlayFab 服務主機。請確認每個主機的擁有者，而不要只依賴其名稱中的子字串來判斷。

## 封鎖合作夥伴服務

XMAT 指令碼可終止對選定主機的要求，同時讓其他流量維持可用。

1. 在使用中的網頁 Proxy 擷取中開啟 **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 開發主機正在使用 Proxy，請選取 **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

- [偵錯自訂 HTTP 堆疊](https://docs.xbox.com/zh-TW/build/console-features/networking/web-requests/debugging-custom-http-stacks.md)
- [Xbox One 網路擷取](https://docs.xbox.com/zh-TW/build/console-features/networking/tools/netcap-networking.md)
- [使用 Fiddler 檢查 Web 服務呼叫](https://docs.xbox.com/zh-TW/tools/tools-services/live-fiddler-inspect-web-calls.md)
- [Game Saves 工具](https://docs.xbox.com/zh-TW/build/core-features/common/game-save/game-saves-tools.md)
- [針對 PC 遊戲的 Xbox Services 流量進行疑難排解](https://docs.xbox.com/zh-TW/build/gdk-and-engines/guides/troubleshoot-xbox-services-traffic.md)
