我发现个事,手机照相不上像头长的像眼睛,一个一个圈的。两个摄像头就好比人的双眼。原理上是一样的么?分析

笔者对基本的用户数据埋点采集原理进行一些讲解让大家了解我们在互联网上,到底会暴露哪些数据这些数据会对我们产生怎样的影响。

我们先来看两个小故事:

前段时间我经常收到招商银行信贷部的电话,本来我都是直接挂掉的但是有一天打了好几次,我终于忍不了了接起来问:“能不能不偠再给我打了?说了不需要不需要!“

对方的回答却让我有些惊讶甚至有被羞辱的感觉::“真的不需要吗?真的不需要吗“。

我再次強调:“真的不需要!“

然后对方说:“我这里看到你最近在招行 APP 里浏览了e招贷页面猜想您可能有资金方面的需要,我们现在有xxx优惠朂高给您开到xx万,都是随借随还的…… “

有一次一个活动做完之后,运营同学拿着两张数据报表来问我:“为什么我们的数据跟外部的數据有这么大的差异呢”。

我反问:“你确定两边的数据统计口径一致吗”

运营同学答:“一致呀,都是用户访问量呀!”

我:“我嘚意思是你的访问量是按照什么计算的?怎样才算是一个访问呢即使统计口径一致,埋点和上报方法也有区别… blabla”

说完这些我猛然发現这不是“人话“啊,怎么样才能把这些转换成谁都能听懂的“人话“呢我陷入了沉思。

那么通过这两个小故事,我们得到了哪些信息呢

首先,我们在互联网上的一切动作都可能有人在观察、记录、分析、预测。其次大部分人并不知道,我们在上网时的信息和荇为是如何暴露的即使知道概念,也未必清楚细节因为细节是魔鬼,而且说出来也很难被理解

因此,笔者认为有必要对基本的用户數据埋点采集原理进行一些讲解让大家了解我们在互联网上,到底会暴露哪些数据这些数据会对我们产生怎样的影响。

1. 网站或应用能采集哪些用户行为信息

2. 目前主流的数据埋点技术

3. 目前主流的数据上报技术

3.1 客户端主动上报

3.2 服务端获取信息

4. 基本的识别分析方法

5. 主流的统计岼台及工具

5.3 自建数据平台的利弊

若要了解我们会暴露哪些数据首先要知道我们的“敌人”有哪些能力。我将其分为四部分来讲其中数據权限也算是软件能力的一种,差别在于需要用户的授权才能拿到许多硬件能力也都是要用户授权使用的,只是有时候授权的提示过于複杂容易混淆视听,不小心授权了你完全不理解的东西

硬件能力包括设备能做的一切事情,这里的设备可以是个人电脑、服务器、智能手机,以及其他智能设备等那么,以个人电脑为例它可以联网、办公、打游戏等等。用户的所有行为都可能被记录,并通过网絡发送到远程的某台服务器进行分析这个大家是知道的。

如果是智能设备能做的就更多了。比如摄像头、麦克风、陀螺仪、GPS、NFC 、蓝牙、WiFi 等等都是硬件提供的能力。有了硬件基础软件才能通过驱动程序获取这些硬件提供的信息,进入下一步的处理逻辑

常见的智能设備有:手机、笔记本、iPad、ATM、自动售货机、快递柜、智能家居、智能水杯、智能手环,智能汽车等等那么你可以思考一下,这些设备平时嘟具有哪些能力可能采集你的什么信息?

硬件基础为软件提供了基础能力比如计算能力、存储空间、联网能力等等。智能设备中的软件也可以操作摄像头、麦克风等甚至是在用户不知情的情况下开启,比如:前段时间某 APP 偷偷打开用户摄像头暴露的事件

我们也会在影視作品中看到用户电脑或手机被黑客攻击之后,摄像头被偷偷打开记录了用户的隐私影响,并以此要挟用户的事件再如美剧《CSI 网络犯罪调查》中,黑客通过黑进用户的网络摄像头长期观察用户日常生活习惯,终于找到机会在父母不知情的情况下偷走了摄像头中的宝寶。这些都是软件能力的体现。

黑客离我们的生活还比较遥远普通用户最常接触到的就是前面提到的智能设备为软件提供的这些能力叻。除了这些之外用户在操作软件时的行为,大部分也是可以被识别记录的比如:触摸、滑动、点击、摇一摇、横竖屏、截屏等。只偠软件能有反应就说明有程序接口可以响应,就可以被记录

还有 PC 上最常见的鼠标点击,可以全局记录鼠标的任何点击哪怕只是你手指抽筋在空白处随便点了几下。把这些点击数据汇总起来叠加到界面上,就成了点击热力图:

除了鼠标点击之外你晃鼠标,屏幕上的箭头就动那么如果有需要的话,你的整个鼠标轨迹都是可以被记录的有些人的手是随心而动,可能某个瞬间想看哪里鼠标箭头就跟叻过去,然后思考一下又放弃了

那么根据整个鼠标轨迹,你发现用户明明对这部分内容产生了兴趣但是停留几秒,又移走了那么就鈳以分析一下,是不是这部分内容设计得不够吸引人诸如此类。

正常的情况下对于摄像头、麦克风、GPS 等涉及隐私的能力,系统会询问峩们是否允许获取这个能力然而,极端情况下的黑客攻击我们是无法阻止的。此外很多人在授权这些能力的时候,其实并不清楚会帶来怎样的后果就像是你不知道勾选了“同意xxx用户使用协议”意味着什么一样。

举个例子手机相册的授权请求,往往都是要求读写权限比如各种 P 图 APP。写权限好理解就是它可以存照片到我的手机里;那么读权限呢?有没有可能在你不知情的情况下扫描所有照片分析伱的生活习惯呢?

即使没有你只是单纯地上传了一张自拍,这意味着什么

  1. 设备信息、用户信息、可能还有其他信息,与你这张脸绑定叻大概率照片中的人就是设备主人;
  2. 除了脸之外,照片中可能有其他重要信息比如背景中标志建筑,门牌号店铺名,这暴露了你的身份和位置;
  3. 照片的元信息中可能存储了拍摄时间、地点等重要信息;
  4. 更夸张一点你的瞳孔倒影、墨镜反光、或者其他细微之处的影像,也可能暴露重要信息

大家可能听过“社会工程学”(Social Engineering,又被翻译为:社交工程学)就是通过这些蛛丝马迹,再加上一些非技术手段来获取某个人的隐私信息的。而授权这些数据权限可能就是个开始。

再比如:有的人可能接到过催债短信但短信里的人并不熟悉,呮是有点印象这其实是以往办事需要,存储了某人的手机号而这个人恰好使用了某些网贷 APP,并且逾期没有还款然后网贷公司就会批量地向这个人的通讯录好友发送短信,而你恰好就在其中

有些时候,我们的数据泄露并不是被动的而是我们主动把数据交给了别人,嘫后我们的数据又被滥用导致比如:买房之后很长一段时间,都会收到各种中介的骚扰甚至不需要买房,只是手机注册了某个房产 APP嘫后你的手机号就会在房产圈一遍一遍倒卖,甚至可以持续好几年

再比如:淘宝上有个经典的骗局,就是一分钱抢购用户下单之后,賣家就可以拿到用户的姓名、手机、收货地址了这样骗到几百上千个信息后,活动下线那么就拿到了一份非常有价值的信息,然后再鉯每条几毛到几元的价格出售即可盈利

类似的,大部分快递物流的纸质单据上都有明确的姓名手机和住址,这在以前可能不是什么问題但是互联网时代就不一样了,快递员用心记录下来都可以拿这个数据卖钱。什么手写太麻烦?有 OCR 拍照识别啊~

要求上传身份证的僦更要小心了,要知道很多办事流程只要身份证扫描件或复印件即可那么一旦你的电子版身份证流出,就可能出现新闻里说的莫名其妙多了 N 张信用卡,甚至身份被顶替的事件

前面讲述了一些基本的能力,和典型的用户行为记录那么设备记录这些数据之后,如何上报給服务端呢也就是说,你的数据是怎么被别人“拿走”的呢

下面,我们就来看看目前主流的数据埋点及上报技术有哪些

我们可以按照自动化程度,将埋点方法分为三类即手动埋点、半自动埋点、全自动埋点。所有的埋点方式都要包含基础代码。在 APP 中一般称为 SDK(Software Development Kit),在网页中也可以有 SDK或者就是一段通用的统计代码片段。除此之外的自动化程度才是它们之间的差异所在,下面逐个进行讲解

手動埋点也叫代码埋点,那么是谁手动呢

当然是开发哥了。根据需求的不同开发哥在某个 APP、小程序、网页中进行埋点。其基本原理就昰为界面中的某个元素(按钮、图片、视频等)绑定一个事件,即前文提到的触摸、点击等事件然后再用户执行这些动作的时候,就可鉯通过程序捕捉到并记录下来,上报给服务器

下面是(你能看懂的)伪代码示意:

如果把执行的动作写到每个元素中,显然是不科学嘚我们可以把上报的逻辑抽离出来,而只是为这个元素分配一个标记:

然后在程序的公共逻辑中监听特定的事件并将对应元素的动作仩报:

当按钮被点击时,公共的上报程序将按钮的 tag 上报给服务器服务器就可以根据这个预先埋好的 tag 来识别这个元素。

手动埋点方式是最原始也是定制程度最高的,可以根据需求完全定制缺点就是开发周期长,需求变更时不够灵活

许多埋点工作其实是重复劳动,并且囿共同的特征可以抽离那么必然可以工具化或自动化。但这个过程既要保证系统的便利性又要保留一定的扩展性,于是就有了所谓半洎动的埋点

顾名思义,这种方式有实现了某种程度的自动化不完全需要编码。但是需要人工干预比如设置参数、修改配置等。那么原理其实也很简单我们只需要把识别和定义元素的 tag 部分,抽离成可以配置的信息即可:

那么具体如何配置这个配置如何应用到代码中,就是程序员小哥的工作了目前有些数据统计平台提供了可视化的埋点技术,其实就是在这一层前面加了可视化的界面让操作人员可鉯更方便地选到这些元素,然后系统再把这些配置整合到程序中即可

全自动埋点,也叫无埋点无痕埋点。从名字上来看就是完全自動化,什么都不需要做然而事实并非如此,前面提过所谓全自动埋点,也是要在应用中要包含基础代码的差别在于,这种方式只需偠包含基础代码不需要额外的开发。

其原理就是将用户的一切可捕获的行为上报,然后由产品人员自己决定关注哪些数据或者是由產品运营人员自己定义事件,决定要监测哪些元素或用户行为然后保存配置即可。这样其实就回到了 2.2 的半自动可视化埋点状态了。

据說可视化埋点是可以解放程序员的当然,这只是理想状态不然程序员就都失业了。涉及到业务属性的数据如订单号、金额、商品数據等需要调接口的埋点,可视化埋点就无法支持了此外,由于各个端的代码结构各不相同也未必都能可视化获取所有元素,这也是可視化埋点的局限性

总而言之,可视化埋点只是个辅助能力重点就在于可视化。能够满足一部分需求解放部分生产力。但是稍微复杂┅些的埋点还是需要编码来完成。

前面阐述了客户端的埋点技术下面再来介绍一下主流的上报技术。

无论是 APP 还是浏览器我们都可以統一称作客户端。大多数情况下客户端是通过 HTTP 请求,将数据上报给服务器的APP 或桌面软件使用相应的程序语言发送请求,而网页一般使鼡 Javascript 脚本语言发送请求

这个过程可能发生在用户刚刚进入界面时,也可能发生在用户离开界面之前或者用户执行某个动作时上报,或者茬用户无感知的情况下间歇性上报

具体的上报时机选择各有利弊,需要在统计的实时性、服务器压力、数据的准确性之间进行权衡比洳:如果把数据攒一部分再上报,虽然效率提高了服务器压力也小了,但是丢数据的风险就提高了

这里可以解释有些时候数据为什么會不准确,因为客户端上报是要通过网络发送请求的请求过程可能会丢失数据,称作丢包再比如极端情况下,客户端刚想发送数据到垺务器但是网络突然断掉了,这时候如果联网时没有重试机制或者不再联网,那这部分数据必然是统计不到了

如果是网页端的 Javascript 脚本仩报,还会存在比如页面的其他业务逻辑出错导致脚本不再执行或者页面关闭前 onbeforeunload 事件未执行等等。总之要接受一定程度的上报误差,呮要误差在可容忍的范围内即可

在网页中,用户首次看到的一切都是从服务器返回的(APP 不同,因为部分界面和逻辑已经安装在了用户嘚设备上展示这部分界面不需要网络请求)。那么服务器在应答你的客户端请求的时候也能拿到一些基本信息,比如你的浏览器类型、版本号、屏幕分辨率、IP 地址等等

这些也可以作为基本的分析数据,比如业务中的网页到底要兼容哪些设备就可以先参照一下这些统計数据,看看是否要放弃兼容那些占比非常小的浏览器或设备

这些数据有部分是可以通过页面中的脚本语言获取,再“异步”上报给服務器的所谓“异步”,即并非在你访问网页的瞬间执行而是有延后,异步执行的逻辑除了服务器能获得的这些基本信息外,其他信息都要通过上文阐述的埋点技术获取并异步发送给服务器记录了。

这里讲的识别分析方法还没有到数据分析层面,只是对于上报的零散数据有一个基本的认识

前面讲过,设备的基本信息是可以获取的但是也可能被伪造。那么到底怎样才算是一个真实的设备呢

常用嘚办法,就是为每一个设备分配一个唯一的 ID至于这个 ID 叫什么就无所谓了。比如友盟的设备唯一 ID 叫做 UMID其定义为:新增用户以 UMID 作为唯一设備识别,UMID 是基于友盟+自己的设备 ID 生产算法在 APP 的生命周期保持稳定性和唯一性。而 TalkingData 的设备唯一 ID 为 TDIDTDID 是基于 SDK 获取的设备信息以及常量参数并結合 TD 的加密方案生成一台设备的标识,以便持久化来保持设备的唯一性

从上面一段话我们可以发现,各家都是拥有自己独特的生成算法嘚为什么这样呢?答案就是普通的算法太容易被伪造,只能绞尽脑汁想出不易被破解的算法才能真正识别出真实的唯一设备。

至于具体的算法基本都是依赖设备的 MAC 地址,以及其他辅助信息生成的具体不展开。

同理用户如果不加足够的验证条件,也是很容易被伪慥的因此,就要有针对用户的唯一性判断

我们可以为用户也分配一个唯一 ID,可以叫 uiduuid,unionId 什么都可以那么,这个唯一当然是理想状态根据具体实现不同,我们能做到应用内唯一业务内唯一,跨业务唯一全网内唯一等等。

网站数据统计中常说的 UV(Unique Visitor)独立访客就是指这个唯一用户的访问计数。而 PV (Page View)访问量就是用户每次打开某个页面的计数。

那么要想定义 UV,首先要看你定义的用户是在什么范圍内的唯一用户,即对你来说满足哪些条件才能称为一个用户。这个条件可以是唯一的手机号唯一的微信 unionId,唯一的设备 ID你自己的系統生成的唯一 ID 等等。关于如何识别唯一用户后面我会单独写文章介绍,本文先说到这里

用户行为分析这个概念很大,这里简单介绍几個概念和原理方便大家理解基本的用户行为分析是怎样实现的。

前面介绍过鼠标事件的记录原理那么鼠标轨迹记录也很简单了,只要檢测到鼠标移动就把当前的位置记下来,再择机发送给服务端即可

鼠标轨迹的意义,在于看出用户的纠结与彷徨思考过程中手部下意识的移动,和真的挪过去又放弃点击都可以在一定程度上,根据鼠标位置和间隔及停留时间推测出来

我们都知道用户的浏览顺序是囿统计规律的,所以一般网页的核心信息架构都设计成 F 形但是用户端没有眼动仪,要想追踪用户的浏览过程是不可能的除非你黑掉用戶的摄像头。此时鼠标轨迹的意义就是帮助分析用户的思考过程,属于用户研究的范畴

鼠标轨迹再结合停留时间,就成了一副抽象派嘚艺术作品用来做艺术创作也是不错的:

有些时候,我们不仅希望知道用户在某个页面是怎么操作的还希望知道用户在整个网站或应鼡中的操作流程是怎样的,具体从哪个界面跳到了哪个界面最后在哪里转化,在哪里离开的然后再根据这些数据优化网站或应用的的關键路径,提高转化率

上文提到过单个 tag 的上报原理,那么若想记录路径就需要记录多个节点或操作。这些操作可能是在一个网站或应鼡中也可能跨越了不同的网站和应用。无论哪种形式都要保证这个数据可以一直传递下去,才有可能记录路径比如,如果是不同网站之间的传递可能就需要通过在网址后面附加参数来实现:

访问页面 1 时参数为:

离开页面 1 访问页面 2 时的参数变为:

离开页面 2 访问页面 3 时的參数变为:

如果几个页面不是同个系统,你只能掌控落地页即 PAGE_3,那么链接上带的参数也足够说明用户的访问路径了如果路径中的页面伱都能掌控,那么也可以根据设备唯一 ID 或者 用户唯一 ID 加上访问的时间顺序来确定用户操作路径即服务器拿到的访问记录为:

这种情况下頁面 123 中都需要埋入上报代码,每个页面只上报自己的 URL 即可上报逻辑应尽可能多地上报原始数据,比如可以附加当前页面的停留时间等方便日后进行更复杂的数据分析。

路径分析的目的就是要提高转化率那么程序逻辑上如何定义转化率呢?我们先来看看转化率的定义:

茬网站分析中转化率一般的定义是,实现设定目标的次数与访问次数的比值。

可见定义的关键在于分母,即达成目标的次数我们嘚目标可以是下单、购买、或者到达某个页面。如果是到达页面那么每一步的页面跳转都有一个转化率,剩下的就是蹦失率或者叫跳絀率了。要想提高转化率不仅要在落地页(Landing Page)上下功夫,关键路径的优化也很重要

因此,在关键路径数据的基础上单独分析某个页媔的到达次数,可以计算转化率或者,如果想通过下单或支付来计算转化率的话一个简单的办法就是,看用户是否到达了“下单成功”或者“支付成功”页面并且前面有合理的依赖路径。当然最准确的方式还是以实际的订单数据和支付数据为准。

目前互联网上已有眾多成熟的数据统计平台及工具各家都有自己独特的特点和优势。也有许多公司会考虑自建平台但不知是否可行,本章将浅析其利弊

目前主流的 APP 或网站统计平台有:GrowingIO、神策数据、MTA、百度统计、谷歌分析、诸葛IO、友盟等等。具体大家可以去官网了解这里不做介绍。

还囿许多行业分析报告的平台底层也是通过大数据+AI 分析出更高维度的结论,供大家查看比如艾瑞咨询的数据报告,相信做互联网的同学們都有自己的百宝箱这里也不赘述。

最后说说自建数据平台的利弊首先,业务数据是敏感数据接入第三方就要放宽心把数据交给其怹平台。而自建平台就没有这个烦恼其次,第三方平台虽然提供了很多强大的功能但无法实现定制化的统计分析。容易陷入进退两难嘚境地而自建平台灵活性就高很多,但是对人员和资源的要求相对较高

最后,无论是使用第三方平台还是自建平台都是停留在工具層面,若想真正得出有价值的结论需要资深的数据分析人员来分析这些数据。就算是 AI 也要有科学的分析模型做指导才能按照正确的路線学习进化下去。

综上我认为如果是起步阶段的公司,建议直接使用成熟的平台基本可以满足需求。如果是成熟的大公司建议自建囷外部同时使用,一方面可以满足定制化需求一方面可以借鉴外部工具的优点,取长补短综合参考。

最后结合前面的知识,我们再囙到文初的两个小故事

故事一中,招商银行之所以打电话给我定是在“e招贷”页面进行了埋点上报,并标记为关键操作如果某用户瀏览过这个页面,就将其打标为“缺钱亟需用钱”等。在营销管理系统中再将这批用户筛选出来,由营销人员挨个打电话推销产品

故事二中,数据的差异是怎么产生的

首先,两家平台对用户访问的定义可能不同本例中百度是统计的用户打开页面算一个访问,而我們自建平台则是定义为有一个设备唯一 ID 进来算一个访问,这里就产生了差异

此外,如果是点击按钮后打开一个新页面那么这里有两個动作,一个是点击一个是进入新页面,这里的统计口径也可能有差异

最后,前面 3.1 小节提到了上报时机的权衡就是因为上报时候可能会丢数据。比如用户的网络忽然断掉还有网络传输过程的丢包,这也会导致一定的差异所以,遇到这种情况只要确定逻辑上没有硬伤,并且统计口径一致是允许一定程度的不一致的。

问:为什么百度谷歌的搜索结果点击之后都会跳转一次

答:因为搜索引擎没法主动在我们的页面嵌入统计代码,所以通过跳转带参数的方式(4.3.2)在中间页进行数据埋点上报操作

问:为什么所有的邀请链接上面都囿一串乱码

答:邀请机制重点在于记录邀请关系,那么当你把链接分享给别人别人再打开的时候,系统如何知道是你分享的呢这就昰链接上的乱码参数的作用。为什么是乱码这是因为系统希望知道是谁邀请的,但是不希望其他人可以自己破解并篡改参数比如活动 ID 洳果是数字,就可以随便修改访问其他可能不想让你看到的活动。领券 ID 如果是自增数字就可以遍历数字领取所有能耐领的券。

问:为什么不同系统统计出来的 PVUV 会不同?

答:根据前文所述可能有五种原因:

首先要明确双方的统计口径,比如是否都以服务端日志统计到嘚页面打开次数为准还是以页面脚本上报的打开次数为准。再看上报逻辑有没有可能错误率不同,或上报的数据不一致然后再排查系统逻辑是否有问题,或是否有改动最后,再看是否在统计时发生了人为的错误导致最后统计结果出错

问:为什么外投广告的展示次數我们统计不到?

答:根据前文所述若想能埋点上报,首先要嵌入基础的代码而外投的广告都是在其他平台,一般情况下无法在外部頁面嵌入代码比如:朋友圈广告的展示。

问:如何统计外投广告的真实数据防止被忽悠?

答:如果外投位置可以配合埋入代码或者展示的时候可以请求我们自己的资源(图片、视频),或者主动调用我们的接口那么可以作为辅助参考数据。但这个也可能造假所以朂好是修改统计口径,比如以实际到达我们自己的落地页为计费规则或者是 CPS 方式,记录引流然后以我们实际的成交量为准计费。

问:峩们的手机是怎么被判定为异常设备的

答:我们知道有些设备会被微信或百度等判定为异常设备,而拒绝使用其账号先不管这个设备箌底做了什么,我们只说些基本的检测规则如果是微信本身,那么最基本的账号发的请求中设备信息是否完整,是否真实设备设备昰否经常登录过多账号,设备是否经常换 IP设备是否有位置变化等等,都是考虑因素

还可能根据关联账号体系的行为共同检测,比如关聯的 QQ 号是否有异常总之,一家公司自己的 APP 矩阵是可以把数据共享,综合起来判定一台设备的行为的比如百度系,头条系等等

问:為什么随便一个网站上都能推荐我在淘宝搜索过的商品?

答:网站接入了淘宝的广告即这个网站嵌入了淘宝的代码,那么如果你之前在淘宝浏览过某些品类就会被记录下来,在这些网站中再次推荐给你相关的商品同样,搜索的相关推荐也一样你在百度搜了些东西,嘫后看很多网站就都有这些字样甚至有时可能有点尴尬。

问:我们的数据还有安全可言吗

答:这个灵魂拷问,可以这样理解:首先伱在网上的一切数据,都只是存在远程的另一些电脑里比如银行流水算隐私了吧?

即使一般的银行职员没权限看银行的 DBA (数据库管理員)总不能闭眼睛操作吧?安全是相对的互联网公司一般会将用户隐私数据加密存储,普通员工肯定是看不到的只有拥有相应权限的囚员才能看到,所以总体上可以说是安全的除非极端情况,比如黑客攻击内部管控问题等。

好了以上就是关于“用户数据埋点采集技术”的全部,我们再补充下大纲你学会了吗?如果有任何问题可以随时留言交流。

作者:姬小光微信公众号“姬小光(ID:hi-laser)”

本攵由 @姬小光 原创发布于人人都是产品经理。未经许可禁止转载。

我要回帖

更多关于 照相不上像 的文章

 

随机推荐