我尝试通过前端 (js) 和后端(测量协议(protocol))使用 analytics.js (Universal Analytics)。
通过前端(js方式)使用时:
我检查是否有一个名为 _ga 的 cookie,其值为 GA1.2.1360127879.1438853622 。它通过请求 'http://www.google-analytics.com/collect?...' 将数据发送到 cid=1360127879.1438853622 的 GA。我知道 1360127879 是唯一 ID,1438853622 是时间戳。
通过后端(测量协议(protocol))使用时:
我在这里有几个问题:
1. 如何从浏览器获取客户端 ID?
一种方法是从后端读取 _ga cookie 并从中解析客户端 ID。但我读到不推荐这样做。因为谷歌可以随时更改格式。我在某处读到该用法:
ga(function(tracker) {
var clientId = tracker.get('clientId');
});
但我不知道如何使用它在后端获取客户端 ID?我想使用前端正在使用的相同客户端 ID。
2. client id 实际上是什么?是单独的 unique id 还是 unique_id.timestamp 的组合。我应该从后端发送什么给 GA?
最佳答案
如果您查看使用推荐的 Google Analytics JavaScript 代码段的网站,您会看到它发送的客户端 ID 如下所示:
324729700.1423421585
存储在 _ga
cookie 中的值如下所示:
GA1.3.324729700.1423421585
注意最后两部分是如何相同的,只有 GA1.3
部分不同。
您唯一需要关心的部分是发送到 Measurement Protocol 的客户端 ID ,所以如果您可以从服务器访问 _ga
cookie,您应该去掉 GAX.X.
前缀,然后只发送其余部分。
But i read that it is not recommended. Because google can change the format anytime.
这不是真的。这些 cookie 的有效期为两年,因此它们可能不会更改。想想看,如果谷歌真的改变了它们,数百万网站的数据就会突然出错,所以他们没有充分的理由这样做。
FWIW,跟踪用户服务器端的最佳方法是使用 User ID功能,但如果您的用户未经过身份验证,则使用现有客户端 ID 完全没问题。
更新:
回答你的第二个问题,时间戳是客户端ID的一部分,不要去掉它。时间戳用于帮助使 ID“更加独特”。
关于javascript - 使用测量协议(protocol)向 GA 发送数据时如何获取客户端 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31854752/