64

我们正在寻找一种类似 Wireshark 的工具,用于在与第 3 方合作之前在 iPhone 上测试第 3 方应用程序。有什么建议么?

4

13 回答 13

50

如果您只想查看 HTTP/HTTPS 流量,中间人代理(如其他答案所建议的)是一个很好的解决方案。

我发现数据包嗅探的最佳解决方案(尽管它仅适用于实际的 iOS 设备,而不适用于模拟器)是使用rvictl. 这篇博文有一篇不错的文章。基本上你这样做:

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

然后,您使用 Wireshark(或您最喜欢的工具)嗅探它创建的界面,完成后使用以下命令关闭界面:

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

这很好,因为如果你想对模拟器进行数据包嗅探,你也必须涉足到本地 Mac 的流量,但rvictl会创建一个虚拟界面,只显示你插入 USB 的 iOS 设备的流量港口。

注意:这仅适用于 Mac。

于 2012-12-28T07:30:18.127 回答
36

您没有指定您使用的平台,所以我假设它是 Mac ;-)

我所做的是使用代理。我使用SquidMan,一个独立的Squid实现

我在 Mac 上启动 SquidMan,然后在 iPhone 上的 General/Wifi Settings 中输入代理参数。

然后我可以在 Console App 中查看 HTTP 流量,查看 squid-access.log

如果我需要更多信息,我会切换到 tcpdump,但我想 WireShark 也应该可以工作。

于 2009-01-12T22:48:28.047 回答
24

我使用Charles Web Debugging Proxy,但他们有试用版。

如果您的 iPhone/iPad 与您的 Mac 共享相同的 Wifi 网络,则设置非常简单。

  1. 在 Mac 上安装 Charles
  2. 获取 Mac 的 IP 地址 - 使用 Mac“网络实用程序”
  3. 在您的 iPhone/iPad 上打开 Wifi 设置并在“HTTP 代理”下更改为手动并输入步骤 (2) 中的 IP,然后输入端口为 8888(Charles 默认端口)
  4. 打开 Charles 并在代理设置对话框下确保勾选“启用 Mac OS X 代理”和“使用 HTTP 代理”
  5. 您现在应该看到出现在 Charles 中的流量
  6. 如果您想查看 HTTPS 流量,您需要执行额外的 2 个步骤,下载 Charles 证书包,然后将 .crt 文件通过电子邮件发送到您的 iPhone/iPad 并安装。
  7. 在 Proxy Settings Dialog SSL 选项卡中,添加您要使用端口 443 嗅探的特定 https 顶级域。

如果您的 Mac 和 iOS 设备不在同一个 Wifi 网络上,您可以使用系统偏好设置中共享下的“Internet 共享”选项将您的 Mac 设置为 Wifi 路由器。然后,您将设备连接到该“Wifi”网络并按照上述步骤操作。

于 2012-07-26T01:34:11.533 回答
17

通过代理运行它并使用Wireshark监控流量。

于 2009-01-12T21:31:11.510 回答
15

对于 Mac OS X

  1. 安装查尔斯代理
  2. 在 Charles 中,转到代理 > 代理设置。它应该显示 HTTP 代理端口(默认为 8888)。

对于 Windows

  1. 安装提琴手2
  2. 工具 -> Fiddler 选项 -> 连接并选中“允许远程计算机连接”

常规设置

  1. 转到设置 > Wifi >i符号 > 在底部的代理 > 设置为手动,然后为服务器放置您正在使用的计算机 IP 地址,端口放置 8888,因为这是每个应用程序的默认值

ARP 欺骗

最后一部分的一般说明,如果您想嗅探所有网络流量,则可以使用ARP 欺骗将所有流量从您的 iOS 转发到笔记本电脑/台式机。ARP 欺骗有多种工具,需要对所有细节进行研究。这使您可以查看每一盎司的流量,因为您的路由器会将用于 iOS 设备的所有数据路由到笔记本电脑/台式机,然后您将这些数据(自动)转发到 iOS 设备。

请注意,我只推荐这作为最后的手段。

于 2013-12-23T08:15:35.087 回答
9

在不确切知道您的要求是什么的情况下,这就是我从 iPhone 上看到 packts 时所做的:在以太网上连接一个 mac,通过机场共享它的网络,然后将 iPhone 连接到那个无线网络。在 Mac 上运行 Wireshark 或 Packet Peeper。

于 2009-02-08T08:47:53.473 回答
9

在越狱的 iPhone/iPod 上,“tcpdump”和“pirni”都可以很好地捕获流量 - 在 cydia 存储库中可用。这些数据的分析是通过将捕获转移到另一台机器并使用类似wireshark的东西来完成的。然而,鉴于这些工具似乎正在积极开发,iPhone 可能很快就会处理这一切。

于 2009-06-28T08:05:53.867 回答
9

我发现的最佳解决方案有效:

通过 USB 连接您的设备

并输入以下命令:

  1. rvictl -s UDID - (设备 20 个字符的 id,您可以在 iTunes 中找到 4t 或在 Xcode 中找到管理器)

  2. sudo launchctl list com.apple.rpmuxd

  3. sudo tcpdump -n -t -i rvi0 -q tcp
    或者只是 sudo tcpdump -i rvi0 -n

如果 rvictl 不起作用,请安装 Xcode

更多信息: 远程虚拟接口

http://useyourloaf.com/blog/2012/02/07/remote-packet-capture-for-ios-devices.html

于 2013-01-11T23:34:51.137 回答
6

这是另一种方式http://www.tuaw.com/2011/02/21/how-to-inspect-ioss-http-traffic-without-spending-a-dime/

我没有看到 Roger Nolan 的回复,上面的链接是使用不同工具的相同工作流程。

于 2011-04-14T12:43:57.263 回答
3

取决于你想要做什么,通过代理运行它并不理想。只要数据包不被篡改,透明代理就可以正常工作。

我即将在 iOS 4.3.x 上反转从 iPhone 传输到 iPad 的 GPS 数据以获取原始数据 获得干净网络转储的最佳方法是使用“tcpdump”和/或“pirni”正如已经建议的那样。

在这种特殊情况下,我们希望 Tethered 数据需要尽可能透明。显然,您需要将手机越狱才能使其正常工作。

于 2011-04-11T16:57:49.260 回答
2

在 Mac OS X 上尝试Debookee,它会透明地拦截 iPhone 的流量,而无需代理,这要感谢 MITM,如前所述。然后,您将实时看到您的设备使用的不同协议。

免责声明:我是付费应用程序 Debookee 开发团队的一员。试用版将在有限的时间内向您展示所有功能。

于 2013-05-15T19:48:40.397 回答
1

一个通用的解决方案是使用配置为透明代理的 linux 机器(可能在虚拟机中)来拦截流量,然后使用 wireshark 或 tcpdump 或任何你喜欢的东西对其进行分析。也许MacOS也可以做到这一点,我还没有尝试过。

或者,如果您可以在模拟器中运行应用程序,您可能可以监控自己机器上的流量。

于 2009-01-12T21:36:21.997 回答
0

Com'on,没有提到提琴手?爱在哪里 :)

Fiddler 是一个非常流行的 HTTP 调试器,面向开发人员而不是网络管理员(即 Wireshark)。

为 iOS 设置它是相当简单的过程。它也可以解密 HTTPS 流量!

在 QA 部门开始使用 Fiddler 解决问题后,我们的移动团队终于松了一口气。在 fiddler 出现之前,人们会到处摆弄以知道该怪谁,移动团队或 API 团队,但现在不是了。

于 2013-10-18T12:22:37.193 回答