在iPhone应用程序上监控Google Analytics请求

我试图监视iPhone应用程序上的Google Analytics请求,出于某种原因,我没有看到任何GA请求。 但是,我可以看到并唯一标识谷歌分析界面上的stream量。 我曾尝试使用几个技术,包括使用提琴手/查尔斯作为代理,并重叠计算机IP。 虽然我可以看到许多使用这种技术的http请求,但我没有看到任何与Google Analytics相关的请求。

可以做些什么来捕捉这些请求?

注:据我所知,没有iOS应用程序来捕获实际设备上的HTTP请求。

问题在于Google AnalyticsSDK所做的跟踪调用未使用iOS HTTP代理。

如果GA跟踪调用不使用iOS代理,那么他们显然不会被发送给Charles(或Fiddler或其他),也不能跟踪任何内容。 监控这些电话的唯一方法就是像在计算机上共享您的以太网连接到您的iOS设备,并使用ngrep或WireShark等工具来监控通过无线接口(通常是Mac上的en1)的stream量。 下面是一个示例ngrep命令:

sudo ngrep -d en1 port 80 | grep --color -E -C 3 '(google|utm.gif)' 

(你可以在Mac上通过自制软件轻松安装ngrep)

或者使用Wireshark,您可以开始监控您的无线接口(Mac上的en1),并在“filter”框中键入“http”以过滤掉httpstream量。

如果你有应用程序的源代码,那么避免“互联网连接共享”的另一个select是通过Mac上的Xcode中的iOS模拟器运行应用程序,以便它使用Mac的互联网连接。 GA代码实际上仍然拒绝使用OSXconfiguration的代理(即,您仍然无法使用Charles),但是您可以在Mac上使用ngrep或Wireshark(如上所述),而无需设置Internet连接共享。

以下是我的博客上的一篇文章,详细介绍了: 监控iOS版Google Analytics(分析)

Google Analytics(分析)通过HTTPS – > SSL进行encryption请求。 你实际上应该用Charles来看待他们的请求。 只是,你将无法看到这些请求的内容。

立即否定你的笔记; 查尔斯当然也可以看到设备本身的HTTP / s请求。

查看这个博客条目了解更多关于Charles的configuration 。

确保您了解HTTP和HTTPS之间的根本区别。

编辑:我都错了。 Google Analytics(分析)不使用HTTPS进行跟踪,但使用纯HTTP(TCP端口80)。 我还没有find为什么使用查尔斯跟踪请求不可见。 但是在使用Wireshark时它们是可见的。

– >使用Wireshark来跟踪Google Analytics活动。

为了实现这一目标,我使用iOS设备从我的Mac共享Internet连接,如下所示:

系统偏好设置 – >共享 – >互联网共享 – >分享您的连接从:以太网,到电脑使用:无线

一旦连接,我确保尽量减lessMac本身的networkingstream量,以防止嘈杂的追踪。

其余的是Wireshark的魔法,有点难以描述头(此时不能这样做)。

使用Charles的最新版本,您可以看到GA标签,而使用Jordan Brough的方法更容易一些。 脚步:

  • 下载最新版本的Charles。
  • 启动Charles并将您的iOS设备设置为在设置 – > Wi-Fi [networkName]中使用Charles作为代理。 点击我的图标,然后向下滚动到HTTP代理部分。 点击手动 ,添加服务器IP和端口8888。
  • 启动移动Safari并导航到http://www.charlesproxy.com/getssl 。 安装Charles Root Cert。
  • 在Charles中,在代理 – > SSL代理设置中添加GA服务器。 GA服务器是ssl.google-analytics.com
  • 退出查尔斯并重新启动。

请注意,GA SDK批处理请求(尽pipe有时它看起来像有时单一的请求),所以如果你觉得你没有看到你的标签确保你滚动批量的请求。 如果您正在查看屏幕视图,参数是cd 。 GA代码在CharlesProxy

我按照你的build议设置了机器,这一切都很好。 Wireshark在win7上与ipadlogin的adhocnetworking。如果我在ipad上使用Safari浏览器,请确保将请求(带有filterhttp.host包含“google”)转换为google analytics,__utm.gif。 然而,在应用程序中,我找不到任何分析请求。 所以我不确定在wireshark中search什么。 “http.host上的filter包含”谷歌“”好吗? 还是我必须定义一些不同的filter? 也许SDK不使用与HTML中相同的__utm.gif请求?

看起来iOS的iOS SDK使用的协议不同于HTTP / HTTPS,因此它不在Charles中显示。