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

时间:2011-12-12 10:51:38

标签: iphone ios http google-analytics

我正在尝试监控iPhone应用程序上的Google Analytics请求,由于某种原因,我没有看到任何GA请求。但是,我可以在Google Analytics分析界面上查看并唯一标识流量。 我尝试过使用几种技术,包括使用Fiddler / Charles作为代理并重叠计算机ip。虽然我可以使用此技术查看许多http请求,但我没有看到任何与Google Analytics相关的请求。

可以采取哪些措施来捕获这些请求?

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

5 个答案:

答案 0 :(得分:2)

问题在于,Google Analytics SDK制作的跟踪调用不使用iOS HTTP代理。

如果GA跟踪调用不使用iOS代理,他们显然不会被发送给Charles(或Fiddler或其他任何人),它无法跟踪任何内容。监控这些来电的唯一方法是在您的计算机上以share your ethernet internet connection为您的iOS设备进行无线操作,并使用ngrepWireShark等工具监控通过无线接口传输的流量(通常在Mac上使用en1)。这是一个示例ngrep命令:

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

(您可以通过Mac上的homebrew轻松安装ngrep)

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

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

以下是我博客上的帖子,其中包含更多详情:Monitoring Google Analytics for iOS

答案 1 :(得分:1)

Google Analytics通过HTTPS请求 - > SSL加密。事实上,您应该使用Charles查看他们的请求。只是,您将无法看到这些请求的内容。

立即否定你的笔记;您当然也可以使用Charles查看来自设备本身的HTTP / s请求。

请参阅此blog entry for more on Charles' configuration

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

编辑:我错了。 Google Analytics不会使用HTTPS进行跟踪,而是使用普通HTTP(TCP端口80)。我还没有找到使用Charles时跟踪请求不可见的原因。但是在使用Wireshark时它们是可见的。

- >使用Wireshark跟踪Google Analytics活动。

为了实现这一目标,我将通过我的iOS设备与我的Mac共享互联网连接,如下所示:

系统偏好设置 - >分享 - >互联网共享 - >分享您的连接:以太网,使用以下方式连接到计算机:Wifi

连接后,我确保尽可能减少Mac本身的网络流量,以防止出现嘈杂的跟踪。

剩下的就是Wireshark的魔法并且有点难以描述(此时无法做到)。

答案 2 :(得分:1)

使用最新版本的Charles,您可以看到GA标签,然后使用Jordan Brough上面的方法更容易一些。步骤进行:

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

请注意,GA SDK批量处理请求(尽管有时它看起来也会产生单个请求),因此如果您认为没有看到您的标记,请确保滚动批处理请求。如果您正在寻找屏幕视图,则参数为 cd GA tags in CharlesProxy

答案 3 :(得分:-1)

我按照你的建议设置机器,一切正常。 Wireshark在win7上使用adhoc网络登录ipad。 如果我在ipad上使用safari我可以获得请求(过滤器http.host包含“google”)到谷歌分析,__ utm.gif应该是。但是在应用程序中,我找不到任何分析请求。所以我不确定在wireshark中搜索什么。过滤器上的“http.host包含”google“”好吗?或者我必须定义一些不同的过滤器?也许SDK没有使用与HTML中相同的__utm.gif请求?

答案 4 :(得分:-2)

看起来iOS SDK for Analytics使用的协议与HTTP / HTTPS不同,因此它不会出现在Charles中。