我想像Firebug一样监视应用程序对我的服务器的调用。 在iOS Simulator或xCode中,我找不到方法来查看这一点。
如果不使用嗅探所有流量的方式,有没有其他方法可以实现? 如果没有,你会推荐哪个工具?
我想像Firebug一样监视应用程序对我的服务器的调用。 在iOS Simulator或xCode中,我找不到方法来查看这一点。
如果不使用嗅探所有流量的方式,有没有其他方法可以实现? 如果没有,你会推荐哪个工具?
就我个人而言,我使用Charles来做那种事情。
启用后,它会监控每个网络请求,并显示扩展的请求详细信息,包括支持SSL和各种请求/响应格式,如JSON等...
您还可以将其配置为仅嗅探特定服务器的请求,而不是整个流量。
这是商业软件,但有试用版,并且在我看来它绝对是一个很棒的工具。
rvictl
是最好的。此博客文章有一个不错的介绍。基本上,您需要执行以下操作:rvictl -s <iphone-uid-from-xcode-organizer>
然后您可以使用Wireshark(或您喜欢的工具)来嗅探它创建的接口,完成后使用以下命令关闭接口:
rvictl -x <iphone-uid-from-xcode-organizer>
rvictl
创建了一个虚拟接口,它只显示您插入 USB 端口的 iOS 设备的流量。Xcode提供CFNetwork诊断日志记录。苹果文档
要启用它,请将CFNETWORK_DIAGNOSTICS = 3
添加到环境变量部分:
这将显示应用程序的请求及其标头和正文。请注意,必须将OS_ACTIVITY_MODE
设置为enable
,如所示。否则,控制台上将不会显示任何输出。
OS_ACTIVITY_MODE
。文档链接为:https://developer.apple.com/documentation/network/debugging_https_problems_with_cfnetwork_diagnostic_logging。同时需要使用 Mac 上的独立 Console 应用程序,而不是查找 Xcode 的 Debug 控制台中的消息。根据文档:“确保在主 Console 窗口左侧的源列表中选择您的 iOS 设备(如果源列表不可见,请选择“显示源”)。从那里,您可以添加筛选器,例如您的进程、cfnetwork、HTTPProtocol: request
等(右键单击行或使用搜索框)。” - qix从 Xcode 13
开始,您可以通过 Xcode Instruments -> Network 工具监控网络流量并查看其所有详细信息。但需要在运行 macOS 12+ 的物理设备上运行 iOS 15+。
更多详情请参见 WWDC 2021 视频中的 分析网络流量。
要监控 https 请求,基本上需要遵循两个广泛的步骤:
如果您只想要一个逐步指南,请跳到结尾处的 TLDR 部分。
你可以使用监听系统所有流量的工具,但根据我的经验,你最终会得到太多日志,而不知道如何导航和筛选。
一个更好(也更明显)的方法是只拦截和监控来自iOS模拟器的流量。
你可以通过编辑Xcode项目的模式来实现这一点。
并定义两个变量http_proxy
和https_proxy
将这些设置适当地配置以将所有流量发送到您的代理。大多数情况下,它们总是提到其代理正在运行的IP和端口。
如果您的应用程序不使用加密(可能会使用),那么这就是您需要做的全部,此时您还需要处理加密。
在iOS模拟器中下载代理工具的自签名根证书。大多数代理工具提供一个http
端点,一旦配置了代理,就可以轻松将其添加到模拟器中。
例如:chls.pro/ssl
或proxy.man/ssl
或requestly.io/ssl
在iOS上,此证书旨在创建一个自定义配置文件,将代理的证书添加到模拟器的证书链中。
下载配置文件后,转到设置>通用>设备管理
以安装配置文件。
在这里,您将看到已下载配置文件的详细信息以及安装选项。
完成这一步骤后,您需要启用新添加证书的信任。
为此,请前往设置 > 关于 > 证书信任设置
并启用下载证书的信任。
现在,您应该能够监视您的HTTP和HTTPS流量,而iOS不会抱怨有任何恶意活动发生。
免责声明和TLDR:我积极维护Requestly桌面应用程序,这里是一个简短的逐步指南,以通过Requestly设置iOS模拟器监视——https://docs.requestly.io/guides/debugging-https-traffic-in-ios-simulator
看起来这可能是最近添加的功能。在模拟器上按下 command
+ control
+ z
将弹出一个调试菜单。从菜单中,点击 Inspect
。Inspect 将呈现选项卡。点击网络选项卡,这将显示所有正在进行的网络请求。
sudo chmod 644 /dev/bpf*