CNZZ站点流量统计原理简析
这是我的域名www.iyizhan.com。暂无内容,当中仅仅有一个页面index.html。
在index.html上放置了例如以下的 js 脚本:
<script
src="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
server写入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
回传给server
返回的是在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图片。
目的是server端生成cookie返回给浏览器
5.浏览器得到cookie之后将cookie发送给pcookie.cnzz.com。这个应该是专门处理cookie的server
。然后把新的cookie设置到cnzz.com域上。并返回给用户浏览器
------------------------------------------------------------------
以上是用户首次与CNZZ交互的所有过程。
之后訪问的话,就仅仅有前3个请求(例如以下图),即请求cnzz.stat.php,stat.html,core.php
并在cookie中带有 cna=YuVcDKp/IhQCAXL/FAmu3PJk,用来推断有几个Unique Visitor.
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGFvemhhb2t1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
没有接着发请求是由于:返回的第二个js文件里的
"0" === m && k.callRequest([l + "//cnzz.mmstat.com/9.gif?
abc=1"])
能够发现反复訪问的时候,返回的m = "1",即不会运行这个请求。
------------------------------------------------------------------
//注:点击【站长统计】就可以看到统计结果,只是基本为0。
CNZZ站点流量统计原理简析的更多相关文章
- [转帖]简析数据中心三大Overlay技术
简析数据中心三大Overlay技术 http://www.jifang360.com/news/20161010/n225987768.html 搭建大规模的云计算环境需要数据中心突破多种技术难题,其 ...
- 基于IdentityServer4的OIDC实现单点登录(SSO)原理简析
写着前面 IdentityServer4的学习断断续续,兜兜转转,走了不少弯路,也花了不少时间.可能是因为没有阅读源码,也没有特别系统的学习资料,相关文章很多园子里的大佬都有涉及,有系列文章,比如: ...
- Linux网络性能优化方法简析
Linux网络性能优化方法简析 2010-12-20 10:56 赵军 IBMDW 字号:T | T 性能问题永远是永恒的主题之一,而Linux在网络性能方面的优势则显而易见,这篇文章是对于Linux ...
- 简析.NET Core 以及与 .NET Framework的关系
简析.NET Core 以及与 .NET Framework的关系 一 .NET 的 Framework 们 二 .NET Core的到来 1. Runtime 2. Unified BCL 3. W ...
- 简析 .NET Core 构成体系
简析 .NET Core 构成体系 Roslyn 编译器 RyuJIT 编译器 CoreCLR & CoreRT CoreFX(.NET Core Libraries) .NET Core 代 ...
- RecycleView + CardView 控件简析
今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...
- Java Android 注解(Annotation) 及几个常用开源项目注解原理简析
不少开源库(ButterKnife.Retrofit.ActiveAndroid等等)都用到了注解的方式来简化代码提高开发效率. 本文简单介绍下 Annotation 示例.概念及作用.分类.自定义. ...
- PHP的错误报错级别设置原理简析
原理简析 摘录php.ini文件的默认配置(php5.4): ; Common Values: ; E_ALL (Show all errors, warnings and notices inclu ...
- Android 启动过程简析
首先我们先来看android构架图: android系统是构建在linux系统上面的. 所以android设备启动经历3个过程. Boot Loader,Linux Kernel & Andr ...
随机推荐
- AdvStringGrid 滚动条问题
1.默认水平方向 滚动条是 小的 滚动的时候 数据会随着滚动 而 滚动的. 2.默认垂直方向 滚动条是 小的 滚动的时候 数据不会随着滚动 而滚动的.ScrollSynch := True; 垂直方向 ...
- web项目引入extjs小例子
一个新的项目,前端用extjs实现!分享一下extjs开发的准备工作! 首先去下载extjs的资源包,这里我是随便在网上下载的! 打开之后 ,目录是这样的! 需要关注的几个文件夹: builds:压缩 ...
- PHP的XML Parser(转)
PHP处理XML文件 一.读取,更新(创建或者操作)一个XML文档,需要XML解析器 .有两种XML parsers: 1. Tree-based parser:将XML文档转化为DOM Tree结构 ...
- Ocelot 配置初始
{ "ReRoutes": [ { /*将用户的请求 /post/1 转发到 localhost/api/post/1*/ /* DownstreamPathTemplate:转到 ...
- Action(8):Error -27728:Step download timeout(120 seconds)has expired when downloading
Action(8):Error -27728:Step download timeout(120 seconds)has expired when downloading 出现如下图所示对话框上的 ...
- JS学习笔记(一)DOM事件和监听
将事件绑定到元素身上的三种方法: 1.HTML事件处理程序(不推荐使用) 1 <a onclick="hide()"> 2.传统的DOM事件处理程序 即在目标DOM事件 ...
- 8-4 奖品的价值 uva11491(贪心)
题意:给出一个n位整数 请删除d个数字 使得剩余数字最大 一开始写成窗口扫描 非常的麻烦易错 只要保证前d+1 降序即可 如果非降序 则删除 很巧妙的贪心 每次读入和已经保存的数组相比较 ...
- OpenCV 基础笔记
本文大部分内容来源于入门者的Python快速教程 - 番外篇之Python-OpenCV 本篇将介绍和深度学习数据处理阶段最相关的基础使用,并完成4个有趣实用的小例子: 延时摄影小程序 视频中截屏采样 ...
- python 创建项目
项目骨架 nose 测试框架 Windows 10 配置 创建骨架项目目录 Windows 10 的 PowerShell mkdir projects cd projects/ mkdir skel ...
- 查看锁信息(开启InnoDB监控)
当前mysql版本:5.6.21 一.背景 在mysql处理死锁问题时,由于show engine innodb status输出来的死锁日志无任务事务上下文,并不能很好地诊断相关事务所持有的所有锁信 ...