深度揭秘用戶數(shù)據(jù)埋點(diǎn)采集技術(shù) | 您的行蹤已暴露
筆者對基本的用戶數(shù)據(jù)埋點(diǎn)采集原理進(jìn)行一些講解,讓大家了解我們在互聯(lián)網(wǎng)上,到底會暴露哪些數(shù)據(jù),這些數(shù)據(jù)會對我們產(chǎn)生怎樣的影響。
我們先來看兩個小故事:
No.1?神秘的銀行貸款額度
前段時間,我經(jīng)常收到招商銀行信貸部的電話,本來我都是直接掛掉的,但是有一天打了好幾次,我終于忍不了了,接起來問:“能不能不要再給我打了?說了不需要不需要!“
對方的回答卻讓我有些驚訝,甚至有被羞辱的感覺::“真的不需要嗎?真的不需要嗎?“。
我再次強(qiáng)調(diào):“真的不需要!“
然后對方說:“我這里看到你最近在招行 APP 里瀏覽了e招貸頁面,猜想您可能有資金方面的需要,我們現(xiàn)在有xxx優(yōu)惠,最高給您開到xx萬,都是隨借隨還的…… “
我:“……”
No.2?數(shù)據(jù)統(tǒng)計差異的迷思
有一次,一個活動做完之后,運(yùn)營同學(xué)拿著兩張數(shù)據(jù)報表來問我:“為什么我們的數(shù)據(jù)跟外部的數(shù)據(jù)有這么大的差異呢?”。
我反問:“你確定兩邊的數(shù)據(jù)統(tǒng)計口徑一致嗎?”
運(yùn)營同學(xué)答:“一致呀,都是用戶訪問量呀!”
我:“我的意思是,你的訪問量是按照什么計算的?怎樣才算是一個訪問呢?即使統(tǒng)計口徑一致,埋點(diǎn)和上報方法也有區(qū)別… blabla”
說完這些我猛然發(fā)現(xiàn),這不是“人話“啊,怎么樣才能把這些轉(zhuǎn)換成誰都能聽懂的“人話“呢?我陷入了沉思。
那么,通過這兩個小故事,我們得到了哪些信息呢?
首先,我們在互聯(lián)網(wǎng)上的一切動作,都可能有人在觀察、記錄、分析、預(yù)測。其次,大部分人并不知道,我們在上網(wǎng)時的信息和行為是如何暴露的,即使知道概念,也未必清楚細(xì)節(jié)。因?yàn)榧?xì)節(jié)是魔鬼,而且說出來也很難被理解。
因此,筆者認(rèn)為有必要對基本的用戶數(shù)據(jù)埋點(diǎn)采集原理進(jìn)行一些講解,讓大家了解我們在互聯(lián)網(wǎng)上,到底會暴露哪些數(shù)據(jù),這些數(shù)據(jù)會對我們產(chǎn)生怎樣的影響。
圖片來自 @姬小光
目錄:
1. 網(wǎng)站或應(yīng)用能采集哪些用戶行為信息
1.1 硬件能力
1.2 軟件能力
1.3 數(shù)據(jù)權(quán)限
1.4 用戶輸入
2. 目前主流的數(shù)據(jù)埋點(diǎn)技術(shù)
2.1 手動埋點(diǎn)
2.2 半自動
2.3 全自動埋點(diǎn)
3. 目前主流的數(shù)據(jù)上報技術(shù)
3.1 客戶端主動上報
3.2 服務(wù)端獲取信息
4. 基本的識別分析方法
4.1 設(shè)備唯一性
4.2 用戶唯一性
4.3 用戶行為分析
5. 主流的統(tǒng)計平臺及工具
5.1 數(shù)據(jù)分析平臺
5.2 行業(yè)分析報告
5.3 自建數(shù)據(jù)平臺的利弊
1. 網(wǎng)站或應(yīng)用能采集哪些用戶行為
若要了解我們會暴露哪些數(shù)據(jù),首先要知道我們的“敵人”有哪些能力。我將其分為四部分來講,其中數(shù)據(jù)權(quán)限也算是軟件能力的一種,差別在于需要用戶的授權(quán)才能拿到。許多硬件能力也都是要用戶授權(quán)使用的,只是有時候授權(quán)的提示過于復(fù)雜,容易混淆視聽,不小心授權(quán)了你完全不理解的東西。
1.1?硬件能力
硬件能力包括設(shè)備能做的一切事情,這里的設(shè)備,可以是個人電腦、服務(wù)器、智能手機(jī),以及其他智能設(shè)備等。那么,以個人電腦為例,它可以聯(lián)網(wǎng)、辦公、打游戲等等。用戶的所有行為,都可能被記錄,并通過網(wǎng)絡(luò)發(fā)送到遠(yuǎn)程的某臺服務(wù)器進(jìn)行分析,這個大家是知道的。
如果是智能設(shè)備,能做的就更多了。比如攝像頭、麥克風(fēng)、陀螺儀、GPS、NFC 、藍(lán)牙、WiFi 等等,都是硬件提供的能力。有了硬件基礎(chǔ),軟件才能通過驅(qū)動程序獲取這些硬件提供的信息,進(jìn)入下一步的處理邏輯。
常見的智能設(shè)備有:手機(jī)、筆記本、iPad、ATM、自動售貨機(jī)、快遞柜、智能家居、智能水杯、智能手環(huán),智能汽車等等。那么你可以思考一下,這些設(shè)備平時都具有哪些能力,可能采集你的什么信息?
1.2?軟件能力
硬件基礎(chǔ)為軟件提供了基礎(chǔ)能力,比如計算能力、存儲空間、聯(lián)網(wǎng)能力等等。智能設(shè)備中的軟件也可以操作攝像頭、麥克風(fēng)等,甚至是在用戶不知情的情況下開啟,比如:前段時間某 APP 偷偷打開用戶攝像頭暴露的事件。
我們也會在影視作品中看到用戶電腦或手機(jī)被黑客攻擊之后,攝像頭被偷偷打開,記錄了用戶的隱私影響,并以此要挾用戶的事件。再如美劇《CSI 網(wǎng)絡(luò)犯罪調(diào)查》中,黑客通過黑進(jìn)用戶的網(wǎng)絡(luò)攝像頭,長期觀察用戶日常生活習(xí)慣,終于找到機(jī)會在父母不知情的情況下,偷走了攝像頭中的寶寶。這些,都是軟件能力的體現(xiàn)。
黑客離我們的生活還比較遙遠(yuǎn),普通用戶最常接觸到的就是前面提到的智能設(shè)備為軟件提供的這些能力了。除了這些之外,用戶在操作軟件時的行為,大部分也是可以被識別記錄的,比如:觸摸、滑動、點(diǎn)擊、搖一搖、橫豎屏、截屏等。只要軟件能有反應(yīng),就說明有程序接口可以響應(yīng),就可以被記錄。
還有 PC 上最常見的鼠標(biāo)點(diǎn)擊,可以全局記錄鼠標(biāo)的任何點(diǎn)擊,哪怕只是你手指抽筋在空白處隨便點(diǎn)了幾下。把這些點(diǎn)擊數(shù)據(jù)匯總起來,疊加到界面上,就成了點(diǎn)擊熱力圖:
圖片來自百度統(tǒng)計
除了鼠標(biāo)點(diǎn)擊之外,你晃鼠標(biāo),屏幕上的箭頭就動,那么如果有需要的話,你的整個鼠標(biāo)軌跡都是可以被記錄的。有些人的手是隨心而動,可能某個瞬間想看哪里,鼠標(biāo)箭頭就跟了過去,然后思考一下又放棄了。
那么根據(jù)整個鼠標(biāo)軌跡,你發(fā)現(xiàn)用戶明明對這部分內(nèi)容產(chǎn)生了興趣,但是停留幾秒,又移走了,那么就可以分析一下,是不是這部分內(nèi)容設(shè)計得不夠吸引人,諸如此類。
1.3?數(shù)據(jù)權(quán)限
正常的情況下,對于攝像頭、麥克風(fēng)、GPS 等涉及隱私的能力,系統(tǒng)會詢問我們是否允許獲取這個能力。然而,極端情況下的黑客攻擊,我們是無法阻止的。此外,很多人在授權(quán)這些能力的時候,其實(shí)并不清楚會帶來怎樣的后果。就像是你不知道勾選了“同意xxx用戶使用協(xié)議”意味著什么一樣。
舉個例子,手機(jī)相冊的授權(quán)請求,往往都是要求讀寫權(quán)限,比如各種 P 圖 APP。寫權(quán)限好理解,就是它可以存照片到我的手機(jī)里;那么讀權(quán)限呢?有沒有可能在你不知情的情況下掃描所有照片,分析你的生活習(xí)慣呢?
即使沒有,你只是單純地上傳了一張自拍,這意味著什么?
- 設(shè)備信息、用戶信息、可能還有其他信息,與你這張臉綁定了,大概率照片中的人就是設(shè)備主人;
- 除了臉之外,照片中可能有其他重要信息。比如背景中標(biāo)志建筑,門牌號,店鋪名,這暴露了你的身份和位置;
- 照片的元信息中可能存儲了拍攝時間、地點(diǎn)等重要信息;
- 更夸張一點(diǎn),你的瞳孔倒影、墨鏡反光、或者其他細(xì)微之處的影像,也可能暴露重要信息。
大家可能聽過“社會工程學(xué)”(Social Engineering,又被翻譯為:社交工程學(xué)),就是通過這些蛛絲馬跡,再加上一些非技術(shù)手段,來獲取某個人的隱私信息的。而授權(quán)這些數(shù)據(jù)權(quán)限,可能就是個開始。
再比如:有的人可能接到過催債短信,但短信里的人并不熟悉,只是有點(diǎn)印象。這其實(shí)是以往辦事需要,存儲了某人的手機(jī)號,而這個人恰好使用了某些網(wǎng)貸 APP,并且逾期沒有還款。然后網(wǎng)貸公司就會批量地向這個人的通訊錄好友發(fā)送短信,而你恰好就在其中。
1.4?用戶輸入
有些時候,我們的數(shù)據(jù)泄露并不是被動的,而是我們主動把數(shù)據(jù)交給了別人,然后我們的數(shù)據(jù)又被濫用導(dǎo)致。比如:買房之后很長一段時間,都會收到各種中介的騷擾。甚至不需要買房,只是手機(jī)注冊了某個房產(chǎn) APP,然后你的手機(jī)號就會在房產(chǎn)圈一遍一遍倒賣,甚至可以持續(xù)好幾年。
再比如:淘寶上有個經(jīng)典的騙局,就是一分錢搶購。用戶下單之后,賣家就可以拿到用戶的姓名、手機(jī)、收貨地址了。這樣騙到幾百上千個信息后,活動下線。那么就拿到了一份非常有價值的信息,然后再以每條幾毛到幾元的價格出售即可盈利。
類似的,大部分快遞物流的紙質(zhì)單據(jù)上,都有明確的姓名手機(jī)和住址,這在以前可能不是什么問題,但是互聯(lián)網(wǎng)時代就不一樣了,快遞員用心記錄下來,都可以拿這個數(shù)據(jù)賣錢。什么?手寫太麻煩?有 OCR 拍照識別啊~
要求上傳身份證的,就更要小心了,要知道很多辦事流程只要身份證掃描件或復(fù)印件即可。那么一旦你的電子版身份證流出,就可能出現(xiàn)新聞里說的,莫名其妙多了 N 張信用卡,甚至身份被頂替的事件。
二、目前主流的數(shù)據(jù)埋點(diǎn)上報技術(shù)
前面講述了一些基本的能力,和典型的用戶行為記錄,那么設(shè)備記錄這些數(shù)據(jù)之后,如何上報給服務(wù)端呢?也就是說,你的數(shù)據(jù)是怎么被別人“拿走”的呢?
下面,我們就來看看目前主流的數(shù)據(jù)埋點(diǎn)及上報技術(shù)有哪些。
我們可以按照自動化程度,將埋點(diǎn)方法分為三類,即手動埋點(diǎn)、半自動埋點(diǎn)、全自動埋點(diǎn)。所有的埋點(diǎn)方式,都要包含基礎(chǔ)代碼。在 APP 中,一般稱為 SDK(Software Development Kit),在網(wǎng)頁中也可以有 SDK,或者就是一段通用的統(tǒng)計代碼片段。除此之外的自動化程度,才是它們之間的差異所在,下面逐個進(jìn)行講解。
2.1?手動埋點(diǎn)
手動埋點(diǎn)也叫代碼埋點(diǎn),那么是誰手動呢?
當(dāng)然是開發(fā)哥了。根據(jù)需求的不同,開發(fā)哥在某個 APP、小程序、網(wǎng)頁中進(jìn)行埋點(diǎn)。其基本原理,就是為界面中的某個元素(按鈕、圖片、視頻等)綁定一個事件,即前文提到的觸摸、點(diǎn)擊等事件。然后再用戶執(zhí)行這些動作的時候,就可以通過程序捕捉到,并記錄下來,上報給服務(wù)器。
下面是(你能看懂的)偽代碼示意:
<button onclick=“send_data_to_server (‘按鈕被點(diǎn)擊‘) ”>按鈕</button>
如果把執(zhí)行的動作寫到每個元素中,顯然是不科學(xué)的,我們可以把上報的邏輯抽離出來,而只是為這個元素分配一個標(biāo)記:
<button data-tag=“12345”>按鈕</button>
然后在程序的公共邏輯中監(jiān)聽特定的事件,并將對應(yīng)元素的動作上報:
if(event.type==‘click’){send_data_to_server(’觸發(fā)事件的元素的tag’);}
當(dāng)按鈕被點(diǎn)擊時,公共的上報程序?qū)粹o的 tag 上報給服務(wù)器,服務(wù)器就可以根據(jù)這個預(yù)先埋好的 tag 來識別這個元素。
手動埋點(diǎn)方式是最原始,也是定制程度最高的,可以根據(jù)需求完全定制。缺點(diǎn)就是開發(fā)周期長,需求變更時不夠靈活。
2.2?半自動埋點(diǎn)
許多埋點(diǎn)工作其實(shí)是重復(fù)勞動,并且有共同的特征可以抽離,那么必然可以工具化或自動化。但這個過程既要保證系統(tǒng)的便利性,又要保留一定的擴(kuò)展性,于是就有了所謂半自動的埋點(diǎn)。
顧名思義,這種方式有實(shí)現(xiàn)了某種程度的自動化,不完全需要編碼。但是需要人工干預(yù),比如設(shè)置參數(shù)、修改配置等。那么原理其實(shí)也很簡單,我們只需要把識別和定義元素的 tag 部分,抽離成可以配置的信息即可:
<button data-tag=“{{ 可以配置的部分 }}”>按鈕</button>
那么具體如何配置,這個配置如何應(yīng)用到代碼中,就是程序員小哥的工作了。目前有些數(shù)據(jù)統(tǒng)計平臺提供了可視化的埋點(diǎn)技術(shù),其實(shí)就是在這一層前面加了可視化的界面,讓操作人員可以更方便地選到這些元素,然后系統(tǒng)再把這些配置整合到程序中即可。
2.3?全自動埋點(diǎn)
全自動埋點(diǎn),也叫無埋點(diǎn),無痕埋點(diǎn)。從名字上來看,就是完全自動化,什么都不需要做。然而事實(shí)并非如此,前面提過,所謂全自動埋點(diǎn),也是要在應(yīng)用中要包含基礎(chǔ)代碼的。差別在于,這種方式只需要包含基礎(chǔ)代碼,不需要額外的開發(fā)。
其原理,就是將用戶的一切可捕獲的行為上報,然后由產(chǎn)品人員自己決定關(guān)注哪些數(shù)據(jù)。或者是由產(chǎn)品運(yùn)營人員自己定義事件,決定要監(jiān)測哪些元素或用戶行為,然后保存配置即可。這樣,其實(shí)就回到了 2.2 的半自動可視化埋點(diǎn)狀態(tài)了。
圖片來自 GrowingIO 首頁
據(jù)說可視化埋點(diǎn)是可以解放程序員的。當(dāng)然,這只是理想狀態(tài),不然程序員就都失業(yè)了。涉及到業(yè)務(wù)屬性的數(shù)據(jù),如訂單號、金額、商品數(shù)據(jù)等需要調(diào)接口的埋點(diǎn),可視化埋點(diǎn)就無法支持了。此外,由于各個端的代碼結(jié)構(gòu)各不相同,也未必都能可視化獲取所有元素,這也是可視化埋點(diǎn)的局限性。
總而言之,可視化埋點(diǎn)只是個輔助能力,重點(diǎn)就在于可視化。能夠滿足一部分需求,解放部分生產(chǎn)力。但是稍微復(fù)雜一些的埋點(diǎn),還是需要編碼來完成。
三、目前主流的數(shù)據(jù)上報技術(shù)
前面闡述了客戶端的埋點(diǎn)技術(shù),下面再來介紹一下主流的上報技術(shù)。
3.1?客戶端主動上報
無論是 APP 還是瀏覽器,我們都可以統(tǒng)一稱作客戶端。大多數(shù)情況下,客戶端是通過 HTTP 請求,將數(shù)據(jù)上報給服務(wù)器的。APP 或桌面軟件使用相應(yīng)的程序語言發(fā)送請求,而網(wǎng)頁一般使用 Javascript 腳本語言發(fā)送請求。
這個過程可能發(fā)生在用戶剛剛進(jìn)入界面時,也可能發(fā)生在用戶離開界面之前,或者用戶執(zhí)行某個動作時上報,或者在用戶無感知的情況下間歇性上報。
圖片來自 @姬小光
具體的上報時機(jī)選擇各有利弊,需要在統(tǒng)計的實(shí)時性、服務(wù)器壓力、數(shù)據(jù)的準(zhǔn)確性之間進(jìn)行權(quán)衡。比如:如果把數(shù)據(jù)攢一部分再上報,雖然效率提高了,服務(wù)器壓力也小了,但是丟數(shù)據(jù)的風(fēng)險就提高了。
這里可以解釋有些時候數(shù)據(jù)為什么會不準(zhǔn)確,因?yàn)榭蛻舳松蠄笫且ㄟ^網(wǎng)絡(luò)發(fā)送請求的,請求過程可能會丟失數(shù)據(jù),稱作丟包。再比如極端情況下,客戶端剛想發(fā)送數(shù)據(jù)到服務(wù)器,但是網(wǎng)絡(luò)突然斷掉了,這時候如果聯(lián)網(wǎng)時沒有重試機(jī)制,或者不再聯(lián)網(wǎng),那這部分?jǐn)?shù)據(jù)必然是統(tǒng)計不到了。
如果是網(wǎng)頁端的 Javascript 腳本上報,還會存在比如頁面的其他業(yè)務(wù)邏輯出錯導(dǎo)致腳本不再執(zhí)行,或者頁面關(guān)閉前 onbeforeunload 事件未執(zhí)行等等??傊邮芤欢ǔ潭鹊纳蠄笳`差,只要誤差在可容忍的范圍內(nèi)即可。
3.2?服務(wù)端獲取信息
在網(wǎng)頁中,用戶首次看到的一切,都是從服務(wù)器返回的(APP 不同,因?yàn)椴糠纸缑婧瓦壿嬕呀?jīng)安裝在了用戶的設(shè)備上,展示這部分界面不需要網(wǎng)絡(luò)請求)。那么服務(wù)器在應(yīng)答你的客戶端請求的時候,也能拿到一些基本信息,比如你的瀏覽器類型、版本號、屏幕分辨率、IP 地址等等。
這些也可以作為基本的分析數(shù)據(jù),比如業(yè)務(wù)中的網(wǎng)頁到底要兼容哪些設(shè)備,就可以先參照一下這些統(tǒng)計數(shù)據(jù),看看是否要放棄兼容那些占比非常小的瀏覽器或設(shè)備。
這些數(shù)據(jù)有部分是可以通過頁面中的腳本語言獲取,再“異步”上報給服務(wù)器的。所謂“異步”,即并非在你訪問網(wǎng)頁的瞬間執(zhí)行,而是有延后,異步執(zhí)行的邏輯。除了服務(wù)器能獲得的這些基本信息外,其他信息都要通過上文闡述的埋點(diǎn)技術(shù)獲取,并異步發(fā)送給服務(wù)器記錄了。
四、基本的識別分析方法
這里講的識別分析方法,還沒有到數(shù)據(jù)分析層面,只是對于上報的零散數(shù)據(jù)有一個基本的認(rèn)識。
4.1?設(shè)備唯一性
前面講過,設(shè)備的基本信息是可以獲取的,但是也可能被偽造。那么到底怎樣才算是一個真實(shí)的設(shè)備呢?
常用的辦法,就是為每一個設(shè)備分配一個唯一的 ID,至于這個 ID 叫什么就無所謂了。比如友盟的設(shè)備唯一 ID 叫做 UMID,其定義為:新增用戶以 UMID 作為唯一設(shè)備識別,UMID 是基于友盟+自己的設(shè)備 ID 生產(chǎn)算法,在 APP 的生命周期保持穩(wěn)定性和唯一性。而 TalkingData 的設(shè)備唯一 ID 為 TDID,TDID 是基于 SDK 獲取的設(shè)備信息以及常量參數(shù)并結(jié)合 TD 的加密方案生成一臺設(shè)備的標(biāo)識,以便持久化來保持設(shè)備的唯一性。
從上面一段話我們可以發(fā)現(xiàn),各家都是擁有自己獨(dú)特的生成算法的。為什么這樣呢?答案就是,普通的算法太容易被偽造,只能絞盡腦汁想出不易被破解的算法,才能真正識別出真實(shí)的唯一設(shè)備。
至于具體的算法,基本都是依賴設(shè)備的 MAC 地址,以及其他輔助信息生成的,具體不展開。
4.2?用戶唯一性
同理,用戶如果不加足夠的驗(yàn)證條件,也是很容易被偽造的。因此,就要有針對用戶的唯一性判斷。
我們可以為用戶也分配一個唯一 ID,可以叫 uid,uuid,unionId 什么都可以。那么,這個唯一當(dāng)然是理想狀態(tài),根據(jù)具體實(shí)現(xiàn)不同,我們能做到應(yīng)用內(nèi)唯一,業(yè)務(wù)內(nèi)唯一,跨業(yè)務(wù)唯一,全網(wǎng)內(nèi)唯一等等。
網(wǎng)站數(shù)據(jù)統(tǒng)計中常說的 UV(Unique Visitor)獨(dú)立訪客,就是指這個唯一用戶的訪問計數(shù)。而 PV (Page View)訪問量,就是用戶每次打開某個頁面的計數(shù)。
那么,要想定義 UV,首先要看你定義的用戶,是在什么范圍內(nèi)的唯一用戶,即對你來說,滿足哪些條件才能稱為一個用戶。這個條件可以是唯一的手機(jī)號,唯一的微信 unionId,唯一的設(shè)備 ID,你自己的系統(tǒng)生成的唯一 ID 等等。關(guān)于如何識別唯一用戶,后面我會單獨(dú)寫文章介紹,本文先說到這里。
4.3?用戶行為分析
用戶行為分析這個概念很大,這里簡單介紹幾個概念和原理,方便大家理解基本的用戶行為分析是怎樣實(shí)現(xiàn)的。
4.3.1 鼠標(biāo)軌跡
前面介紹過鼠標(biāo)事件的記錄原理,那么鼠標(biāo)軌跡記錄也很簡單了,只要檢測到鼠標(biāo)移動,就把當(dāng)前的位置記下來,再擇機(jī)發(fā)送給服務(wù)端即可。
鼠標(biāo)軌跡的意義,在于看出用戶的糾結(jié)與彷徨,思考過程中手部下意識的移動,和真的挪過去又放棄點(diǎn)擊,都可以在一定程度上,根據(jù)鼠標(biāo)位置和間隔及停留時間推測出來。
我們都知道用戶的瀏覽順序是有統(tǒng)計規(guī)律的,所以一般網(wǎng)頁的核心信息架構(gòu)都設(shè)計成 F 形。但是用戶端沒有眼動儀,要想追蹤用戶的瀏覽過程是不可能的,除非你黑掉用戶的攝像頭。此時,鼠標(biāo)軌跡的意義就是幫助分析用戶的思考過程,屬于用戶研究的范疇。
鼠標(biāo)軌跡再結(jié)合停留時間,就成了一副抽象派的藝術(shù)作品,用來做藝術(shù)創(chuàng)作也是不錯的:
圖片來源于網(wǎng)絡(luò)
4.3.2 關(guān)鍵路徑
有些時候,我們不僅希望知道用戶在某個頁面是怎么操作的,還希望知道用戶在整個網(wǎng)站或應(yīng)用中的操作流程是怎樣的,具體從哪個界面跳到了哪個界面,最后在哪里轉(zhuǎn)化,在哪里離開的。然后再根據(jù)這些數(shù)據(jù)優(yōu)化網(wǎng)站或應(yīng)用的的關(guān)鍵路徑,提高轉(zhuǎn)化率。
上文提到過單個 tag 的上報原理,那么若想記錄路徑,就需要記錄多個節(jié)點(diǎn)或操作。這些操作可能是在一個網(wǎng)站或應(yīng)用中,也可能跨越了不同的網(wǎng)站和應(yīng)用。無論哪種形式,都要保證這個數(shù)據(jù)可以一直傳遞下去,才有可能記錄路徑。比如,如果是不同網(wǎng)站之間的傳遞,可能就需要通過在網(wǎng)址后面附加參數(shù)來實(shí)現(xiàn):
圖片來自 @姬小光
具體流程如下:
圖片來自 @姬小光
訪問頁面 1 時參數(shù)為:
?rel_id=page_1
離開頁面 1 訪問頁面 2 時的參數(shù)變?yōu)椋?/p>
?rel_id=page_1,page_2
離開頁面 2 訪問頁面 3 時的參數(shù)變?yōu)椋?/p>
?rel_id=page_1,page_2,page_3
如果幾個頁面不是同個系統(tǒng),你只能掌控落地頁,即 PAGE_3,那么鏈接上帶的參數(shù)也足夠說明用戶的訪問路徑了。如果路徑中的頁面你都能掌控,那么也可以根據(jù)設(shè)備唯一 ID 或者 用戶唯一 ID 加上訪問的時間順序來確定用戶操作路徑,即服務(wù)器拿到的訪問記錄為:
用戶訪問了 ?rel_id=page_1用戶訪問了 ?rel_id=page_2用戶訪問了 ?rel_id=page_3
這種情況下頁面 123 中都需要埋入上報代碼,每個頁面只上報自己的 URL 即可。上報邏輯應(yīng)盡可能多地上報原始數(shù)據(jù),比如可以附加當(dāng)前頁面的停留時間等,方便日后進(jìn)行更復(fù)雜的數(shù)據(jù)分析。
4.3.3 轉(zhuǎn)化率
路徑分析的目的就是要提高轉(zhuǎn)化率,那么程序邏輯上如何定義轉(zhuǎn)化率呢?我們先來看看轉(zhuǎn)化率的定義:
在網(wǎng)站分析中,轉(zhuǎn)化率一般的定義是,實(shí)現(xiàn)設(shè)定目標(biāo)的次數(shù),與訪問次數(shù)的比值。
可見,定義的關(guān)鍵在于分母,即達(dá)成目標(biāo)的次數(shù)。我們的目標(biāo)可以是下單、購買、或者到達(dá)某個頁面。如果是到達(dá)頁面,那么每一步的頁面跳轉(zhuǎn)都有一個轉(zhuǎn)化率,剩下的就是蹦失率,或者叫跳出率了。要想提高轉(zhuǎn)化率,不僅要在落地頁(Landing Page)上下功夫,關(guān)鍵路徑的優(yōu)化也很重要。
因此,在關(guān)鍵路徑數(shù)據(jù)的基礎(chǔ)上,單獨(dú)分析某個頁面的到達(dá)次數(shù),可以計算轉(zhuǎn)化率?;蛘?,如果想通過下單或支付來計算轉(zhuǎn)化率的話,一個簡單的辦法就是,看用戶是否到達(dá)了“下單成功”或者“支付成功”頁面,并且前面有合理的依賴路徑。當(dāng)然,最準(zhǔn)確的方式還是以實(shí)際的訂單數(shù)據(jù)和支付數(shù)據(jù)為準(zhǔn)。
五、主流的統(tǒng)計平臺及工具
目前互聯(lián)網(wǎng)上已有眾多成熟的數(shù)據(jù)統(tǒng)計平臺及工具,各家都有自己獨(dú)特的特點(diǎn)和優(yōu)勢。也有許多公司會考慮自建平臺,但不知是否可行,本章將淺析其利弊。
5.1?數(shù)據(jù)分析平臺
目前主流的 APP 或網(wǎng)站統(tǒng)計平臺有:GrowingIO、神策數(shù)據(jù)、MTA、百度統(tǒng)計、谷歌分析、諸葛IO、友盟等等。具體大家可以去官網(wǎng)了解,這里不做介紹。
5.2?行業(yè)分析報告
還有許多行業(yè)分析報告的平臺,底層也是通過大數(shù)據(jù)+AI 分析出更高維度的結(jié)論,供大家查看。比如艾瑞咨詢的數(shù)據(jù)報告,相信做互聯(lián)網(wǎng)的同學(xué)們都有自己的百寶箱,這里也不贅述。
5.3?自建數(shù)據(jù)平臺的利弊
最后說說自建數(shù)據(jù)平臺的利弊。首先,業(yè)務(wù)數(shù)據(jù)是敏感數(shù)據(jù),接入第三方就要放寬心把數(shù)據(jù)交給其他平臺。而自建平臺就沒有這個煩惱。其次,第三方平臺雖然提供了很多強(qiáng)大的功能,但無法實(shí)現(xiàn)定制化的統(tǒng)計分析。容易陷入進(jìn)退兩難的境地。而自建平臺靈活性就高很多,但是對人員和資源的要求相對較高。
最后,無論是使用第三方平臺還是自建平臺,都是停留在工具層面,若想真正得出有價值的結(jié)論,需要資深的數(shù)據(jù)分析人員來分析這些數(shù)據(jù)。就算是 AI 也要有科學(xué)的分析模型做指導(dǎo),才能按照正確的路線學(xué)習(xí)進(jìn)化下去。
綜上,我認(rèn)為如果是起步階段的公司,建議直接使用成熟的平臺,基本可以滿足需求。如果是成熟的大公司,建議自建和外部同時使用,一方面可以滿足定制化需求,一方面可以借鑒外部工具的優(yōu)點(diǎn),取長補(bǔ)短,綜合參考。
總結(jié)
最后,結(jié)合前面的知識,我們再回到文初的兩個小故事。
No.1?神秘的銀行貸款額度
故事一中,招商銀行之所以打電話給我,定是在“e招貸”頁面進(jìn)行了埋點(diǎn)上報,并標(biāo)記為關(guān)鍵操作。如果某用戶瀏覽過這個頁面,就將其打標(biāo)為“缺錢,亟需用錢”等。在營銷管理系統(tǒng)中,再將這批用戶篩選出來,由營銷人員挨個打電話推銷產(chǎn)品。
No.2?數(shù)據(jù)統(tǒng)計差異的迷思
故事二中,數(shù)據(jù)的差異是怎么產(chǎn)生的?
首先,兩家平臺對用戶訪問的定義可能不同。本例中百度是統(tǒng)計的用戶打開頁面算一個訪問,而我們自建平臺則是定義為有一個設(shè)備唯一 ID 進(jìn)來,算一個訪問,這里就產(chǎn)生了差異。
此外,如果是點(diǎn)擊按鈕后打開一個新頁面,那么這里有兩個動作,一個是點(diǎn)擊,一個是進(jìn)入新頁面,這里的統(tǒng)計口徑也可能有差異。
最后,前面 3.1 小節(jié)提到了上報時機(jī)的權(quán)衡,就是因?yàn)樯蠄髸r候可能會丟數(shù)據(jù)。比如用戶的網(wǎng)絡(luò)忽然斷掉,還有網(wǎng)絡(luò)傳輸過程的丟包,這也會導(dǎo)致一定的差異。所以,遇到這種情況,只要確定邏輯上沒有硬傷,并且統(tǒng)計口徑一致,是允許一定程度的不一致的。
Q & A?網(wǎng)友提問
問:為什么百度谷歌的搜索結(jié)果點(diǎn)擊之后都會跳轉(zhuǎn)一次?
答:因?yàn)樗阉饕鏇]法主動在我們的頁面嵌入統(tǒng)計代碼,所以通過跳轉(zhuǎn)帶參數(shù)的方式(4.3.2),在中間頁進(jìn)行數(shù)據(jù)埋點(diǎn)上報操作。
問:為什么所有的邀請鏈接上面都有一串亂碼?
答:邀請機(jī)制重點(diǎn)在于記錄邀請關(guān)系,那么當(dāng)你把鏈接分享給別人,別人再打開的時候,系統(tǒng)如何知道是你分享的呢?這就是鏈接上的亂碼參數(shù)的作用。為什么是亂碼?這是因?yàn)橄到y(tǒng)希望知道是誰邀請的,但是不希望其他人可以自己破解并篡改參數(shù)。比如活動 ID 如果是數(shù)字,就可以隨便修改,訪問其他可能不想讓你看到的活動。領(lǐng)券 ID 如果是自增數(shù)字,就可以遍歷數(shù)字領(lǐng)取所有能耐領(lǐng)的券。
問:為什么不同系統(tǒng)統(tǒng)計出來的 PV,UV 會不同?
答:根據(jù)前文所述,可能有五種原因:
- 埋點(diǎn)邏輯不同;
- 上報機(jī)制不同;
- 統(tǒng)計口徑不同;
- 程序錯誤;
- 人為錯誤。
首先要明確雙方的統(tǒng)計口徑,比如是否都以服務(wù)端日志統(tǒng)計到的頁面打開次數(shù)為準(zhǔn),還是以頁面腳本上報的打開次數(shù)為準(zhǔn)。再看上報邏輯,有沒有可能錯誤率不同,或上報的數(shù)據(jù)不一致。然后再排查系統(tǒng)邏輯是否有問題,或是否有改動。最后,再看是否在統(tǒng)計時發(fā)生了人為的錯誤導(dǎo)致最后統(tǒng)計結(jié)果出錯。
問:為什么外投廣告的展示次數(shù)我們統(tǒng)計不到?
答:根據(jù)前文所述,若想能埋點(diǎn)上報,首先要嵌入基礎(chǔ)的代碼。而外投的廣告都是在其他平臺,一般情況下無法在外部頁面嵌入代碼,比如:朋友圈廣告的展示。
問:如何統(tǒng)計外投廣告的真實(shí)數(shù)據(jù),防止被忽悠?
答:如果外投位置可以配合埋入代碼,或者展示的時候可以請求我們自己的資源(圖片、視頻),或者主動調(diào)用我們的接口,那么可以作為輔助參考數(shù)據(jù)。但這個也可能造假,所以最好是修改統(tǒng)計口徑,比如以實(shí)際到達(dá)我們自己的落地頁為計費(fèi)規(guī)則,或者是 CPS 方式,記錄引流,然后以我們實(shí)際的成交量為準(zhǔn)計費(fèi)。
問:我們的手機(jī)是怎么被判定為異常設(shè)備的?
答:我們知道有些設(shè)備會被微信或百度等判定為異常設(shè)備,而拒絕使用其賬號。先不管這個設(shè)備到底做了什么,我們只說些基本的檢測規(guī)則。如果是微信本身,那么最基本的,賬號發(fā)的請求中設(shè)備信息是否完整,是否真實(shí)設(shè)備,設(shè)備是否經(jīng)常登錄過多賬號,設(shè)備是否經(jīng)常換 IP,設(shè)備是否有位置變化等等,都是考慮因素。
還可能根據(jù)關(guān)聯(lián)賬號體系的行為共同檢測,比如關(guān)聯(lián)的 QQ 號是否有異常。總之,一家公司自己的 APP 矩陣,是可以把數(shù)據(jù)共享,綜合起來判定一臺設(shè)備的行為的。比如百度系,頭條系等等。
問:為什么隨便一個網(wǎng)站上都能推薦我在淘寶搜索過的商品?
答:網(wǎng)站接入了淘寶的廣告,即這個網(wǎng)站嵌入了淘寶的代碼,那么如果你之前在淘寶瀏覽過某些品類,就會被記錄下來,在這些網(wǎng)站中再次推薦給你相關(guān)的商品。同樣,搜索的相關(guān)推薦也一樣,你在百度搜了些東西,然后看很多網(wǎng)站就都有這些字樣,甚至有時可能有點(diǎn)尷尬。
問:我們的數(shù)據(jù)還有安全可言嗎?
答:這個靈魂拷問,可以這樣理解:首先,你在網(wǎng)上的一切數(shù)據(jù),都只是存在遠(yuǎn)程的另一些電腦里。比如銀行流水算隱私了吧?
即使一般的銀行職員沒權(quán)限看,銀行的 DBA (數(shù)據(jù)庫管理員)總不能閉眼睛操作吧?安全是相對的,互聯(lián)網(wǎng)公司一般會將用戶隱私數(shù)據(jù)加密存儲,普通員工肯定是看不到的,只有擁有相應(yīng)權(quán)限的人員才能看到,所以總體上可以說是安全的。除非極端情況,比如黑客攻擊,內(nèi)部管控問題等。
好了,以上就是關(guān)于“用戶數(shù)據(jù)埋點(diǎn)采集技術(shù)”的全部,我們再補(bǔ)充下大綱,你學(xué)會了嗎?如果有任何問題,可以隨時留言交流。
附A?全文綱要
圖片來自 @姬小光
作者:姬小光,微信公眾號“姬小光(ID:hi-laser)”
本文由 @姬小光 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議
很清晰