百度统计的JS脚本原理分析 您所在的位置:网站首页 脚本动画原理分析 百度统计的JS脚本原理分析

百度统计的JS脚本原理分析

2023-08-07 23:05| 来源: 网络整理| 查看: 265

首先,百度统计会要求我们在要统计的页面中嵌入一段js语句,类似如下: var _bdhmProtocol = ((“https:” == document.location.protocol) ? ” https://” : ” http://”); document.write(unescape(“%3Cscript src=’” + _bdhmProtocol + “hm.baidu.com/h.js%3F3266e9d3684eaa1337dc7c4b4b64b0ae’ type=’text/javascript’%3E%3C/script%3E”)); 这段js,实质上是往页面中引入hm.baidu.com/h.js的这段代码,该代码的内容会根据后面的参数有所不同,h.js?后面的参数就是你在百度统计里的id。 获取该h.js代码的同时,百度统计会往你的浏览器写入一个名字为“HMACCOUNT”的cookie,该cookie的过期时间为2038年,所以只要你没有清空浏览器cookie,基本就永不过期。 h.js被下载后,便执行其脚本获取一些浏览器相关信息和访问来源,获取的信息包括屏幕尺寸、颜色深度、flash版本、用户语言等。 从js代码中可以得到,所有参数包括这些:”cc,cf,ci,ck,cl,cm,cp,cw,ds,ep,et,fl,ja,ln,lo,lt,nv,rnd,sb,se,si,st,su,sw,sse,v”。这些参数的意义大致如下: cc: 不知道,一般为1 cf:url参数hmsr的值 ci:url参数hmci的值 ck:是否支持cookie 1:0 cl:颜色深度 如 “32-bit” cm:url参数hmmd的值 cp:url参数hmpl的值 cw:url参数hmkw的值 ds:屏幕尺寸,如 ’1024×768′ ep:初始值为’0′,时间变量,反映页面停留时间,格式大概是:现在时间-载入时间+“,”+另一个很小的时间值 et:初始值为’0′,如果ep时间变量不是0的话,它会变成其他 fl:flash版本 ja:java支持 1:0 ln:语言 zh-cn lo: 不知道,一般为0 lt:日期 time.time(),如“1327847756”, 在首次请求没有 nv: 不知道,一般为1或者0 rnd:十位随机数字 sb:如果是360se浏览器该值等于‘17’ se: 和搜索引擎相关 si:统计代码id st: su:上一页document.referrer sw: 不知道,估计和搜索引擎有关,一般为空 sse:不知道,估计和搜索引擎有关,一般为空 v:统计代码的版本 ,目前该值为“1.0.17” 当这些参数都设置完毕了(有些参数并没有赋值),筛选出已经赋值了的参数,并作为hm.baidu.com/hm.gif的参数拼凑出一个url,如:http://hm.baidu.com/hm.gif?cc=1&ck=1&cl=32-bit&ds=1366×768&ep=0&et=0&fl=11.0&ja=1&ln=zh-cn   。然后请求该图片。

百度统计服务端,通过接收到这个请求,并从这个图片的网址附带的参数获取相关信息,记录访客访问记录;当页面被用户关闭的时候,同样会触发一次请求hm.gif的过程,但这个过程不是所有浏览器和所有关闭动作都支持。

记下来通过程序模拟这一过程:

首先,使用Wireshark(一款网络抓包工具)对浏览器实际的过程进行捕获。首先是使用ie打开一个有超链接链接到有百度统计的网站,加载完毕后关闭浏览器。最后在Wireshark上得到这么的网络数据包。

http://hm.baidu.com/h.js?3266e9d3684e7a1307dc7c4b4a64b0ae http://hm.baidu.com/hm.gif?cc=1&ck=1&cl=32-bit&ds=1366×768&ep=0&et=0&fl=11.0&ja=1&ln=zh-cn&lo=0


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有