首页 > 代码库 > CNZZ网站流量统计原理简析

CNZZ网站流量统计原理简析

这是我的域名www.iyizhan.com,暂无内容,其中只有一个页面index.html,
在index.html上放置了如下的 js 脚本:
<script 
src=http://www.mamicode.com/"http://s11.cnzz.com/stat.php?id=5364825&web_id=5364825"
language="JavaScript">
</script>


1.当用户访问这个页面时,会请求src,对应的是上面的脚本的源文件:
Request URL:http://s11.cnzz.com/stat.php?id=5364825&web_id=5364825
请求的query:
id:5364825 //网站id
web_id:5364825 //网站id
脚本会对其中的参数赋值,其中this.q = "CNZZDATA" + this.c为cookie名 
cnzz.js中的函数L会为生成一个我的网站域下的cookie,即
名称: CNZZDATA5364825
内容: CNZZDATA5364825=cnzz_eid%3D2115650326-1406861325-%26ntime%3D1406869345
//CNZZDATA5364825=cnzz_eid=2115650326-1406861325-&ntime=1406869345
域: www.iyizhan.com
其中的ntime会随着访问而更新。
//上面的cookie值表示的仅仅是三个时间值。


并触发如下的链接请求:


2.Request URL:
http://hzs14.cnzz.com/stat.htm?id=5364825&r=&lg=zh-cn&ntime=1406861325&cnzz_eid=124331323-1406861325-&showp=1280x800&t=zhaohf-CNZ...&h=1&rnd=1196942655
(这个请求一个1x1的不可见像素,其中的参数代表不同的含义)
id:5364825 //网站id
r:weibo.com //refer,来源。
lg:zh-cn //页面语言
ntime:1406861325 //now time请求时的时间戳
cnzz_eid:124331323-1406861325- //一个随机数(过期时间)-首次访问时间,差即cookie的生命周期
showp:1280x800 //页面(屏幕)大小
t:zhaohf-CNZ...//页面的title
h:1 //?
rnd:1196942655 //random,一个随机数,目的是每次访问都要请求


请求头中如下:
Accept:image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-CN,zh;q=0.8
Cookie:
cna=YuVcDKp/IhQCAXL/FAmu3PJk; 
PHPSESSID=7e0dc5ea1b0fa3b5357f0b46cb4245d5; 
lzstat_uv=22071519872809337448|3037573; 
UC_SID=e3a977d0ecd733fb2adb54b5a3cfc3ae; 
TJ_LG=cnzz; 
Host:hzs14.cnzz.com
Proxy-Connection:keep-alive
Referer:http://www.iyizhan.com/
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36


3.Request URL:http://c.cnzz.com/core.php?web_id=5364825&t=z
这对应的是一个js脚本。


4.Request URL:http://cnzz.mmstat.com/9.gif?abc=1&rnd=659454759

服务器写入cookie:
Set-Cookie:aui=137828086; expires=Mon, 29-Jul-24 03:49:34 GMT; path=/; domain=.cnzz.mmstat.com
Set-Cookie:atpsida=69e4ef05fb4ee7ea895ac82a_1406864974; expires=Mon, 29-Jul-24 03:49:34 GMT; path=/; domain=.cnzz.mmstat.com


5.Request URL:http://pcookie.cnzz.com/app.gif?&cna=YuVcDKp/IhQCAXL/FAmu3PJk
请求另一张图片,其中的参数
cna=YuVcDKp/IhQCAXL/FAmu3PJk
是上一步生成的cookie
回传给服务器
返回的是在cnzz.com下的cookie:
Set-Cookie:cna=YuVcDKp/IhQCAXL/FAmu3PJk; expires=Mon, 29-Jul-24 03:49:34 GMT; path=/; domain=.cnzz.com


------------------------------------------------------------------


由上可见,用户第一次访问网站时,会向cnzz发如下的5个请求(如下图):
1.请求第一个 js 脚本(我命名为cnzz.js)
2.上一步的 js 在用户端浏览器上执行,向cnzz请求一个html文件,
其中的内容只有1x1不可见像素,作用是发送parameter数据
3.请求第二个 js 脚本(我命名为core.js)
4.此脚本在用户的浏览器执行后会触发一个新的请求,向cnzz.mmstat.com请求一个1x1图片,
目的是服务器端生成cookie返回给浏览器
5.浏览器得到cookie之后将cookie发送给pcookie.cnzz.com,这个应该是专门处理cookie的服务器

,然后把新的cookie设置到cnzz.com域上,并返回给用户浏览器


------------------------------------------------------------------
以上是用户首次与CNZZ交互的全部过程。
之后访问的话,就只有前3个请求(如下图),即请求cnzz.stat.php,stat.html,core.php
并在cookie中带有 cna=YuVcDKp/IhQCAXL/FAmu3PJk,用来判断有几个Unique Visitor.


没有接着发请求是因为:返回的第二个js文件中的
"0" === m && k.callRequest([l + "//cnzz.mmstat.com/9.gif?abc=1"])
可以发现重复访问的时候,返回的m = "1",即不会执行这个请求。
------------------------------------------------------------------
//注:点击【站长统计】即可看到统计结果,不过基本为0。