133

我正在尝试像 Firebug 一样监控从应用程序到我的服务器的调用。我找不到在 iOS 模拟器或 xCode 中查看的方法。

有没有办法在不嗅探所有流量的情况下做到这一点?如果没有,你会推荐什么工具?

4

16 回答 16

94

就个人而言,我使用查尔斯来做那种事情。
启用后,它将监控每个网络请求,显示扩展请求详细信息,包括对 SSL 和各种请求/响应格式(如 JSON 等)的支持...

您还可以将其配置为仅嗅探对特定服务器的请求,而不是整个流量。

它是商业软件,但有试用版,恕我直言,它绝对是一个很棒的工具。

于 2012-06-20T21:31:16.940 回答
26

如果您只想查看 HTTP/HTTPS 流量,中间人代理(如其他答案所建议的)是一个很好的解决方案。Burp Suite很不错。不过配置起来可能会很痛苦。我不确定您将如何说服模拟器与之交谈。您可能必须将本地 Mac 上的代理设置为代理服务器实例才能拦截,因为模拟器将使用您本地 Mac 的环境。

我发现数据包嗅探的最佳解决方案(尽管它仅适用于实际的 iOS 设备,而不适用于模拟器)是使用rvictl. 这篇博文有一篇不错的文章。基本上你这样做:

rvictl -s <iphone-uid-from-xcode-organizer>

然后,您使用 Wireshark(或您最喜欢的工具)嗅探它创建的界面,完成后使用以下命令关闭界面:

rvictl -x <iphone-uid-from-xcode-organizer>

这很好,因为如果你想对模拟器进行数据包嗅探,你也必须涉足到本地 Mac 的流量,但rvictl会创建一个虚拟界面,只显示你插入 USB 的 iOS 设备的流量港口。

于 2012-06-21T04:48:50.427 回答
21

最近我发现了一个git repo让它变得简单。

你可以试试看。

这是一个应用程序的屏幕截图: 在此处输入图像描述

最好的祝福。

于 2019-02-13T22:21:56.603 回答
20

在 Mac 上轻松运行的免费开源代理工具是mitmproxy

该网站包含指向 Mac 二进制文件的链接,以及 Github 上的源代码。

该文档包含一个非常有用的介绍,用于将证书加载到您的测试设备以查看 HTTPS 流量。

不像 Charles 那样 GUI-tastic,但它可以满足我的一切需求,而且它是免费和维护的。好东西,如果您以前使用过一些命令行工具,那么非常简单。

更新:我刚刚在网站上注意到 mitmproxy 可以作为自制软件安装。再简单不过了。

于 2013-05-23T03:30:22.413 回答
16

Xcode 提供 CFNetwork 诊断日志。苹果文档

要启用它,CFNETWORK_DIAGNOSTICS=3请在环境变量部分添加:

在此处输入图像描述

这将显示来自应用程序的请求及其标头和正文。注意OS_ACTIVITY_MODE一定要设置enable成如图。否则控制台上不会显示任何输出。

于 2018-09-11T01:23:46.750 回答
6

Wireshark 它

选择你的界面

在此处输入图像描述

添加filter启动capture

在此处输入图像描述


测试

单击将触发 GET/POST/PUT/DELETE 请求的任何操作或按钮

你会在wireshark中看到它

在此处输入图像描述

如果您想了解有关某个特定数据包的更多详细信息,只需选择它并关注 > HTTP 流

在此处输入图像描述

希望这对其他人有帮助!

于 2018-10-09T13:16:49.793 回答
5

似乎这可能是最近添加的。在模拟器上点击command++会弹出调试菜单。从该菜单中,单击。检查将显示选项卡。单击网络选项卡,这将显示正在发出的所有网络请求。controlzInspect

于 2020-09-03T16:10:11.083 回答
3

如果您有电缆连接和 Mac,那么有一个简单而强大的方法:

  1. 安装免费的 Wireshark,确保它可以捕获设备(并且您需要在每次计算机重新启动后执行此操作!):

    须藤 chmod 644 /dev/bpf*

  2. 现在与 wifi 共享您的网络。系统偏好设置 > 共享 > Internet 共享。检查您是否有“共享来自:以太网的连接”并使用:Wi-Fi。您可能还想配置一些 wifi 安全性,它不会干扰您的数据监控。

  3. 将手机连接到新创建的网络。我在这里经常需要几次尝试。如果手机不想连接,请关闭Mac的wifi,然后重复上面的步骤2并耐心等待。

  4. 启动 Wireshark 用 Wireshark 捕获你的无线接口,它可能是“en1”。过滤您需要的 IP 地址和/或端口。当你找到一个有趣的包时,选择它,右键单击(上下文菜单)> Follow TCP Stream,你会看到请求和答案的漂亮文本表示。

什么是最好的:同样的技巧也适用于 Android!

于 2012-09-11T10:11:59.427 回答
2

Telerik Fiddler 是一个不错的选择

http://www.telerik.com/blogs/using-fiddler-with-apple-ios-devices

于 2017-02-01T08:39:22.810 回答
2

Xcode 13您可以使用 Xcode Instruments -> Network instrument 来监控所有网络流量及其所有详细信息。您需要一台在 macOS 12+ 上运行 iOS 15+ 的物理设备

有关更多详细信息,请参阅 WWDC 2021 视频中的分析网络流量

于 2021-09-02T13:26:55.697 回答
1
  1. 安装 WireShark
  2. 从 xcode 网络监视器获取 ip 地址
  3. 听wifi接口
  4. 在 WireShark 中设置过滤器 ip.addr == 192.168.1.122
于 2018-02-14T19:36:16.617 回答
1

您还可以使用这个名为 Wormholy 的开源库(由我制作)。

您只需将它集成到您​​的项目中(无需代码),就是这样,您将能够监控您的应用程序的所有 API 请求,也在真实设备上。

而且您不需要像 Charles 那样管理证书。这一切都靠魔法!

于 2020-09-07T09:56:32.077 回答
1

FLEX是监控 iOS 应用程序网络流量的绝佳工具。

FLEX iOS 截图 1

单击上面屏幕截图中列出的任何请求时,我将被重定向到另一个屏幕,在那里我可以看到有关该请求的更多详细信息。 FLEX iOS 截图 2

但是,我有一个用例,我正在开发的应用程序会将用户重定向到 Safari。我也想监控 ​​Safari 中的网络流量,但 FLEX 只能监控来自您的 iOS 应用程序的流量,而不是来自任何其他应用程序的流量(在撰写此答案时)。

然后我切换到Proxyman来监控来自 iOS 模拟器的网络流量。

  • 它有一套明确的说明,说明如何使用iOS 模拟器Android 模拟器进行设置。
  • 它有一个简单、直观的用户界面,使其易于使用。

在此处输入图像描述

于 2021-02-01T13:14:26.387 回答
0

如果您习惯使用 chrome 检查器工具,一个很好的解决方案是 Pony 调试器:https ://github.com/square/PonyDebugger

设置起来有点痛苦,但是一旦你完成它就会很好地工作。请务必使用 Safari 而不是 Chrome 来使用它。

于 2015-06-14T11:13:28.837 回答
0

我用网狐。它非常易于使用和集成。您可以在模拟器和设备上使用它。它显示了所有的请求和响应。它支持 JSON、XML、HTML、图像和其他类型的响应。您可以通过 IOS 默认共享格式(Gmail、WhatsApp、电子邮件、slack、短信等)共享请求、响应和完整日志

你可以在 GitHub 上查看:https ://github.com/kasketis/netfox

Netfox 可以快速查看您的 iOS 或 OSX 应用程序执行的所有已执行网络请求。它抓取所有请求 - 当然是您的请求,来自 3rd 方库(例如 AFNetworking、Alamofire 或其他)、UIWebViews 等的请求

于 2019-01-11T07:05:12.763 回答
0

您可以尝试使用https://github.com/BugBlock/BugBlock-iOS这是我创建的一个小工具,所以您需要的一切是:

import BugBlock

然后

var config = BBConfiguration()
config.consoleLoggingEnabled = false
config.serverLoggingEnabled = true
config.crashReportingEnabled = true
BBLog.start(appId: "SDK key", configuration: config)

并设置网络拦截器

let conf = URLSessionConfiguration.default
BBLog.networkLogging(with: conf)
let session = URLSession(configuration: conf)

然后session在您的请求中使用。希望可以帮助您捕获日志。

于 2021-11-16T14:01:48.427 回答