Using Fiddler for API Monitoring in Mobile App Development

在移动应用开发领域,了解和监控应用程序如何与后端 API 交互至关重要。Fiddler 是一个网络流量监控工具,它可以帮助开发者深入了解 API 的使用情况。本文将介绍如何设置 Fiddler 以监控 Android 模拟器的网络流量,并使用 Fiddler 来更好地理解和集成 REST API。

Fiddler 提供了两个版本:Classic(免费但不再支持)和 Everywhere(付费,功能更丰富)。对于移动开发来说,Fiddler 成为了日常开发中不可或缺的工具。本文以 .NET MAUI 移动应用为例,展示如何利用 Fiddler 来监控和理解应用程序实际使用的 API。

本文介绍的移动应用是一个设计用于 Android 和 iOS 平台的 .NET MAUI 应用。为了在应用运行时监控 REST API 调用,需要在 Android 设备或模拟器上正确设置 Fiddler。Fiddler 提供了详细的文档说明如何进行设置,可以在这里找到相关文档。

在使用场景中,需要禁用模拟器的蜂窝网络功能,确保它仅模拟 Wi-Fi 访问,而不是蜂窝数据。配置的代理是通过 Wi-Fi 接口设置的,因此需要让模拟器仅使用 Wi-Fi,以便捕获设备上的流量。

Windows 11 网络 LAN 设置关闭了自动代理检测。这样做是因为当 Fiddler 启动时,Windows 会检测到代理服务,导致一些网络连接停止工作,特别是 Visual Studio 和 GitHub Copilot 在代理中受到干扰。这也阻止了 Fiddler 监控笔记本电脑的网络流量,这是一个期望的副作用。

在 Fiddler 中,还设置了过滤器,仅监控来自模拟器进程的流量,并过滤掉了一些只是噪声的常规网络调用。

以下是用来为 Android 模拟器配置 Fiddler 的步骤,这些步骤与 Fiddler 文档中的链接几乎相同,同时包含了所做的一些额外配置:

1. 安装 Fiddler Classic: 从官方网站下载并安装 Fiddler Classic。 2. 配置 Fiddler Classic: 打开 Fiddler 并转到 Tools > Options > Connections。 勾选 Allow remote computers to connect。 注意端口号(默认是 8888)。 重启 Fiddler 以应用更改。 3. 查找 IP 地址: 将鼠标悬停在 Fiddler 右上角的 Online 指示器上,查看 IP 地址。 4. 配置 Android 模拟器: 从 Visual Studio 启动 Android 模拟器。 在模拟器中,转到 Settings > Wi-Fi。 长按连接的网络(通常是 "Wired eth1")并选择 Modify Network。 启用 Show advanced options。 将 Proxy 设置为 Manual。 输入 IP 地址和端口号(8888)。 5. 安装 Fiddler 根证书: 打开模拟器的浏览器,导航到 http://ipv4.fiddler:8888/。 下载并安装 Fiddler 根证书。 按照提示将证书安装到系统帐户中。 6. 关闭蜂窝数据: 打开模拟器设置,导航到网络与互联网 / 互联网 / 然后点击移动提供商的齿轮图标。 点击滑块关闭使用此 SIM。 7. 关闭笔记本电脑 LAN 设置自动检测: 导航到控制面板/网络和 Internet / 单击 Internet 选项 / 单击连接选项卡 / 单击 LAN 设置按钮 取消选中自动检测。

在 Fiddler 中设置过滤器,设置了过滤器以移除一些噪声条目。注意,不必在 File 菜单下实际打开 Capture Traffic 来监控模拟器的流量。此时,模拟器上的代理直接将信息转发到 Fiddler,而捕获流量是在查看笔记本电脑上的网络流量。

还可以过滤特定进程的流量,这在某些情况下可能会有所帮助。例如:目前正在工作的 openlibrary.org 网站。弄清楚他们的 API。通常在 Edge 中打开 25 个或更多的标签页,幸运的是,当标签页处于休眠状态时,标签的标题不会出现在下拉列表中。这样很容易找到想要监控流量的标签页。然后,可以对该进程进行过滤,并选择 File Capture Traffic,现在可以监控来自模拟器和所感兴趣的一个网站的流量。

现在已经设置好模拟器转发到 Fiddler,并且设置了过滤器来监控感兴趣的一个浏览器标签页的流量。可以开始 File/Capture Traffic,并查看应用程序和它正在交互的网站的所有情况。

启动想要在模拟器中测试的应用程序。以下是使用 Fiddler 的一些示例。openlibrary.org 没有记录更新某人书架上书籍阅读状态的 API。可以将一本书设置为想要阅读、正在阅读、已经阅读。正在构建的移动应用希望能够做到同样的事情。为了弄清楚如何向 openlibrary.org 发出 API 调用以实现这一点,在 openlibrary.org 的网络浏览器中执行了步骤并更新了一本书。

例如,这是第一次尝试设置书籍阅读日期的数据。可以看到代码使用了 \u0002 作为双引号。当最终需要 JSON 看起来像这样: {“event_type”:2,”year”:2018,”month”:5,”day”:18,”event_id”:null} POST https://openlibrary.org/works/OL20643179W/check-ins HTTP/1.1 Content-Type: application/json; charset=utf-8 Cookie: pd=; session=/people/mynextbook%2C2024-09-06T14%3A56%3A52%2C04338%248a8ba7b97c5c121f24604a0332e40cc1 User-Agent: Dalvik/2.1.0 (Linux; U; Android 15; sdk_gphone64_x86_64 Build/AP31.240517.022) Host: openlibrary.org Connection: Keep-Alive Accept-Encoding: gzip Content-Length: 124 “{\u0022event_type\u0022: 2, \u0022year\u0022: 2018, \u0022month\u0022: 5, \u0022day\u0022: 18, \u0022event_id\u0022: null}”
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485