如何监听由 iOS 模拟器打出的网络电话

我试图监听从应用程序到我的服务器的呼叫,就像 Firebug 做的那样。 我无法在 iOS 模拟器或 xCode 中看到这一点。

有没有什么办法可以不用嗅到所有的流量? 如果没有,您建议使用什么工具?

161932 次浏览

就我个人而言,我用 查尔斯来做这些事情。
启用后,它将监视每个网络请求,显示扩展的请求详细信息,包括对 SSL 和各种请求/响应格式(如 JSON 等)的支持。.

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

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

如果您只想查看 HTTP/HTTPS 流量,那么像其他答案所建议的那样,中间人代理是一个很好的解决方案。打嗝套房很不错。不过配置起来可能有点麻烦。我不知道你怎么说服模拟器跟它对话。您可能必须将本地 Mac 上的代理设置为代理服务器的实例,以便进行拦截,因为模拟器将利用本地 Mac 的环境。

我发现的数据包嗅探的最佳解决方案(尽管它只适用于 真的 iOS 设备,而不适用于模拟器)是使用 rvictl这篇博文的记录很不错。基本上是这样的:

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

然后你嗅嗅它用 Wireshark (或者你最喜欢的工具)创建的界面,当你完成后关闭界面:

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

这是很好的,因为如果你想包嗅模拟器,你必须涉水通过流量到您的本地 Mac 也,但 rvictl创建一个虚拟接口,只显示你的流量的 iOS 设备,你已经插入到你的 USB 端口。

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

  1. 安装免费的 Wireshark,确保它可以捕捉设备(你需要这样做 每次电脑重启后!) :

    Sudo chmod 644/dev/bpf *

  2. 现在与 wifi 共享您的网络。系统设定 > 共用 > 互联网共用。检查您是否已经“从以太网共享您的连接”并使用: Wi-Fi。您可能还要配置一些 wifi 安全,它不会干扰您的数据监控。

  3. 将您的手机连接到新创建的网络。我经常需要几次尝试。如果手机不想连接,关闭 Mac 的 wifi,然后重复上面的步骤2并保持耐心。

  4. 开始用 Wireshark 捕捉你的无线界面,它可能是“ en1”。过滤所需的 IP 地址和/或端口。当你找到一个有趣的包,选择它,右键单击(上下文菜单) > 关注 TCP 流,你会看到请求和答案的漂亮的文本表示。

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

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

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

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

虽然没有查尔斯的 GUI 那么好,但是它可以做我需要的任何事情,并且免费维护。 好东西,如果您以前使用过一些命令行工具,那么这些东西非常简单。

更新: 我刚刚在网站上注意到 mitmxy 可以作为一个自制的安装程序使用,这再简单不过了。

一个很好的解决方案,如果你习惯了铬检查工具是小马调试器: https://github.com/square/PonyDebugger

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

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

提供 CFNetwork 诊断日志记录

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

enter image description here

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

用电话联系

选择你的界面

enter image description here

添加 filter启动 capture

enter image description here


测试

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

您将看到它在 wireshark.com 中列出

enter image description here

如果你想知道关于一个特定数据包的更多细节,只需要选择它和 按 > HTTP 记录流

enter image description here

希望这能帮助别人! !

我用的是 Netfox。它非常容易使用和集成。你可以在模拟器和设备上使用它。它显示所有的请求和响应。它支持 JSON、 XML、 HTML、 Image 和其他类型的响应。您可以通过 IOS 默认共享格式(Gmail、 WhatsApp、 email、 lack、 sms 等)共享请求、响应和完整日志

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

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

最近我发现一个 回收,使它很容易。

你可以试试。

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

最好的问候。

看起来这可能是最近添加的。单击模拟器上的 command + control + z将弹出一个调试菜单。从该菜单中,单击 Inspect。检查将显示标签。单击网络选项卡,该选项卡将显示正在发出的所有网络请求。

你也可以使用这个 名为 WormHoly 的开放源码库(由我制作)。

你只需要将它集成到你的项目中(不需要任何代码) ,就这样,你将能够监视你的应用程序的所有 API 请求,也是在一个真正的设备上。

而且您不需要像使用 Charles 那样管理证书!

FLEX 是监控 iOS 应用程序网络流量的一个很好的工具。

FLEX iOS Screenshot 1

点击上面屏幕截图中列出的任何请求,我将被重定向到另一个屏幕,在那里我可以看到关于该请求的更多细节。 FLEX iOS Screenshot 2

然而,我有一个用例,其中我工作的应用程序将重定向用户到 Safari。我也想在 Safari 中监控网络流量,但是 FLEX 只能监控你的 iOS 应用程序的流量,而不能监控其他任何应用程序的流量(在写这个答案的时候)。

然后我切换到 代理人,从 iOS 模拟器监视网络流量。

  • 它有一套关于如何与 IOS 模拟器Android 模拟器一起设置它的清晰说明。
  • 它有一个简单的,直观的用户界面,这使得它很容易工作。

enter image description here

Xcode 13开始,您可以使用 Xcode Instruments-> Network Instruments 来监视所有网络流量及其所有详细信息。你需要一个在 macOS 12 + 上运行 iOS 15 + 的物理设备

更多细节可以在 WWDC 2021视频 网络流量分析中找到。

你可以尝试使用 https://github.com/BugBlock/BugBlock-iOS这是我创建的一个小工具,所以你需要的一切是:

import BugBlock

那么

var config = BBConfiguration()
config.consoleLoggingEnabled = false
config.serverLoggingEnabled = true
config.crashReportingEnabled = true
BBLog.start(appId: "SDK key", configuration: config)

并安装网络拦截器

let conf = URLSessionConfiguration.default
BBLog.networkLogging(with: conf)
let session = URLSession(configuration: conf)

然后在请求中使用 session。 希望这有助于你捕捉原木。