如何监视从iOS模拟器发出的网络呼叫


113

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

有没有一种方法可以不监听所有流量?如果没有,您会建议使用哪种工具?

Answers:


84

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

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

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


1
真正易于使用和配置,并且完全满足我的要求,谢谢!
Mad Echet 2012年

3
当您的服务器受TLS保护时,它应该很容易工作。
carbocation 2015年

我尝试了Charles,但无法很好地监控传出流量。例如,我不能将POST请求的格式更改为JSON
Jesus Rodriguez

24

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

我发现的最好的数据包嗅探解决方案(尽管它仅适用于实际的 iOS设备,不适用于模拟器)rvictl这篇博客文章写得很好。基本上,您会这样做:

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

然后,您可以嗅探它与Wireshark(或您喜欢的工具)一起创建的接口,并在完成后使用以下命令关闭接口:

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

很好,因为如果您想对模拟器进行数据包嗅探,则还必须遍历到本地Mac的流量,但是要rvictl创建一个虚拟界面,该界面仅向您显示已插入USB的iOS设备的流量港口。


1
Burp Suite +1,配置起来很轻松engadget.com/2011/02/21/…不到10分钟
弗拉基米尔(Vladimir)

20

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

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

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

虽然不像Charles那样具有GUI风格,但是它可以满足我的所有需求,并且它是免费的和维护的。好东西,如果您以前使用过一些命令行工具,则非常简单。

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


使用mitm进行iOS模拟器是否有运气?我已经设置好了,但是来自模拟器外部计算机的流量也被捕获了,这不是最好的。在实际设备上使用它是惊人的。已经做了多年了。
atreat

mitmweb是mitmproxy基于Web的用户界面,它允许交互式检查和修改HTTP流量。像mitmproxy一样,它与mitmdump的不同之处在于所有流都保存在内存中,这意味着它旨在获取和处理较小的样本 mitmproxy.readthedocs.io/en/v2.0.2/mitmweb.html
Raunak,

15

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

你可以试试。

这是一个应用程序的屏幕截图: 在此处输入图片说明

最好的祝福。


尽管Bagel既出色又简单,但我最近注意到它还将显示缓存的请求。因此,例如,如果您想知道实际传输的字节,这将无济于事。
BlackWolf

10

Xcode提供CFNetwork诊断日志记录。苹果文件

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

在此处输入图片说明

这将显示来自应用程序的请求及其标题和正文。注意,OS_ACTIVITY_MODE必须将其设置为enable如下所示。否则,控制台上不会显示任何输出。


4

Wireshark它

选择你的界面

在此处输入图片说明

添加filter开始capture

在此处输入图片说明


测试中

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

您将在wireshark中看到它

在此处输入图片说明

如果您想了解有关一个特定数据包的更多详细信息,只需选择它,然后点击Follow> HTTP Stream即可

在此处输入图片说明

希望这对别人有帮助!


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!


您可以将其与模拟器一起使用吗?我的手机上还没有该应用程序。
2015年

@Joshua Dance,如果有外部网络请求,则可以将其与模拟器一起使用。不能通过wireshark跟踪到本地主机的连接,因为它们未通过“电线”(网卡)
JaakL 2015年

1

在OSX机器上如何工作?考虑两个标签是xcode和ios-simulator。
凯文R

@KevinR,1. Telerik确实有OS X的Fiddler的Beta版本2。问题没有人说,选择仅限于OS X telerik.com/blogs/using-fiddler-with-apple-ios-devices
Konstantin Salavatov

2
@KonstantinSalavatov,原始帖子的主题为“如何监视从iOS Simulator发出的网络呼叫”。iOS的模拟器只能运行在OS X,所以是的,选择限制在OS X.
ChillyPenguin

1
+1我认为您现在应该对此表示赞同,因为现在已经支持Mac OS X!:D telerik.com/fiddler#SupportedTechnologies和此处telerik.com/download/fiddler/fiddler-osx-beta
DavidNoreña18年

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


0

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.