4

我尝试通过前端(js)和后端(测量协议)使用analytics.js(通用分析)。

通过前端(js方式)使用时:
我检查是否有一个名为 _ga 的cookie,其值为 GA1.2.1360127879.1438853622 。它通过请求'http://www.google-analytics.com/collect?...'向 GA 发送 cid=1360127879.1438853622 的数据。我知道 1360127879 是唯一 ID,而 1438853622 是时间戳。

通过后端(测量协议)使用时:
我这里有几个问题:

1.如何从浏览器获取客户端ID?

一种方法是从后端读取 _ga cookie 并从中解析客户端 ID。但我读到不推荐这样做。因为谷歌可以随时更改格式。在某处我读到使用:

 ga(function(tracker) {
 var clientId = tracker.get('clientId');
 });

但我不知道如何使用这个在后端获取客户端 ID?我想使用前端正在使用的相同客户端 ID。

2.实际的客户ID是什么?是单独的唯一id还是unique_id.timestamp的组合。我应该从后端向 GA 发送什么?

4

1 回答 1

8

如果您查看使用推荐的 Google Analytics JavaScript Snippet 的网站,您会看到它发送的客户端 ID 如下所示:

324729700.1423421585

存储在_gacookie 中的值如下所示:

GA1.3.324729700.1423421585

注意最后两个部分是相同的,只是GA1.3部分不同。

您需要关心的唯一部分是发送到Measurement Protocol的客户端 ID ,因此如果您可以从服务器访问_gacookie,则应该去掉GAX.X.前缀并发送其余部分。

但我读到不建议这样做。因为谷歌可以随时更改格式。

这不是真的。这些 cookie 的有效期为两年,因此它们可能不会被更改。想想看,如果谷歌真的改变了它们,数百万个网站的数据会突然出错,所以他们没有充分的理由这样做。

FWIW,在服务器端跟踪用户的最佳方法是使用用户 ID功能,但如果您的用户没有经过身份验证,那么使用现有的客户端 ID 就可以了。

更新:

要回答您的第二个问题,时间戳是客户端 ID 的一部分,不要剥离它。时间戳用于帮助使 ID “更独特”。

于 2015-08-06T16:55:18.337 回答