我正试图像Firebug一样监视从应用程序到我的服务器的调用。 我找不到在iOS模拟器或xCode中查看的方法。
有没有办法在不嗅探所有流量的情况下做到这一点? 如果不是,您会建议使用什么工具?
答案 0 :(得分:78)
就我个人而言,我使用 Charles 来表达这种东西 启用后,它将监控每个网络请求,显示扩展的请求详细信息,包括对SSL的支持以及各种请求/响应格式,如JSON等...
您还可以将其配置为仅嗅探对特定服务器的请求,而不是整个流量。
这是商业软件,但有一个试用版,恕我直言,它绝对是一个很好的工具。
答案 1 :(得分:27)
答案 2 :(得分:24)
如果您只想查看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端口的设备。
答案 3 :(得分:18)
在Mac上轻松运行的免费开源代理工具mitmproxy。
该网站包含指向Mac二进制文件的链接,以及Github上的源代码。
这些文档包含一个非常有用的介绍,可以将证书加载到您的测试设备中以查看HTTPS流量。
不像查尔斯那样具有图形用户界面,但它可以完成我需要的一切,并且可以自由维护。 好的东西,如果你之前使用过一些命令行工具,那就很简单了。
更新:我刚刚在网站上发现mitmproxy可以作为自制软件安装。不可能更容易。
答案 4 :(得分:3)
如果你有电缆连接和Mac,那么有简单而有效的方法:
免费安装Wireshark,确保它可以捕获设备(并且每次重启计算机后都需要执行此操作):
sudo chmod 644 / dev / bpf *
现在用wifi分享您的网络。系统偏好&gt;分享&gt;网络共享。检查您是否“通过以太网共享您的连接”并使用:Wi-Fi。您可能还想配置一些wifi安全性,它不会干扰您的数据监控。
将手机连接到新创建的网络。我经常需要在这里尝试几次。如果手机不想连接,请关闭Mac的wifi,然后重复上面的步骤2并耐心等待。
启动Wireshark使用Wireshark捕获您的无线接口,它可能是“en1”。过滤所需的IP地址和/或端口。当您找到有趣的包时,选择它,右键单击(上下文菜单)&gt;关注TCP Stream,您会看到请求和答案的文本表示。
什么是最好的:同样适用于Android的技巧也是如此!
答案 5 :(得分:2)
答案 6 :(得分:1)
答案 7 :(得分:1)
选择您的界面
添加filter
,开始capture
单击任何会触发GET / POST / PUT / DELETE请求的操作或按钮
您将在Wireshk上看到它
如果您想了解有关一个特定数据包的更多详细信息,只需选择它并关注> HTTP流。
希望这对别人有帮助!!
答案 8 :(得分:1)
答案 9 :(得分:1)
您还可以使用此open source library called Wormholy(由我制作)。
您只需要将其集成到您的项目中(无需代码),仅此而已,就可以在真实设备上监视应用程序的所有API请求。
您不需要像Charles一样管理证书。这一切都是魔术般的!
答案 10 :(得分:1)
FLEX 是一款出色的工具,可用于监控来自 iOS 应用的网络流量。
单击上面屏幕截图中列出的任何请求后,我将被重定向到另一个屏幕,在那里我可以查看有关该请求的更多详细信息。
但是,我有一个用例,我正在开发的应用程序会将用户重定向到 Safari。我也想监控 Safari 中的网络流量,但 FLEX 只能监控来自您的 iOS 应用的流量,而不能监控来自任何其他应用的流量(在撰写此答案时)。
然后我切换到 Proxyman 来监控来自 iOS 模拟器的网络流量。
答案 11 :(得分:0)
如果您习惯使用chrome检查器工具,那么一个很好的解决方案是Pony调试器:https://github.com/square/PonyDebugger
设置有点痛苦,但一旦你做好了。请确保使用Safari而不是Chrome来使用它。
答案 12 :(得分:0)
Telerik Fiddler是个不错的选择
http://www.telerik.com/blogs/using-fiddler-with-apple-ios-devices
答案 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
。检查将显示选项卡。点击“网络”标签,该标签将显示所有发出的网络请求。