目录

    1. 字段含义

    1.1 u, 用户ID

    if cookie.has(gr_user_id){
        //使用 cookie 中的 gr_user_id
    }
    else {
        //按照 "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 格式,随机生成一个 gr_user_id
    }
    

    1.2 s,会话ID

    if cookie.has(gr_session_id_){
        //使用 cookie 中的 gr_session_id_
        //gr_session_id_,的有效期为 100 分钟
    }
    else {
        //按照 "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 格式,随机生成一个 gr_session_id_
    }
    

    1.3 t,事件类型

    • imp,显示
    • vst,访问
    • clck,点击
    • chng,变更
    • sbmt,提交

    1.4 tm,当前时间

    +Date.now()
    

    数据发出时,浏览器当前时间。

    1.5 ptm,页面加载时间

    +Date.now()
    

    当前页面加载时,浏览器当前时间。跳转或刷新时,刷新。

    1.6 d,当前域名

    window.location.host
    

    1.7 p,当前相对路径

    去掉域名和参数部分的 URI,不包含 ? 的内容

    1.8 rf, 访问来源

    document.referrer
    

    1.9 sh,屏幕高度

    window.screen.height
    

    1.10 sw,屏幕宽度

    window.screen.width
    

    1.11 l,浏览器语言

    zh-cn
    

    1.12 e,触发的事件

    • e.x ,xpath
    • e.h,href
    • e.v,元素文本内容

    2. 原理简介

    原始的 http://dn-growing.qbox.me/vds-gate.js ,采集的数据并不可读。这是因为在发送采集数据之前,vds-gate.js 对数据进行了编码。阅读代码之前,必须先去掉编码处理。

    MutationObserver:Mutation Observer(变动观察器)是监视DOM变动的接口。当DOM对象树发生任何变动时,Mutation Observer会得到通知。

    事件主要分为两类:

    • DOM变更:GrowingIO 采集 JS 中引入了 Google 实现的 MutationObserver 封装。提供对 DOM 变动时,数据的采集。
    • 行为触发:主要是页面的 visit、impression、click、submit等。

    首次访问时,API 返回应用和用户设备相关的信息,产生 visit 和 页面加载时 DOM 变化的 Event 事件流数据。会有两次数据采集:

    • 第一次,采集设备相关的信息。客户端、屏幕大小、语言等。
    • 第二次,采集页面加载时,DOM 变化的事件流。

    在不刷新页面的前提下,当前页面每次 DOM 发生变化,每次点击等行为,都会有数据的提交。

    点击等行为、数据采集的格式

    [
      {
        "u": "7ddbc39e-8861-482d-bba6-b9e00f4607e7", 
        "s": "da237b25-6a7f-4e37-beba-5d1e7255ff88",
        "t": "clck",
        "tm": 1502335934576,
        "ptm": 1502335904058,
        "d": "domain.com",
        "p": "/overview",
        "e": [
          {
            "v": "2016",
            "x": "/div#wrapper/div#page-wrapper.page-wrapper/div.content"
          }
        ]
      }
    ]
    

    3参考