ua.js中用 image 对象实现页面访问统计

       actionlog_js_ua.js混淆编程形式与执行主流程

       ua.js中UA_Opt设定信息的重要性与来源分析

       ua.js文件load事件自定义处理函数功能解析

       ua.js中mousedown和mousemove事件自定义函数功能解析

       ua.js文件focus&blur&keydown事件分析

       ua.js中UA生成函数vq4的“庐山真面目”

       ua.js中网络超时检测函数 wql 功能分析

       ua.js中用 image 对象实现页面访问统计

       ua.js中JSocket.getlso和JSocket.setlso代码分析

       ua.js中arguments.callee.caller的应用

       ua.js 获取访客浏览器与操作系统信息的方式

      据说目前用image对象实现页面访问统计是比较最常用的一个方法,将类似的JavaScript脚本放在网页里:new Image().src = “http://xxx.com/log?msg=”+ msg; 这种统计方法基本上不会干扰用户的正常操作,大淘宝的ua.js文件中就有用image对象实现页面访问统计。

      ua.js中用 image 对象实现页面访问统计的代码

      上述代码中给sb[“src”]赋值时,当前脚本就会将相应数据回传至服务器后台。其中代码”window[embn]=sb;sb=null;”是用image对象实现页面访问统计的回收方案。若new image没有赋值给任何变量,那么在这个函数执行结束时,浏览器的垃圾回收机制对这种“无主”的对象是毫不客气的回收的,而正是这种回收行为导致了这个HTTP请求(异步的)没有发出,从而导致统计信息的丢失。百度也用类似的方法来统计页面访问状况。

本节参考文献:用new Image().src作LOG统计的一个注意事项

                        前端相关数据监控

      image 对象实现页面访问统计在ua.js中的调用逻辑

      image对象实现页面访问统计的函数ytq在ua.js中仅被函数c5k调用,我们由下表可以看出函数c5k在ua.js中的调用逻辑。c5k函数分为周期性调用和事件驱动性调用。周期性调用的时间由isvz[“SendTimer”]决定,事件驱动性调用在每次鼠标或键盘事件时会判断回传给服务器的数据的大小,当数据达到指定大小时将调用c5k将数据回传给服务器。 

call c5k in ua.js

      image 对象实现页面访问统计的信息类型

      要知道ua.js通过image对象实现统计的信息类型,我们必须要来看一看c5k函数的代码。

      由以上代码可知,ua.js每一次通过image对象像服务器发送的数据类型包含:

      1.c5k的调用类型。当前页面被刷新或关闭时,调用类型为c5k(1),其他均为c5k()。

      2.c5k的调用次数。该调用次数仅在DOM加载完成时清零一次,在c5k每一次调用都会累加,直到关闭当前访问页面。

      3.UA_Opt[“Token”]。

      4.c5k的调用时间和当前访问页面的URL;

      5.变量xu存储着从DOM加载完成到本次调用c5k时,ua.js收集到的所有的用户访问信息,这些信息会作为image的URL回传至服务器。

      学习了vq4和wql之后,我们就知道在load事件中获取的固定信息,鼠标键盘等事件获取的访问轨迹信息不仅会参与生成UA,还会回传至服务器。

Comments

  1. By ganbu

    回复

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Fork me on GitHub