我试图像Firebug一样监视从应用程序到我的服务器的调用。我找不到在iOS模拟器或xCode中查看的方法。
有没有办法在不嗅探所有流量的情况下做到这一点?如果不是,您会建议使用什么工具?
就个人而言,我使用Charles作为那种东西。 启用后,它将监视每个网络请求,显示扩展的请求详细信息,包括对SSL的支持和各种请求/响应格式,如JSON等...
您还可以将其配置为仅嗅探对特定服务器的请求,而不是整个流量。
这是商业软件,但有一个试验,恕我直言,它绝对是一个伟大的工具。
如果您习惯使用chrome检查器工具,那么一个很好的解决方案是Pony调试器:https://github.com/square/PonyDebugger
设置有点痛苦,但一旦你做好了。请务必使用Safari而不是Chrome来使用它。
Telerik Fiddler是个不错的选择
http://www.telerik.com/blogs/using-fiddler-with-apple-ios-devices
我用netfox。它非常易于使用和集成。您可以在模拟器和设备上使用它。它显示了所有请求和响应。它支持JSON,XML,HTML,图像和其他类型的响应。您可以通过IOS默认共享格式(Gmail,WhatsApp,电子邮件,松弛,短信等)共享请求,响应和完整日志
你可以查看GitHub:https://github.com/kasketis/netfox
Netfox可以快速查看iOS或OSX应用程序执行的所有已执行网络请求。它会抓取所有请求 - 当然是您的请求,来自第三方库(例如AFNetworking,Alamofire或其他)的请求,UIWebViews等等
如果您只想查看HTTP / HTTPS流量,那么像其他答案所建议的中间人代理是一个很好的解决方案。 Burp Suite非常好。但是,配置可能会很痛苦。我不确定你如何说服模拟器与之交谈。您可能必须将本地Mac上的代理设置为代理服务器的实例才能拦截,因为模拟器将使用您本地的Mac环境。
数据包嗅探的最佳解决方案(虽然它只适用于实际的iOS设备,而不是模拟器)我发现是使用rvictl
。 This blog post写得很好。基本上你做:
rvictl -s <iphone-uid-from-xcode-organizer>
然后你用Wireshark(或你喜欢的工具)嗅探它创建的界面,当你完成后关闭界面:
rvictl -x <iphone-uid-from-xcode-organizer>
这很好,因为如果你想要对模拟器进行数据包嗅探,你也需要通过流量到达本地Mac,但rvictl
创建了一个虚拟界面,只显示你插入到你的iOS设备的流量USB端口。
在Mac上轻松运行的免费开源代理工具是mitmproxy。
该网站包含Mac二进制文件的链接,以及Github上的源代码。
这些文档包含一个非常有用的介绍,可以将证书加载到您的测试设备中以查看HTTPS流量。
不像查尔斯那样具有图形用户界面,但它可以完成我需要的一切,并且可以自由维护。好的东西,如果你之前使用过一些命令行工具,那就很简单了。
更新:我刚刚在网站上注意到mitmproxy可以作为自制软件安装。不可能更容易。
Xcode提供CFNetwork诊断日志记录。 Apple doc
要启用它,请在Environment变量中添加CFNETWORK_DIAGNOSTICS = 3
这将显示来自应用程序及其标题和正文的请求。
如果你有电缆连接和Mac,那么有简单而有力的方法:
什么是最好的:完全相同的技巧也适用于Android!