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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 快速学习网站流量日志埋点收集—前端收集数据脚本

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

课程地址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 后面传递给后端

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
5天前
|
前端开发 JavaScript API
惊呆了!这些前端技术竟然能让你的网站实现无缝滚动效果!
【10月更文挑战第30天】本文介绍了几种实现网页无缝滚动的技术,包括CSS3的`scroll-snap`属性、JavaScript的Intersection Observer API以及现代前端框架如React和Vue的动画库。通过示例代码展示了如何使用这些技术,帮助开发者轻松实现流畅的滚动效果,提升用户体验。
71 29
|
3天前
|
前端开发 JavaScript API
惊呆了!这些前端技巧竟然能让你的网站支持AR/VR体验!
【10月更文挑战第31天】在数字化时代,用户对网页交互体验的要求日益提高,传统二维网页已难以满足需求。本文介绍如何利用前端技术,特别是Three.js,实现AR/VR体验,提升用户满意度和网站价值。通过示例代码,展示如何创建简单的3D场景,并探讨AR/VR技术的基本原理和常用工具,帮助开发者打造沉浸式体验。
15 6
|
3天前
|
编解码 前端开发 JavaScript
前端界的黑科技:掌握这些技术,让你的网站秒变未来感十足!
【10月更文挑战第31天】前端技术日新月异,黑科技层出不穷,让网页更加美观、交互更加丰富。本文通过响应式布局与媒体查询、前端框架与组件化开发等案例,展示这些技术如何让网站充满未来感。响应式布局使网站适应不同设备,前端框架如React、Vue则提高开发效率和代码质量。
10 3
|
5天前
|
JSON 前端开发 搜索推荐
惊!这些前端技术竟然能让你的网站实现个性化推荐功能!
【10月更文挑战第30天】随着互联网技术的发展,个性化推荐已成为提升用户体验的重要手段。前端技术如JavaScript通过捕获用户行为数据、实时更新推荐结果等方式,在实现个性化推荐中扮演关键角色。本文将深入解析这些技术,并通过示例代码展示其实际应用。
18 4
|
5天前
|
自然语言处理 前端开发 搜索推荐
前端界的黑科技:掌握这些技术,让你的网站秒变智能助手!
【10月更文挑战第30天】随着前端技术的发展,网站正逐渐变成智能助手。本文探讨了四大关键技术:自然语言处理(NLP)使网站理解用户输入;机器学习实现个性化推荐;Web Notifications API发送重要提醒;Web Speech API实现语音交互。通过这些技术,网站不仅能更好地理解用户,还能提供更智能、个性化的服务,提升用户体验。
15 3
|
5天前
|
搜索推荐 前端开发 UED
惊!这些前端技巧竟然能让你的网站在搜索引擎中获得更高排名!
【10月更文挑战第30天】在数字化时代,网站的搜索引擎排名直接影响流量和品牌知名度。本文通过四个真实案例,揭秘前端技巧如何提升搜索引擎排名:1. 关键词优化与布局;2. 高质量内容与多媒体优化;3. 网站结构优化与URL优化;4. 提升页面加载速度。这些技巧不仅提高排名,还能增强用户体验,助力业务发展。
15 3
|
5天前
|
前端开发 JavaScript 开发者
惊!这些前端技术竟然能让你的网站在社交媒体上疯传!
【10月更文挑战第30天】在这个信息爆炸的时代,社交媒体成为内容传播的重要渠道。本文介绍了前端开发者如何利用技术让网站内容在社交媒体上疯传,包括优化分享链接、创建引人注目的标题和描述、利用Open Graph和Twitter Cards、实现一键分享功能以及创造交互式内容。通过这些方法,提升用户分享意愿,使网站成为社交媒体上的热门话题。
13 2
|
15天前
|
监控 JavaScript 前端开发
前端的混合之路Meteor篇(六):发布订阅示例代码及如何将Meteor的响应数据映射到vue3的reactive系统
本文介绍了 Meteor 3.0 中的发布-订阅模型,详细讲解了如何在服务器端通过 `Meteor.publish` 发布数据,包括简单发布和自定义发布。客户端则通过 `Meteor.subscribe` 订阅数据,并使用 MiniMongo 实现实时数据同步。此外,还展示了如何在 Vue 3 中将 MiniMongo 的 `cursor` 转化为响应式数组,实现数据的自动更新。
|
15天前
|
JSON 分布式计算 前端开发
前端的全栈之路Meteor篇(七):轻量的NoSql分布式数据协议同步协议DDP深度剖析
本文深入探讨了DDP(Distributed Data Protocol)协议,这是一种在Meteor框架中广泛使用的发布/订阅协议,支持实时数据同步。文章详细介绍了DDP的主要特点、消息类型、协议流程及其在Meteor中的应用,包括实时数据同步、用户界面响应、分布式计算、多客户端协作和离线支持等。通过学习DDP,开发者可以构建响应迅速、适应性强的现代Web应用。
|
21天前
|
自然语言处理 前端开发 JavaScript
推荐 10 个前端开发会用到的工具网站
本文介绍了多个前端开发工具,包括 Web Design Museum、Landing Page、Google Fonts、Lorem Ipsum、Animista、Blobmaker、Spline、CodeToGo、UnusedCSS 和 Responsively,帮助开发者提高效率和项目质量。这些工具涵盖了设计、动画、代码片段管理、响应式测试等多个方面。
55 0
推荐 10 个前端开发会用到的工具网站