黑帽联盟

 找回密码
 会员注册
查看: 1980|回复: 0
打印 上一主题 下一主题

[技术文章] CNZZ统计代码原理分析

[复制链接]

895

主题

38

听众

3329

积分

管理员

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    难过
    昨天 22:31
  • 签到天数: 1652 天

    [LV.Master]伴坛终老

    这是之前论坛会员遇到一个问题,当然我也是看了一下,对于其原理分析了一下,才明白如此:第一次访问出现cookies,最后该cookies返回到cnzz服务器上,而这个cookies是有时间期限的,如果你在时间期限之内不停的访问,其访问次数是不会被统计的,那么关于cookies的了解,自己百度搜索了解吧,希望能给你带来帮助!



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

    其中的ntime会随着访问而更新。
    //上面的cookie值表示的仅仅是三个时间值。


    并触发如下的链接请求:


    2.Request URL:
    http://hzs14.cnzz.com/stat.htm?id=id值&r=&lg=zh-cn&ntime=1406861325&cnzz_eid=124331323-1406861325-&showp=1280x800&t=zhaohf-CNZ...&h=1&rnd=1196942655
    (这个请求一个1x1的不可见像素,其中的参数代表不同的含义)
    id:id值//网站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.acehat.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=id值&t=z
    这对应的是一个js脚本。


    4.Request URL:?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:?&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。
    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    勿忘初心,方得始终!
    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部