网站流量日志埋点收集—前端收集数据脚本|学习笔记

简介: 快速学习网站流量日志埋点收集—前端收集数据脚本

开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第一阶段)网站流量日志埋点收集—前端收集数据脚本】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/693/detail/12176


网站流量日志埋点收集—前端收集数据脚本


内容简介

一、前端数据收集脚本

二、小结

我们知道,当 js 代码被埋点代码引入页面后就需要开始收集数据,之后还需要把数据拼接成图片的形式再往后指定端服务器发送。


一、前端数据收集脚本

首先我们可以看出它整个一段代码是我们上节课所学的 js 匿名函数自调用,发现当它被引入页面后,它也会自己调用自己并且只调用一次,保证这一段代码一定能够执行并且指执行一次。

代码为:

(function () {

var params = { };

//Document对象数据

if (doqcument) {

params. domain = document. domain  | | ’ ‘;

params. url = document. URL  | | ’ ‘;

params. title = document. title | | ’ ‘; 。

params. referrer = document. referrer | | ’ ‘;

}

//Window对象数据

if (window && window. screen) {

params. sh = window. screen. height | | 0;

params.sw = window. screen. width | | 0;

params. cd = window. screen. colorDepth | | 0;

}

//navigator对象数据

if (navigator) {

params. lang = navigator. Language  | | ‘ ‘;

}

//解析_ maq配置.

if( mag) {

for(var i in mag) {

switch( maq[i] [0]) {

   case’_setAccount' :中

params. account =_ maq[i][1];

break;

default:

break;

}

//拼接参数串

var. args =’ ’;

for(var i in params) {

){

if(args !=’ ‘) {

args += '&';

}

args += i + '=' + encodeURIComponent (params[i] );

}

//通过Image对象请求后端脚本

var img = new Image(1, 1);

img. src ='http://xxx.xxxx.xxxxx/log.gif?+args;

})();

代码分析:

首先当它调用自己执行时创建了一个对象叫做 params,然后去解析一些相关属性,我们知道在我们页面中有常见的内置对象如 document,window 和 navigator 等

首先是 document:如果 document 存在,就需要把 document 的 domain 属性复制给对象 params 的 domain,这其中有一个语法:| | ‘ ‘,叫做 and 或者与,也就是说如果属性 document. domain 存在,就把整个属性复制给对象,如果不存在就复制给空,相当于这里做了一个判断的逻辑。在这里我们首先通过内置的 document 文档对象收集到页面的 domain 属性,url 属性,title 属性和 referrer 属性,把这四个属性作为我们对象的属性保存在 params对象中。

其次是 window:window 也是页面内置对象,通过它我们可以获取浏览器的高,宽和颜色的深度,也做了判断,如果没有就默认为0。

最后是 navigator:用来获取浏览器的版本语言。

通过以上我们发现我们 js 通过浏览器页面内置的三个对象收集到八个属性信息,分别为 domain,url,title,referrer,浏览器的高,宽和颜色的深度,浏览器的版本语言。

接下来分析解析的数组:

我们首先回到之前的页面埋点代码,params. lang = navigator. Language  | | ‘ ‘;

}

上面这一段是一段可选择的逻辑,

image.png

如图在埋点代码的上方出现了一段数组,这个数组是一段二维或者多维的数组,数组是一个可选项,因为有它没它没有任何的意义,它重点是给我们后面匿名函数的代码。数组的本质是保证一些全局的配置,如果有业务需要就使用它,但是如果使用了在进行数据收集时需要解析出来,做一个匹配,重点它是一个多维数组。

接下来举个例子了解多维数组(数组下标从0开始):

先创建数组 Val a=[allen,18,Beijing]

要想获取18,就需要 a[1]=18

但是这个数组如果是多维数组,这时候就需要注意

比如:

val b=[[name,allen],[age,18],

[city,Beijing,shanghai,Hangzhou]

这时候获取1:b[1],1代表它里面的第二个元素,但是它里面的每个元素还是数组,所以获取它还应该 b[1][1]=18。

最后一步是我们去便利这个对象数组然后把它的每个属性拼接成我们的 url 格式。在我们的页面中,url参数不是随便写的,是k1=v1然后&拼接。

var. args =’ ’;

for(var i in params) {

){

if(args !=’ ‘) {

args += '&';

}

args += i + '=' + encodeURIComponent (params[i] );

}

这里通过创建 arges 的字符串,然后把里面的每个属性拿出来拼接上&,然后进行一个编码,这样就把我们收集的数据拼接成了一个参数的字符串。

接下来就是

var img = new Image(1, 1);

img. src ='http://xxx.xxxx.xxxxx/log.gif?+args;

})();

在页面上 new 一个 image 标签(1*1),它的src属性指向了我们后端的服务器http://xxx.xxxx.xxxxx资源叫log.gif?,args 就是刚刚拼接的字符串。

以上就完成了我们前端收集数据的一个逻辑。


二、小结

我们主要是通过内置的对象去解析页面相关的属性信息,并且把这些参数拼接成 url 格式发送至后台。

前端收集数据 js

依然是一个匿名函数自调用的格式保证被引入到页面上之后自己可以调用自己执行且执行一次

1.通过页面内置的对象获取一些属性信息

2.通过解析全局数据获取一些信息

3.把收集的属性信息按照 url 格式进行拼接并且进行 url 编码

4.页面创建一个图片 标签把标签的 src 属性指向后端收集数据的服务器

5.把收集数据拼接的参数放置请求图片的 url 后面传递给后端

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
8月前
|
SQL 人工智能 监控
SLS Copilot 实践:基于 SLS 灵活构建 LLM 应用的数据基础设施
本文将分享我们在构建 SLS SQL Copilot 过程中的工程实践,展示如何基于阿里云 SLS 打造一套完整的 LLM 应用数据基础设施。
2662 102
|
8月前
|
数据采集 运维 监控
不重启、不重写、不停机:SLS 软删除如何实现真正的“无感数据急救”?
SLS 全新推出的「软删除」功能,以接近索引查询的性能,解决了数据应急删除与脏数据治理的痛点。2 分钟掌握这一数据管理神器。
791 48
|
9月前
|
存储 缓存 Apache
StarRocks+Paimon 落地阿里日志采集:万亿级实时数据秒级查询
A+流量分析平台是阿里集团统一的全域流量数据分析平台,致力于通过埋点、采集、计算构建流量数据闭环,助力业务提升流量转化。面对万亿级日志数据带来的写入与查询挑战,平台采用Flink+Paimon+StarRocks技术方案,实现高吞吐写入与秒级查询,优化存储成本与扩展性,提升日志分析效率。
1293 1
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
1545 14
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
962 0
|
SpringCloudAlibaba JavaScript 前端开发
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
分布式组件、nacos注册配置中心、openfegin远程调用、网关gateway、ES6脚本语言规范、vue、elementUI
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。
761 6
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
1262 1
|
前端开发 算法 测试技术
前端大模型应用笔记(五):大模型基础能力大比拼-计数篇-通义千文 vs 文心一言 vs 智谱 vs 讯飞vsGPT
本文对比测试了通义千文、文心一言、智谱和讯飞等多个国产大模型在处理基础计数问题上的表现,特别是通过链式推理(COT)提示的效果。结果显示,GPTo1-mini、文心一言3.5和讯飞4.0Ultra在首轮测试中表现优秀,而其他模型在COT提示后也能显著提升正确率,唯有讯飞4.0-Lite表现不佳。测试强调了COT在提升模型逻辑推理能力中的重要性,并指出免费版本中智谱GLM较为可靠。
1025 0
前端大模型应用笔记(五):大模型基础能力大比拼-计数篇-通义千文 vs 文心一言 vs 智谱 vs 讯飞vsGPT

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    1121
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    494
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    384
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    371
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    490
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    663
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1102
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    260
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    948
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    444