我正在尝试监控iPhone应用程序上的Google Analytics请求,由于某种原因,我没有看到任何GA请求。但是,我可以在Google Analytics分析界面上查看并唯一标识流量。 我尝试过使用几种技术,包括使用Fiddler / Charles作为代理并重叠计算机ip。虽然我可以使用此技术查看许多http请求,但我没有看到任何与Google Analytics相关的请求。
可以采取哪些措施来捕获这些请求?
注意: 据我所知,没有iOS应用程序可以在实际设备上捕获HTTP请求。
答案 0 :(得分:2)
问题在于,Google Analytics SDK制作的跟踪调用不使用iOS HTTP代理。
如果GA跟踪调用不使用iOS代理,他们显然不会被发送给Charles(或Fiddler或其他任何人),它无法跟踪任何内容。监控这些来电的唯一方法是在您的计算机上以share your ethernet internet connection为您的iOS设备进行无线操作,并使用ngrep或WireShark等工具监控通过无线接口传输的流量(通常在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上面的方法更容易一些。步骤进行:
请注意,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中。