如何在iPhone上监控网络流量?

65

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

13个回答

52

就像其他回答所建议的那样,中间人代理是一个很好的解决方案,如果你只想查看HTTP/HTTPS流量。

对于数据包嗅探,最好的解决方案(虽然它仅适用于实际的iOS设备,而不是模拟器)是使用rvictl这篇博客文章有一个不错的介绍。基本上你需要执行以下操作:

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

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

Then you sniff the interface it creates with with Wireshark (or your favorite tool), and when you're done shut down the interface with:


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

如果你想要对模拟器进行数据包嗅探,这个方法非常实用。使用rvictl可以创建一个虚拟接口,只会显示从插入到USB端口的iOS设备传输的流量,这样就避免了需要穿行整个本地Mac网络的麻烦。

注:此方法仅适用于Mac。


1
这是最佳解决方案。 - jakev
2
同意这是一个很好的解决方案。我还会进一步避免像这样使用Xcode:system_profiler SPUSBDataType | grep -A 10 iPhone | grep Serial :P - Randall Hunt
感谢 system_profiler 的解决方案,它可以在命令行上自动化,而 XCode 的解决方案则不行! - Noah Sussman
这对于 HTTPS 有效吗? - Sibish
@Sibish 它适用于所有网络数据包。但是,如果您想要破解TLS/SSL加密,您需要服务器证书的私钥,捕获整个TLS/SSL会话并强制客户端(或服务器)使用没有PFS的TLS/SSL密钥交换,因为这样Wireshark实际上可以解密TLS/SSL数据包并向您显示发送/接收的原始解密内容。 - Mecki

36

你没有说明你使用的平台是什么,所以我假设你使用的是Mac ;-)

我的方法是使用代理。我使用SquidMan,它是Squid的一个独立实现。

我在Mac上启动SquidMan,然后在iPhone上在常规/Wifi设置中输入代理参数。

然后我可以在Console应用程序中查看HTTP流量,查看squid-access.log。

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


6
对于Windows用户来说,Fiddler是一个优秀的用于嗅探HTTP流量的工具。你需要知道的一件事是,在Fiddler中选择“工具”->“Fiddler选项”->“连接”,并勾选“允许远程计算机连接”。在那里你也会找到它监听的端口号。在iPhone上,进入无线网络属性,然后在HTTP代理部分(手动设置)输入你的计算机IP地址和Fiddler的端口。祝好运。 - Keith Robertson
1
只是补充一下,日志将会在~/Library/logs/squid目录下。 - Max
我正在尝试做这件事,但在wireshark中,我只能看到从iPhone到代理再从代理到互联网的流量。似乎Squid Man使用了iPhone和代理之间的隧道。有没有办法禁用它? - joakimb
1
我是一个使用Squid[man]的新手,我不得不搜索一下才意识到需要将我的iPhone的IP地址放入Squidman的“首选项”中的客户端选项卡中,然后我的iPhone才能再次访问网络。我在这里留下这个信息,以便其他遇到同样问题的人可以参考。 - rachel
如何通过iPhone连接代理?我已经运行了Squid,但无法通过iPhone连接,我需要使用哪个IP地址? - fdrv

24
我使用Charles Web Debugging Proxy,它是收费的,但他们有试用版本。
如果你的iPhone/iPad与你的Mac共享同一个Wifi网络,设置起来非常简单。
  1. 在您的Mac上安装Charles
  2. 获取您的Mac的IP地址 - 使用Mac设置>网络>Wi-Fi>详细信息
  3. 在您的iPhone/iPad上打开Wifi设置,在“HTTP代理”下更改为手动,并输入步骤(2)中的IP地址,然后将端口更改为8888(Charles默认端口)
  4. 打开Charles,在代理设置对话框中确保“启用Mac OS X代理”和“使用HTTP代理”被选中
  5. 现在您应该可以在Charles中看到流量出现
  6. 如果您想查看HTTPS流量,您需要执行额外的两个步骤:下载Charles证书包,然后将.crt文件通过电子邮件发送到您的iPhone/iPad并进行安装。
  7. 在代理设置对话框的SSL选项卡中,添加您想要使用443端口嗅探的特定https顶级域名。

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


谢谢你的推荐。看起来比其他选择要好看得多。此外,您可以直接导航到网页以下载证书到iOS设备,无需电子邮件。(请参阅Charles文档) - Sandy Chapman
我想为设置Android手动代理设置添加一些快速提示:1. 进入设置;2. 长按你连接的WiFi;3. 点击修改网络;4. 向下滚动到显示高级选项;5. 在代理设置下选择手动;6. 根据@jonewash的回答设置IP和端口;7. 保存。(额外帮助:https://attentionshard.wordpress.com/2013/06/13/sniffing-ios-and-android-http-traffic/) - Andrej
提醒一下,Charles 实际上不适用于 Facebook 或 Instagram。它们已经修复了这个问题。您可能需要更细粒度的访问级别……我还在寻找中。 - Munib

18

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


16

对于Mac OS X

  1. 安装Charles代理
  2. 在Charles中转到Proxy > Proxy Settings。它应该显示HTTP代理端口(默认为8888)。

对于Windows

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

通用设置

  1. 进入设置 > Wifi > i 符号 > 在底部找到代理,将其设为手动,然后将服务器设置为您正在使用的计算机的IP地址,端口设置为8888,因为这是这些应用程序的默认端口。

ARP欺骗

最后一部分的一般注意事项,如果您想嗅探所有网络流量,则需要使用ARP欺骗将所有流量从iOS转发到笔记本电脑/台式计算机。 有多个工具可用于ARP欺骗,需要进行所有细节的研究。 这将允许您查看路由器将发送到iOS设备的所有数据,然后您将自动将此数据转发到iOS设备。

请注意,我只建议作为最后的手段使用此方法。


这正是我所需要的。它简单易用,而且很有效。不幸的是,我只能给+1。 - das Keks
我会为这个答案加上一个赞!!谢谢 - pithhelmet

10

1
rvictl似乎不是10.10命令行工具的一部分。 - Joseph
请查看此链接:https://dev59.com/mWEi5IYBdhLWcg3wK5nd - Oleh Kudinov
请记住,UDID值必须为小写! - Yekver

10
在越狱的iPhone/iPod上,捕获流量可以通过"tcpdump"和"pirni"这两个工具很好地完成,它们都可以在Cydia存储库中找到。将捕获的数据传输到另一台机器上并使用类似Wireshark的工具进行分析。然而,考虑到这些工具正在积极开发中,很快iPhone可能会处理所有这些事情。

9

如果不知道您的具体要求,以下是我查看iPhone传输数据包的方法:将Mac连接到以太网,通过共享网络连接Wi-Fi并连接到该无线网络的iPhone。在Mac上运行Wireshark或Packet Peeper。


1
跟进:这是一个简单的指南,使用Wireshark和Mac OS Internet Sharing来监控完整的流量:http://corecocoa.wordpress.com/2011/11/22/network-sniffing-on-the-iphone/ - jaltek
您还可以通过 USB 在 Mac 上连接 iPhone,并将 Mac 的互联网共享到 iPhone。 - kurtanamo

6

3

根据您想要达成的目的,通过代理运行可能不是理想的选择。透明代理可能会正常工作,只要数据包没有被篡改。

我即将反转从 iPhone 传输到 iPad 上的 GPS 数据,以获取最佳结果的基本数据。获取干净的网络转储的最佳方式是使用“tcpdump”和/或如先前建议的“pirni”。

在我们想要获取被连接数据的这种情况下,它需要尽可能地透明。显然,您需要对您的手机进行越狱才能使其工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接