99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話(huà):13121318867

登錄
首頁(yè)精彩閱讀網(wǎng)站數(shù)據(jù)是如何記錄的_數(shù)據(jù)分析師
網(wǎng)站數(shù)據(jù)是如何記錄的_數(shù)據(jù)分析師
2015-01-15
收藏

網(wǎng)站數(shù)據(jù)是如何記錄的_數(shù)據(jù)分析師


想要進(jìn)行網(wǎng)站數(shù)據(jù)的分析,就先要知道網(wǎng)站數(shù)據(jù)是怎么來(lái)的。
 
用戶(hù)在訪問(wèn)互聯(lián)網(wǎng)的時(shí)候,會(huì)向服務(wù)器發(fā)送服務(wù)的請(qǐng)求。發(fā)送的請(qǐng)求,就被服務(wù)器以一條單獨(dú)記錄的方式記錄在服務(wù)器的日志中,這就是最原始的網(wǎng)站數(shù)據(jù)日志。

 
先看apache的日志。
 
10.1.1.95 - user [18/Mar/2005:12:21:42 +0800] “GET /stats/awstats.pl?config=user HTTP/1.1″ 200 899 “http://10.1.1.1/pv/” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon)”
 
以上是一條apache的標(biāo)準(zhǔn)日志。
 

這行內(nèi)容由9項(xiàng)構(gòu)成,上面的例子中有兩項(xiàng)空白,但整行內(nèi)容仍舊分成了9項(xiàng)。

·      第一項(xiàng)信息是遠(yuǎn)程主機(jī)的地址。也就是訪問(wèn)者本機(jī)器的IP。服務(wù)器就是根據(jù)這個(gè)IP給訪問(wèn)者發(fā)回復(fù)的信息的。

·      第二項(xiàng)是空白,用一個(gè)”-”占位符替代。實(shí)際上絕大多數(shù)時(shí)候這一項(xiàng)都是如此。這個(gè)位置用于記錄瀏覽者的標(biāo)識(shí),這不只是瀏覽者的登錄名字,而是瀏覽者的 email地址或者其他唯一標(biāo)識(shí)符。這個(gè)信息由identd返回,或者直接由瀏覽器返回。很早的時(shí)候,這個(gè)位置往往記錄著瀏覽者的email地址。然而,由于有人用它來(lái)收集郵件地址和發(fā)送垃圾郵件,所以它未能保留多久,很久之前市場(chǎng)上幾乎所有的瀏覽器就取消了這項(xiàng)功能。因此,到了今天,我們?cè)谌罩居涗浀牡诙?xiàng)看到email地址的機(jī)會(huì)已經(jīng)微乎其微了。
·      第三項(xiàng)也是user。這個(gè)位置用于記錄瀏覽者進(jìn)行身份驗(yàn)證時(shí)提供的名字。當(dāng)然,如果網(wǎng)站的某些內(nèi)容要求用戶(hù)進(jìn)行身份驗(yàn)證,那么這項(xiàng)信息是不會(huì)空白的。但是,對(duì)于大多數(shù)不要求登錄驗(yàn)證的網(wǎng)站來(lái)說(shuō),日志文件的大多數(shù)記錄中這一項(xiàng)仍舊是空白的。
·      日志記錄的第四項(xiàng)是請(qǐng)求的時(shí)間。這個(gè)信息用方括號(hào)包圍,而且采用所謂的”公共日志格式”或”標(biāo)準(zhǔn)英文格式”。因此,上例日志記錄表示請(qǐng)求的時(shí)間是2005年3月18日12:21:42。時(shí)間信息最后的”+0800″表示服務(wù)器所處時(shí)區(qū)位于世界標(biāo)準(zhǔn)時(shí)間之后的8小時(shí),事實(shí)上國(guó)內(nèi)服務(wù)器的時(shí)間都是+8000。
·      日志記錄的第五項(xiàng)信息或許是整個(gè)日志記錄中最有用的信息,它告訴我們服務(wù)器收到的是一個(gè)什么樣的請(qǐng)求。該項(xiàng)信息的典型格式是”方法 資源 協(xié)議”。
在上例中,方法是GET,其他經(jīng)??赡艹霈F(xiàn)的方法還有POST和HEAD。此外還有不少可能出現(xiàn)的合法方法,但主要就是這三種。
資源是指瀏覽者向服務(wù)器請(qǐng)求的文檔,或URL。在這個(gè)例子中,瀏覽者請(qǐng)求的是”/stats/awstats.pl?config=user “。
協(xié)議通常是HTTP,后面再加上版本號(hào)。
·      日志記錄的第六項(xiàng)信息是狀態(tài)代碼。它告訴我們請(qǐng)求是否成功,或者遇到了什么樣的錯(cuò)誤。大多數(shù)時(shí)候,這項(xiàng)值是200,它表示服務(wù)器已經(jīng)成功地響應(yīng)瀏覽器的請(qǐng)求,一切正常。一般地說(shuō),以2開(kāi)頭的狀態(tài)代碼表示成功,以3開(kāi)頭的狀態(tài)代碼表示由于各種不同的原因用戶(hù)請(qǐng)求被重定向到了其他位置,以4開(kāi)頭的狀態(tài)代碼表示客戶(hù)端存在某種錯(cuò)誤,以5開(kāi)頭的狀態(tài)代碼表示服務(wù)器遇到了某個(gè)錯(cuò)誤。
·      日志記錄的第七項(xiàng)表示發(fā)送給客戶(hù)端的總字節(jié)數(shù)。它告訴我們傳輸是否被打斷(即,該數(shù)值是否和文件的大小相同)。把日志記錄中的這些值加起來(lái)就可以得知服務(wù)器在一天、一周或者一月內(nèi)發(fā)送了多少數(shù)據(jù)。
·      日志記錄的第八項(xiàng)記錄的是客戶(hù)在提出請(qǐng)求時(shí)所在的目錄或URL。這次的是”http://10.1.1.1/pv/”即10.1.1.1的pv目錄下的首頁(yè)。大多數(shù)情況下,首頁(yè)會(huì)是在httpd.conf中DocumentRoot 指令后面規(guī)定的那些類(lèi)型和名字的web文件。
·      日志記錄的第九項(xiàng)表示客戶(hù)端的詳細(xì)信息。
 
上面是apache日志的記錄的解釋。
 
那么換成是IIS的日志呢! 記錄也大同小異,只是由identd返回的登錄身份驗(yàn)證,由于一直是空的,變成了發(fā)送或者接受的cookie內(nèi)容,還有多了一些協(xié)議的子狀態(tài)的內(nèi)容。
 
從上面可以看到,我們所有分析的大部分?jǐn)?shù)據(jù)都可以得到了,但是還是有一些問(wèn)題,用戶(hù)點(diǎn)擊瀏覽器上的前進(jìn)和后退按鈕,客戶(hù)端的瀏覽器是先讀取緩存的,只有在緩存找不到的情況下,才重新向服務(wù)器請(qǐng)求,所以服務(wù)器是否能記下用戶(hù)點(diǎn)擊了后退或者前進(jìn)之后的頁(yè)面,完全看頁(yè)面的寫(xiě)法和本機(jī)的狀態(tài)。
 
采用原始日志進(jìn)行分析的,一些分的很小的ifram等的頁(yè)面會(huì)被分別請(qǐng)求,導(dǎo)致打開(kāi)一個(gè)頁(yè)面的請(qǐng)求數(shù)并不一定是1,這也是原始日志的一些弊端。
 
同時(shí),這些記錄主要是為了跟蹤服務(wù)器狀態(tài)和服務(wù)器安全的,還有一些數(shù)據(jù)沒(méi)有被記錄下來(lái)。
·      頁(yè)面的之間的關(guān)系沒(méi)有被記錄下來(lái),用戶(hù)到底是從那個(gè)頁(yè)面訪問(wèn)哪個(gè)頁(yè)面的關(guān)系沒(méi)有。
·      不能區(qū)分出一個(gè)用戶(hù)來(lái)的某一次訪問(wèn)來(lái),尤其是對(duì)不需要就能訪問(wèn)的網(wǎng)站。
·      不能記錄頁(yè)面的操作,尤其是點(diǎn)擊的操作。
 
于是一些網(wǎng)站制作了自己的記錄方法,一般是用JS或者一個(gè)一像素圖片的請(qǐng)求去記錄這些些信息。
 
這樣有幾個(gè)信息又被記錄下來(lái)了,訪問(wèn)的來(lái)源頁(yè)面refer,session的編號(hào),cookie的編號(hào),以及點(diǎn)擊所產(chǎn)生的數(shù)據(jù)。并且這些數(shù)據(jù)可以被直接記錄進(jìn)數(shù)據(jù)庫(kù)里面。
 
采用這樣的方式,的確降低了分析的難度,并且增加了可分析的信息,但是確是犧牲了一定的準(zhǔn)確性??芍^是有得有失。
 
·      首先是可記錄的數(shù)據(jù),由于是在客戶(hù)端產(chǎn)生的,所有凡是出現(xiàn)服務(wù)器錯(cuò)誤的情況,數(shù)據(jù)100%會(huì)丟失,服務(wù)器根本沒(méi)有相應(yīng),怎么能出數(shù)據(jù)呢!并且,由于需要啟動(dòng)了js才能呢高進(jìn)行數(shù)據(jù)的傳送,所有數(shù)據(jù)也會(huì)有一定的丟失,一般,服務(wù)器狀態(tài)不差的情況下,98%的準(zhǔn)確率是可以被接受的。

·      來(lái)源頁(yè)面的數(shù)據(jù)還是會(huì)丟失,由于頁(yè)面間跳轉(zhuǎn)和協(xié)議的關(guān)系,來(lái)源頁(yè)面中有一定的量會(huì)出現(xiàn)丟失的問(wèn)題, 比較麻煩的是https的頁(yè)面由于是采用加密的協(xié)議進(jìn)行傳輸?shù)模瑹o(wú)論采用什么方法,到http的頁(yè)面上都會(huì)丟失。

·      受頁(yè)面語(yǔ)言和協(xié)議的影響比較大,頁(yè)面上的調(diào)用,ajax,js什么的都可能影響的記錄的準(zhǔn)確性。

·      最后是所有頁(yè)面都要加上代碼,別小看這點(diǎn),如果是頁(yè)面多的話(huà),這點(diǎn)上還真是個(gè)問(wèn)題,那個(gè)頁(yè)面如果是忘記了,都會(huì)去整體的數(shù)據(jù)產(chǎn)生影響。

·      找不到機(jī)器的IP,這點(diǎn)上的IP和日志上IP有一些區(qū)別,在某些多機(jī)器共用IP的情況下,記錄的不是用戶(hù)最終機(jī)器上的IP而是互聯(lián)網(wǎng)接入路由上的IP。

綜合以上,網(wǎng)站分析上面,由于數(shù)據(jù)的取得方式和網(wǎng)站本身的程序方式的關(guān)系比較復(fù)雜,所以在分析網(wǎng)站數(shù)據(jù)的時(shí)候,需要比較謹(jǐn)慎,數(shù)據(jù)中的故障和陷阱隨時(shí)都可能發(fā)生。

一種方式是在點(diǎn)擊上埋點(diǎn)的方式,在點(diǎn)擊的代碼中加入一些代碼,例如seed=“submit“ 這樣的代碼, 跟蹤的JS在用戶(hù)點(diǎn)擊的時(shí)候向數(shù)據(jù)記錄的服務(wù)器回發(fā)數(shù)據(jù)代碼的記錄。這樣的埋點(diǎn)可以放在有跳轉(zhuǎn)產(chǎn)生的鏈接上,也可以放在例如checkBOX這樣的控件上。
 
這樣操作的好處是:
        ·成本相對(duì)比較低,在整個(gè)頁(yè)面的操作上,由于用戶(hù)的點(diǎn)擊一般不超過(guò)頁(yè)面記錄的兩倍,所以這個(gè)數(shù)據(jù)的傳輸量并不是很大。
        · 可以記錄用戶(hù)絕大多數(shù)的操作記錄,并且可以根據(jù)數(shù)據(jù)分析很多的數(shù)據(jù)問(wèn)題。
        · 記錄丟失量很小,由于是用戶(hù)觸發(fā)的操作,這個(gè)數(shù)據(jù)99.5%以上可以被記錄下來(lái)。
這個(gè)方案存在的一些問(wèn)題:
        · 沒(méi)有埋點(diǎn)的空點(diǎn)擊無(wú)法記錄;
        · 所有監(jiān)控的頁(yè)面位置都需要進(jìn)行埋點(diǎn)的處理,這對(duì)開(kāi)發(fā)來(lái)說(shuō)是一定的成本。
        · 只能知道用戶(hù)點(diǎn)擊行為,但是不知道這個(gè)行為是在那個(gè)位置發(fā)生。
 
另一種方式是采用點(diǎn)擊記錄的方式,通過(guò)頁(yè)面上的觸發(fā)器,鼠標(biāo)每次點(diǎn)擊的時(shí)候,向服務(wù)器請(qǐng)求一個(gè)信息。并且擺放在鼠標(biāo)當(dāng)前的坐標(biāo)上。
 
這樣操作的好處是:
        · 無(wú)需要對(duì)頁(yè)面進(jìn)行其他的處理,只要進(jìn)行添加整體的代碼就可以。
        ·  可以記錄到詳細(xì)的每一個(gè)點(diǎn)擊的行為,只要用戶(hù)是在這個(gè)頁(yè)面上點(diǎn)擊操作都可以記錄,即使用戶(hù)是在頁(yè)面上空點(diǎn)。
這個(gè)方案存在的一些問(wèn)題:
        · 頁(yè)面的成本很高,需要監(jiān)控頁(yè)面上的所有點(diǎn)擊行為,這對(duì)頁(yè)面本身的壓力就很大,甚至很可能因此而改變用戶(hù)的行為。
        · 記錄量增大,用戶(hù)的行為產(chǎn)生的數(shù)據(jù)量遠(yuǎn)大于上一個(gè)方案中的數(shù)據(jù)。
        · 頁(yè)面代碼的要求增高,因?yàn)槭歉鶕?jù)坐標(biāo)定位的,所以定位需要注意。
        · 數(shù)據(jù)處理極其復(fù)雜,受瀏覽器,屏幕分辨率,CSS代碼等問(wèn)題影響較大。這點(diǎn)的分析上,必須結(jié)合瀏覽器內(nèi)核和分辨率進(jìn)行分析。例如自適應(yīng)的頁(yè)面,你很可能發(fā)現(xiàn)用戶(hù)在某個(gè)位置有空點(diǎn)擊,而事實(shí)上,在他的分辨率下,按鈕正好是在那個(gè)位置上。
 
在應(yīng)用上,記錄第一種方案的信息就已經(jīng)夠分析了。第二個(gè)方案主要是用在A/B的test上。
 
以一個(gè)例子說(shuō)明各個(gè)方式之間的差別:
 
例如分析瀏覽器的刷新,點(diǎn)擊瀏覽器的刷新會(huì)產(chǎn)生一個(gè)本頁(yè)面到本頁(yè)面的跳轉(zhuǎn),在頁(yè)面上點(diǎn)擊鏈接也可能產(chǎn)生一個(gè)本頁(yè)面到本頁(yè)面的跳轉(zhuǎn),以B頁(yè)面命名刷新的頁(yè)面。A頁(yè)面上有到B頁(yè)面的一個(gè)鏈接。
 
        ·      在服務(wù)器日志的記錄上可能沒(méi)辦法區(qū)分出本頁(yè)面到本頁(yè)面的跳轉(zhuǎn),因?yàn)樯厦娓緵](méi)有來(lái)源頁(yè)面,連著的B頁(yè)面的記錄,可能是在A頁(yè)面上點(diǎn)擊B的鏈接,,第一次出現(xiàn)B頁(yè)面,之后刷新B頁(yè)面。也可能是兩次的在A頁(yè)面上點(diǎn)擊B頁(yè)面的鏈接。
        ·      但是使用了js或者圖片的跟蹤系統(tǒng)以后,通過(guò)來(lái)源頁(yè)面就可以找到這類(lèi)的數(shù)據(jù),如果來(lái)源頁(yè)面是B和當(dāng)前頁(yè)面也是B,那么可以證明是B頁(yè)面到B頁(yè)面自身的跳轉(zhuǎn)。但是這個(gè)刷新是來(lái)自于頁(yè)面的點(diǎn)擊,還是瀏覽器上的刷新,就不得而知了。
        ·      靠著埋點(diǎn)的方式,如果是頁(yè)面上的點(diǎn)擊的話(huà),則會(huì)在B頁(yè)面到B頁(yè)面,這條記錄之前有一個(gè)頁(yè)面的點(diǎn)擊記錄。如果存在點(diǎn)擊記錄,則證明用戶(hù)是在B頁(yè)面上點(diǎn)擊了一個(gè)鏈接,如果是沒(méi)有這個(gè)點(diǎn)擊記錄,則證明用戶(hù)點(diǎn)擊的是瀏覽器的刷新。
 
事實(shí)上,點(diǎn)擊記錄可以做到的事情更多,如果可以在埋點(diǎn)的命名上作一些規(guī)則的話(huà),多窗口的操作等等信息,都可以根據(jù)埋點(diǎn)的信息分析到。
 
綜合以上, 那么如果你想監(jiān)控網(wǎng)站的安全,日志信息就足夠了,如果是想監(jiān)控網(wǎng)站訪問(wèn)的數(shù)據(jù),只要監(jiān)控的JS就可以了, 但是如果想知道用戶(hù)的點(diǎn)擊行為,就需要在可以點(diǎn)擊的位置上埋點(diǎn)了。

數(shù)據(jù)分析咨詢(xún)請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢(xún)
客服在線
立即咨詢(xún)
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶(hù)后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }