如何监控从iOS模拟器进行的网络调用

时间:2012-06-20 21:19:11

标签: xcode networking ios-simulator network-monitoring

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

有没有办法在不嗅探所有流量的情况下做到这一点? 如果不是,您会建议使用什么工具?

15 个答案:

答案 0 :(得分:78)

就我个人而言,我使用 Charles 来表达这种东西 启用后,它将监控每个网络请求,显示扩展的请求详细信息,包括对SSL的支持以及各种请求/响应格式,如JSON等...

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

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

答案 1 :(得分:27)

答案 2 :(得分:24)

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

数据包嗅探的最佳解决方案(虽然它仅适用于实际 iOS设备,而不是模拟器)我发现使用rvictlThis blog post有一个很好的写作。基本上你做:

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

然后你用Wireshark(或你最喜欢的工具)嗅探它创建的界面,当你完成时关闭界面:

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

这很好,因为如果你想要对模拟器进行数据包嗅探,你也不得不通过流量到达本地Mac,但是rvictl创建了一个虚拟界面,只显示来自iOS的流量您已插入USB端口的设备。

答案 3 :(得分:18)

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

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

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

不像查尔斯那样具有图形用户界面,但它可以完成我需要的一切,并且可以自由维护。 好的东西,如果你之前使用过一些命令行工具,那就很简单了。

更新:我刚刚在网站上发现mitmproxy可以作为自制软件安装。不可能更容易。

答案 4 :(得分:3)

如果你有电缆连接和Mac,那么有简单而有效的方法:

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

    sudo chmod 644 / dev / bpf *

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

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

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

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

答案 5 :(得分:2)

Xcode提供CFNetwork诊断日志记录。 Apple doc

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

这将显示带有标题和正文的来自应用程序的请求。

答案 6 :(得分:1)

  1. 安装WireShark
  2. 从xcode网络监视器获取IP地址
  3. 收听wifi界面
  4. 在WireShark中设置过滤器ip.addr == 192.168.1.122

答案 7 :(得分:1)

Wireshark it

选择您的界面

enter image description here

添加filter,开始capture

enter image description here


测试

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

您将在Wireshk上看到它

enter image description here

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

enter image description here

希望这对别人有帮助!!

答案 8 :(得分:1)

最近我发现了一个git repo,它很容易。

您可以尝试。

这是应用程序的屏幕截图: enter image description here

最诚挚的问候。

答案 9 :(得分:1)

您还可以使用此open source library called Wormholy(由我制作)。

您只需要将其集成到您的项目中(无需代码),仅此而已,就可以在真实设备上监视应用程序的所有API请求。

您不需要像Charles一样管理证书。这一切都是魔术般的!

答案 10 :(得分:1)

FLEX 是一款出色的工具,可用于监控来自 iOS 应用的网络流量。

FLEX iOS Screenshot 1

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

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

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

  • 它有一套明确的说明,说明如何使用 iOS simulatorsAndroid emulators 进行设置。
  • 它具有简单直观的用户界面,易于使用。

enter image description here

答案 11 :(得分:0)

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

设置有点痛苦,但一旦你做好了。请确保使用Safari而不是Chrome来使用它。

答案 12 :(得分:0)

答案 13 :(得分:0)

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

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

  

Netfox可以快速查看由iOS或OSX应用执行的所有已执行的网络请求。它捕获所有请求-当然是您的请求,来自第三方库(例如AFNetworking,Alamofire或其他),UIWebViews等的请求

答案 14 :(得分:0)

似乎这是最近添加的。在模拟器上单击command + control + z将弹出调试菜单。在该菜单中,单击Inspect。检查将显示选项卡。点击“网络”标签,该标签将显示所有发出的网络请求。