_ga cookie中的值是什么?

时间:2013-04-19 10:22:11

标签: cookies google-analytics analytics web-analytics analytics.js

我正在使用universal analytics。通用分析可创建第一方Cookie _ga

 _ga=1.2.286403989.1366364567;

286403989是clientId

1366364567是时间戳

_ga cookie中的12是什么?

3 个答案:

答案 0 :(得分:93)

_ga=1.2.286403989.1366364567;

第一场

这是版本号。如果cookie格式将来发生变化。似乎目前固定在1。上面的一个是旧格式。较新的cookie将此值设置为“GA1”

第二场

如果在不同的路径或域中设置了多个cookie,则此字段用于确定正确的cookie。

默认情况下,Cookie在路径/和document.location.hostname上的域中设置(删除了www。前缀)。

您可以在sub.example.com上设置_ga Cookie,在example.com上设置另一个Cookie。因为浏览器上的cookie API的工作方式无法分辨出你使用的cookie是什么。

所以第二个数字是域中的组件数(点分隔)。

  • 对于sub.example.com,数字为3
  • for example.com,数字为2

路径默认为/,但您也可以通过将cookiePath选项传递给ga.create方法来更改它。如果你通过它,这个字段变成2个数字划分。第二个数字是路径中的数字斜杠。

使用这些数字,analytics.js脚本可以正确识别在设置多个cookie时使用的cookie。

例如: 想象一下,您有一个位于sub1.sub2.example.com/folder1的网站,以防您只想在您的网站上存储Cookie,而不是让其他子网域或文件夹可以使用以下配置:

ga('create', 'UA-XXXX-Y', {
  'cookiePath': '/folder1/',
  'cookieDomain': 'sub1.sub2.example.com'
});

在这种情况下,cookie会看起来像这样;

_ga=1.4-2.XXXXXXXX.YYYYYYY

第3场

这是随机生成的用户ID。用于识别不同的用户。

第四场

这是第一次为该用户设置cookie时的时间戳。

new Date(1366364567*1000)
> Fri Apr 19 2013 06:42:47 GMT-0300 (BRT)

这也用于在userId冲突的情况下唯一标识用户。

值得一提的是,Cookie不是API。将来它可能会彻底改变。 Google不建议直接读取/写入_ga cookie。您应该通过其中一个跟踪库(如analytics.js)与Google Analytics进行互动。除了好奇心之外,这些信息并没有太多用处。

如果您正在直接读/写cookie,那么您做错了。

答案 1 :(得分:5)

我认为这会有所帮助。

/**
 * Get Google Analytics UID
 * @return int
 */
public function getGAUID() {
    $uid = 0;
    if ($_COOKIE['__utma'])
        list($hash_domain, $uid, $first_visit, $prew_visit, $time_start, $num_visits) = sscanf($_COOKIE['__utma'], '%d.%d.%d.%d.%d.%d');
    elseif ($_COOKIE['_ga'])
        list($c_format, $c_domain, $uid, $first_visit) = sscanf($_COOKIE['_ga'], 'GA%d.%d.%d.%d');

    return $uid;
}

答案 2 :(得分:0)

使用ES6语法在NodeJS中编写。可以帮助别人吗?

// Example: GA1.2.494614159.1574329064
const gaCookieGeneration = ({ version = 1, domain, rootpath = '/' }) => {
  const subdomains = (domain.match(/./) || []).length + 1;
  const rootpathDirs = (rootpath.match(/\//) || []).length;
  const cookiePath = rootpathDirs > 1 ? `-${rootpathDirs}` : '';
  const uniqueId = Math.random().toString().substr(2, 9);
  const timeStamp = (+new Date()).toString().substr(0, 10);
  return `GA${version}.${subdomains}${cookiePath}.${uniqueId}.${timeStamp}`;
};
const gaCookie = gaCookieGeneration({
  domain: '.example.com',
});