使用测量协议向 GA 发送数据时如何获取客户端 ID?

How to get the client id while sending data to GA using Measurement protocol?

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

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

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

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

一种方法是从后端读取 _ga cookie 并从 it.But 解析客户端 ID 我读到它不是 recommended.Because google 可以更改格式 anytime.Somewhere 我读到那个用法:

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

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

2. client id 到底是什么?是单独的唯一id还是unique_id.timestamp的组合。我应该从后端发送什么给 GA?

如果您查看使用推荐 Google 分析 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 的有效期为两年,因此它们可能不会更改。想想看,如果 Google 确实改变了它们,数百万网站的数据会突然出错,所以他们没有充分的理由这样做。

FWIW,在服务器端跟踪用户的最佳方法是使用 User ID 功能,但如果您的用户未通过身份验证,则使用现有的客户端 ID 完全没问题。

更新:

回答你的第二个问题,时间戳是客户端ID的一部分,不要去掉它。时间戳用于帮助制作 ID "more unique".