【问题标题】:Monitor Google Analytics requests on an iPhone Application监控 iPhone 应用程序上的 Google Analytics 请求
【发布时间】:2011-12-12 10:51:37
【问题描述】:

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

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

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

【问题讨论】:

  • 我遇到了同样的问题。我正在尝试监控 iphone 应用程序(本机应用程序)的 GA 流量,但看不到谷歌分析流量。我也在使用 Charles 代理,它绝对正确配置为代理来自被测设备的 SSL 流量(我可以看到 facebook、twitter 和其他本机应用程序的登录流量)。但是,我看不到我正在尝试监控的应用程序的 GA 流量。有什么见解吗?

标签: iphone ios http google-analytics


【解决方案1】:

问题在于 Google Analytics SDK 进行的跟踪调用没有使用 iOS HTTP 代理。

如果 GA 跟踪调用不使用 iOS 代理,它们显然不会被发送给 Charles(或 Fiddler 或其他),并且它无法跟踪任何内容。监控这些呼叫的唯一方法是在您的计算机上对您的 iOS 设备执行类似share your ethernet internet connection 的操作,并使用类似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

【讨论】:

    【解决方案2】:

    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 活动。

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

    系统偏好 -> 共享 -> 互联网共享 -> 共享您的连接:以太网,使用:Wifi 的计算机

    连接后,我会确保将 Mac 本身的网络流量降至最低,以防止嘈杂的跟踪。

    剩下的就是 Wireshark 的魔法,有点难以形容(暂时无法做到)。

    【讨论】:

    • 我可能在这里遗漏了一些东西,但是在使用 fiddler 或 Charles 时,我没有在我的计算机上看到 Google Analytics 请求(将我的计算机变成代理时)。此外,我找不到 Charles 的 iOS 版本或类似的任何东西。
    • Charles 没有安装在设备上,而是安装在您的计算机上。如上所述,您需要设置您的 iOS 设备以使用您的计算机作为代理。
    • 正如我提到的(当我写“当我的计算机变成代理时”时),我已经将我的计算机配置为代理,当我使用 Fiddler 或 Charles 时,我确实看到了一般的 http 请求。但是,我特别看不到来自 iOS 应用程序的 Google Analytics 请求——不是 Web 应用程序,而是原生 iOS 应用程序。 (iOS 应用程序使用 Google Analytics SDK)。
    • @Till - 你如何使用 Wireshark? Wireshark 可以充当 iOS 设备的代理吗?你在使用 Charles 和 Wireshark 吗?您是否将您的互联网连接从您的计算机共享到您的 iOS 设备?
    • @JordanBrough 我正在将我的网络连接从我的 mac 共享到我的 iOS 设备,并正在使用wireshark 嗅探我的 mac 的流量。这样我就可以跟踪 google-analytics 流量。
    【解决方案3】:

    使用最新版本的 Charles,您可以看到 GA 标签,这比使用上述 Jordan Brough 的方法要容易一些。步骤:

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

    请注意,GA SDK 会批量处理请求(尽管有时看起来它有时也会发出单个请求),因此如果您认为看不到标签,请确保滚动浏览批处理请求。如果您正在寻找屏幕视图,则参数是 cdGA tags in CharlesProxy

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        用于分析的 iOS SDK 使用的协议似乎与 HTTP / HTTPS 不同,因此它没有显示在 Charles 中。

        【讨论】:

        • 你怎么知道它使用了不同的协议?只是猜测,因为它没有出现在查尔斯?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-12
        • 2023-03-03
        • 1970-01-01
        相关资源
        最近更新 更多