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

问题描述 投票:96回答:12

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

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

xcode networking ios-simulator network-monitoring
12个回答
80
投票

就个人而言,我使用Charles作为那种东西。 启用后,它将监视每个网络请求,显示扩展的请求详细信息,包括对SSL的支持和各种请求/响应格式,如JSON等...

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

这是商业软件,但有一个试验,恕我直言,它绝对是一个伟大的工具。


0
投票

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

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


0
投票

0
投票

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

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

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


28
投票

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端口。


18
投票

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

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

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

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

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


7
投票

最近我发现了一个简单的git repo

你可以试试。

这是一个应用程序的截图:enter image description here

最好的祝福。


4
投票

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

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

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


3
投票

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

  1. 免费安装Wireshark,确保它可以捕获设备(并且您需要在每次重启计算机后执行此操作!): sudo chmod 644 / dev / bpf *
  2. 现在用wifi分享您的网络。系统偏好设置>共享> Internet共享。检查您是否“通过以太网共享您的连接”并使用:Wi-Fi。您可能还想配置一些wifi安全性,它不会干扰您的数据监控。
  3. 将手机连接到新创建的网络。我经常需要在这里尝试几次。如果手机不想连接,请转动Mac的wifi,然后重复上面的步骤2并耐心等待。
  4. 启动Wireshark使用Wireshark捕获您的无线接口,它可能是“en1”。过滤所需的IP地址和/或端口。当您找到一个有趣的包时,选择它,右键单击(上下文菜单)>按照TCP流,您会看到请求和答案的漂亮文本表示。

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


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

1
投票

Wireshark it

选择你的界面

enter image description here

添加filter启动capture

enter image description here


Testing

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

您将在wireshark中列出它

enter image description here

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

enter image description here

希望这能帮到别人!!

© www.soinside.com 2019 - 2024. All rights reserved.