1. 字段含义
1.1 u, 用户ID
1
2
3
4
5
6
|
if cookie.has(gr_user_id){
//使用 cookie 中的 gr_user_id 有效期十年
}
else {
//按照 "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 格式,随机生成一个 gr_user_id
}
|
1.2 s,会话ID
1
2
3
4
5
6
7
|
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,当前时间
数据发出时,浏览器当前时间。
1.5 ptm,页面加载时间
当前页面加载时,浏览器当前时间。跳转或刷新时,刷新。
1.6 d,当前域名
1.7 p,当前相对路径
去掉域名和参数部分的 URI,不包含 ? 的内容
1.8 rf, 访问来源
1.9 sh,屏幕高度
1.10 sw,屏幕宽度
1.11 l,浏览器语言
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 发生变化,每次点击等行为,都会有数据的提交。点击等行为、数据采集的格式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
[
{
"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. 参考
- https://developer.mozilla.org/zh-CN/docs/Web/API/MutationObserver
- https://github.com/google/eme_logger/blob/master/mutation-summary.js