2012-06-20 120 views
77

我试图监视从应用程序到我的服务器的调用,就像Firebug一样。 我找不到在iOS模拟器或xCode中看到的方法。如何监控从iOS模拟器进行的网络调用

有没有办法做到这一点,而不嗅探所有的流量? 如果不是,你会建议什么工具?

回答

64

就个人而言,我用Charles的那种东西。
启用时,它会监视每一个网络请求,显示扩展的请求的详细信息,包括SSL和各种请求/效应初探格式,如JSON等支持......

您还可以配置它嗅出仅请求特定的服务器,而不是整个流量。

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

+1

真的很容易使用和配置,正是我想要的,谢谢! –

+1

当您的服务器受TLS保护时,它不会轻松工作,它应该是。 – carbocation

+0

我尝试过查尔斯,但我无法很好地监控传出流量。例如,我不会将POST请求的格式更改为JSON –

24
+3

谢谢,这听起来不错,但我无法找到它的位置(对于成为这样的初学者感到抱歉,但两天前我得到了第一个mac) 。 –

+11

谢谢!我会玩弄这个,但首先看看我找不到一种方法来查看返回和返回的内容(请求头+内容和Firebug中的响应或Chrome/Safari上的相应内容)。也许这是某个地方,我会继续挖掘。 –

+0

你们对使用这种仪器的方法有何建议? –

23

如果您只想查看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会创建一个虚拟接口,向您显示来自已插入USB端口的iOS设备的流量。

+1

适用于Burp Suite,无需配置它:https://www.engadget。com/2011/02/21/how-to-inspect-ioss-http-traffic-without-spend-a-dime /花费少于10分钟 – Vladimir

3

如果您有电缆连接和Mac,再有就是简单而有效的方法:

  1. 安装免费的Wireshark,确保它可以捕捉设备(和你需要的每一台计算机后,要做到这一点重新启动):

    须藤搭配chmod 644的/ dev/BPF *

  2. 现在带wifi分享您的网络。系统首选项>共享> Internet共享。检查你是否“分享你的连接:以太网”并使用:Wi-Fi。您可能还想配置一些wifi安全性,它不会打扰您的数据监控。

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

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

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

+0

你可以在模拟器中使用它吗?我的手机上没有应用程序。 –

+0

@Joshua Dance如果有外部网络请求,您可以将其与模拟器一起使用。与本地主机的连接无法使用wireshark进行追踪,因为它们没有通过“连线”(网卡) – JaakL

16

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

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

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

不像查尔斯那么贵,但它做我需要的一切,它的自由和维护。 好东西,如果你以前使用过一些命令行工具,那就很简单了。

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

+0

您是否有幸在iOS模拟器中使用mitm?我设置了它,但模拟器外部的计算机流量也被捕获,这不是最好的。在实际设备上使用它是惊人的。多年来一直这样做。 – atreat

0

,如果你使用的Chrome检查工具一个好的解决办法是小马调试器:https://github.com/square/PonyDebugger

这是一个痛苦位设置的,但一旦你做它工作得很好。一定要使用Safari而不是Chrome来使用它。

-2

Telerik的提琴手是一个不错的选择

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

+0

这将如何在OSX机器上工作?考虑到两个标签是xcode和ios模拟器。 –

+0

@KevinR, 1. Telerik确实有OS X的Fiddler的beta版本 2.问题中没有地方说选择仅限于OS X http://www.telerik.com/blogs/using-fiddler -with-apple-ios-devices –

+1

@KonstantinSalavatov, 原帖的主题是“如何监控iOS模拟器的网络调用”。 iOS模拟器只能在OS X上运行,所以是的,选择*仅限于OS X. – ChillyPenguin

1
  1. 安装的是Wireshark
  2. 得到的Xcode网络监控IP地址
  3. 听WiFi接口
  4. 设置的过滤ip.addr == WireShark中的192.168.1.122