4

聊聊各类消费者触点平台上识别用户的ID(上)

 3 years ago
source link: https://zhuanlan.zhihu.com/p/162105470
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

聊聊各类消费者触点平台上识别用户的ID(上)

纷析咨询创始人


v2-d186909a2b9ae4f327649b1d55bc7e9c_720w.jpg

这个上下集的文章,我将介绍各类消费者触点平台上的用户识别ID,以及它们各自背后的“来龙去脉”。

用于标识唯一用户的ID,是消费者深度运营中一类非常关键的数据。

由于在不同的消费者触点平台上,有不同的ID类型,它们的特性和获取方法各不相同,应用的前提也不一样,这给我们带来了很多挑战。

这篇文章,我将介绍各类消费者触点平台上的用户识别ID,以及它们各自背后的“来龙去脉”。

该系列文章将涉及的触点平台包括:

网站、app、微信生态(公众号、小程序、企业微信)、阿里生态(小程序)、字节跳动生态(小程序、蓝V?)。

本文(上集)的目录如下:

  1. 首先,不用提但最重要的ID

2. 网站端标识唯一用户

    • Cookie
    • 第一方和第三方cookie怎么分辨
    • 谁可以利用Cookie?
    • Cookie正在受到挑战
    • Cookie被禁用?
    • Cookie之外的网站端ID

3. APP端标识唯一用户

    • APP端的设备ID必须分苹果手机和安卓手机
    • 谁能获得IDFA
    • iOS14中获取IDFA的新规则
    • 苹果端是否可以利用IMEI号码?
    • 安卓端用什么ID
    • Android_ID
    • MAC地址
    • 谁能获得安卓端的各种ID

首先,不用提但最重要的ID

当然是User ID。所有的平台都支持User ID。并且,各个平台越来越倾向于让用户提供手机号码作为User ID。这是最可靠的ID,唯一的缺点就是,必须要用户注册登录才能拿到ID。这个ID就不做更多介绍了,但我想强调,User ID事实上是目前诸多ID中,最为重要的,没有之一。

网站端标识唯一用户

Cookie

在网站端,标识唯一用户的ID是“大名鼎鼎”的cookie。这个英文原义为小甜饼的东西,作为网站的重要技术配置,历史悠久。

Cookie实际上就是浏览器生成的一个文本文件。它的逻辑是这样,每一个网站,都可以“告诉”浏览器,我要生成cookie,然后,浏览器会执行网站的要求,产生一个文本文件,并且存放在浏览器使用者的设备(比如电脑)的存储器(硬盘或者闪存盘)中。一个网站可以告诉浏览器很多次cookie生成的要求,浏览器也就会为它生成很多的cookie文件。

理论上一个网站可以生成的cookie的数量是无限的,但是大部分浏览器都做了数量的限定。不过,即使如此,一个网站生成几十上百个cookie,没有任何问题。所以,懂得查看cookie文件的朋友,找到cookie存放文件夹,会看到成千上万的cookie文本文件,就是这个原因。

除了网站要求浏览器生成cookie,网站上的第三方代码(就是说这个代码不是网站编写的,而是它把第三方的程序代码——通常是JavaScript放置在自己的网站里)也可以要求浏览器为它(第三方)生成cookie,这时这个cookie的所有者,可能不是网站,而是网站第三方代码的所有者,也就是这个第三方。

第一方和第三方cookie怎么分辨

那么,这种由第三方代码生成的cookie,是否就是我们所说的“第三方cookie”?答案是,无法确定。一般而言,网站自己要求浏览器生成的cookie,确实是第一方cookie。而第三方代码要求浏览器生成的cookie,可以是第三方cookie,也可以是第一方cookie,取决于这个第三方代码的具体要求。

换句话说,如果第三方代码要求浏览器生成的cookie,它的域名是这个网站,那么,它仍然是第一方cookie,而如果第三方要求浏览器生成的cookie的域名是这个第三方或者其他第三方,那么它生成的这个cookie就被称为第三方cookie。

比如,很多网站都置入了谷歌分析(Google Analytics)的监测代码,这个代码对网站而言,是第三方的,但它生成的cookie,域名却是网站的域名,因此,它生成的这个cookie仍然是第一方cookie。

Cookie的作用,不仅仅只是存储一个用户的唯一标识ID这么单一,实际上存储用户的唯一标识ID是它的作用之一,但它还有很多其他的作用,例如存储用户的状态属性等,本文就不赘述了。而用户ID,则作为一个单一的字段,存储在某些cookie中。对于同一个网站而言,它或者第三方为它生成的诸多cookie,里面都可能带有标识用户的ID,而且这些ID,即使是对同一个人,也很可能完全不同。

例如,Google Analytics为网站生成的第一方cookie,就有它自己标识用户的ID字段格式,跟网站自己生成的cookie中标识用户的ID字段格式完全不同。

前面说了,cookie的历史很悠久,但今天cookie受到了很大的挑战。

谁可以利用Cookie?

Cookie的使用原则是谁生成,谁使用。哪怕是第一方cookie,如果不是网站自己生成,而是由第三方生成的,那么,它的使用原则上也是给第三方自己用,而不是给网站用。当然,这个并不绝对,如果生成方愿意在技术上做一些设置,从而让其他方也能应用它们生成的cookie,这也是有可能的,不过这种情况并不常见。

谁生成谁使用原则最典型的例子,就是前面提到的谷歌分析。谷歌分析为网站建立了第一方cookie,但这个第一方cookie是谷歌分析自己用的,用于做用户行为的追踪和统计,而网站其实并不能直接利用。如果说,网站利用了谷歌分析生成的这个cookie,也是在谷歌分析的报告上实现的——网站运营者,通过谷歌分析的监测报告,了解到流量和用户的行为。

顺便说一句,无论是DMP,还是CDP,还是网站分析工具,还是其他的什么数据系统,如果要统计网站上的用户和行为,那么为这个网站生成cookie,尤其是生成第一方cookie,是最基础也是最普遍的方法。

Cookie正在受到挑战

最大的挑战来自于用户隐私。

很多人因为,cookie存储了唯一标识用户的ID(这被称为假名ID,所谓假名ID,就是并不是实名,但颗粒度能到个人级别的ID),还存储了用户的行为,所以透露了用户的隐私。这种理解是狭隘的,原因在于cookie其实几乎不存储或只存储极为有限的用户行为(毕竟cookie只是一个很小的文本文件),并且ID也是假名化的。

但第三方cookie确实容易让人产生隐私忧虑,因为它属于第三方,而不是某个具体的网站,因此一个第三方可以为多个网站生成同一个第三方cookie,只要这些网站都加了这个第三方的代码。比如,很多网站上的广告,添加了同一个监测公司的代码,而这个监测公司,为这些网站都建立了一个共同的cookie,用来标识同一个消费者。这时,这个消费者访问这些网站及他访问时间的信息,就可以被记录在cookie中。

这种情况下,虽然并没有透露用户在每个网站中具体干了什么,但第三方cookie,还是“泄露了”用户的网站访问的轨迹。

Cookie被禁用?

那么,cookie会被禁用吗?

Cookie是否被禁用,分为两个层面,一个是法律层面,一个是技术层面。

法律层面如果被禁用,那么就等于判了它死刑。不过,在中国,没有看到任何法律明确要求禁用cookie,这意味着在中国使用cookie现在是完全合法的。在欧洲,以严格著称的GDPR(欧盟的个人隐私保护的法律)也没有禁用cookie,而是要求对cookie这一类的所有假名信息都要明确告知消费者,并且征得消费者同意之后才能使用。

但在技术层面上,情况有所不同,主要是会对第一方cookie和第三方cookie区别以待。大部分的浏览器,都默认不禁止第一方cookie,但很多浏览器,包括Firefox,Safari,以及Google的Chrome都已经或者即将默认第三方cookie。

第三方cookie被禁用影响大吗?简单而言,对于自己的网站的分析,以及对于CDP的应用,没有影响。但是对于网站端的广告的监测,以及跨网站的用户行为追踪,则有很大的影响。或者说,对企业的私域流量运营影响不大,对公域广告在网站的投放,以及第三方广告投放公司,有比较大的影响。

Cookie之外的网站端ID

基于cookie被浏览器和各种法律或多或少的“封堵”,我们不得不考虑是否有什么替代方法。

一种替代品是Flash cookie。Flash是Adobe公司的一个存储用户行为信息的技术解决方案,与浏览器cookie不同,flash cookie的信息并不存放在客户端,因此某种意义上,它很难被删除。

不过,及基本上Flash快要被各个浏览器抛弃,甚至Adobe自己也已经宣布要放弃对Flash的更新和支持。所以,Flash cookie也会很快成为历史。

HTML5技术的发展,为cookie“变身“创造了新的可能。HTML5利用JavaScript的两种存储方法来实现类似于cookie的效果,一种是local storage(类似于永久cookie),另外一种是session storage(类似于暂时cookie)。这两种存储方式的优势之一,是比标准cookie更大的存储空间。

另一种替代方式是各种被称为“画布指纹(Canvas Fingerprint)”的方案。事实上这不是一种标准化的方案,而是把各种各样互联网客户端特征“凑在一起”,识别同一个用户。画布指纹的思想由两种特征构成,其一,浏览器相关的软件特征的尽可能的搜集,例如浏览器版本号、语言、窗口分辨率等等;其二,对互联网客户端的硬件信息的尽可能的搜集(例如网络适配器的MAC地址,操作系统的编号等,不过这一类信息获取非常困难)。将这些信息结合在一起,对于识别一个具体的用户是非常准确的。可惜,这个方法的问题是,相对于cookie,更存在隐私方面的有忧虑。

你可以认为这些替代cookie的方法都是旁门左道,cookie仍然是目前网站端用户唯一性标识所不可或缺的。

APP端标识唯一用户

网站端标识用户用cookie,app端则主要用device ID,即设备ID。

设备ID其实是一类ID的统称,甚至部分ID跟硬件无关,单也被算作是设备ID,这一点跟cookie很不一样。Cookie很单纯,而设备ID则很庞杂。

APP端的设备ID必须分苹果手机和安卓手机

设备ID,在苹果端,很简单,基本能用的就是两种,一种是IDFA,一种是IDFV。IDFA = ID for Advertisers,IDFV = ID for Vendors。所以IDFA是给广告主用的苹果移动设备的ID,而IDFV是给app开发者用的苹果移动设备的ID。之前苹果端也用UDID(Unique Device ID),已经被废止。

在数字营销的场景下,苹果手机主要应用的ID是IDFA。

而在安卓设备上,设备ID就五花八门了,包括移动设备的国际识别码(IMEI),或是其他各种各样的ID。安卓设备并没有IDFA,但国内近期鼓捣出一个类似于IDFA的OAID。这些我们后面再挨个介绍。

IDFA

IDFA虽然被认为是一种设备ID,但是它根本就和设备无关。准确说来,它是苹果iOS操作系统提供(编出来)的ID,由于iOS是操作系统,因此这个ID也就是一个软件的ID罢了。

正因如此,它跟硬件设备的ID有明显的区别。

IDFA允许用户将它禁用。用户也可以还原广告标识符,这就意味着重新生成一个新的标识符,而旧的那个就直接消失了。这里的广告标识符,就是指IDFA。

就算用户不主动禁用或者还原IDFA,当iOS系统升级,IDFA也会随之被更新。

因此,IDFA实际上并不像硬件ID那样,跟机器永远绑定,也就不可能永远能够追踪到同一个用户。

谁能获得IDFA

任何一个app都可以向苹果官方申请获取IDFA的权限,但使用IDFA的场合只限于如下下种情形:

(1)在这个app内投放广告;

(2)为了标明(追踪)此app安装来自先前投放的特定的广告;

(3)为了标明(追踪)此app中发生的操作来自先前投放的广告。

除了app之外,app中的与广告投放和监测相关的第三方SDK也能够获取iOS的IDFA。

网页中埋入的监测JavaScript代码是否可以获得IDFA?答案是否定的。网页,在任何情况下都不能直接获得IDFA。但,考虑到网页肯定是在浏览器或者某些具有浏览器的app(比如微信货今日头条)中打开的,因此,如果浏览器或者app愿意,它们可以将自己获取到的IDFA传递给网页。不过,这种情况在技术上能实现,在实际应用中,很罕见。

毕竟,很难想象谷歌的Chrome或者微信,给某个网页传递IDFA。

iOS14中获取IDFA的新规则

在iOS14中,获取IDFA将有新的规则。在此前的iOS版本中,app及app中的SDK对IDFA的获取,不需要征得app用户的同意。

而在iOS14中,则必须提前提示用户,并且必须得到用户的明示点击同意,才能获得IDFA。

这将进一步降低IDFA的适用面,并导致iOS广告投放对受众的追踪能力的进一步下降。

苹果端是否可以利用IMEI号码?

无论是app,还是app中的SDK,都无法获取iOS设备的IMEI号,除非这个设备被越狱了。因为苹果iOS操作系统只开放了IDFA让广告行业利用。

IMEI号是硬件设备的固有编号,是典型的假名信息(关于什么是假名信息,欢迎大家参加我的大课堂了解)。苹果,乃至于几乎今天所有的手机制造商,都已经或即将在手机中禁止app获取该硬件ID。

但并不意味着所有人都不可能获取苹果手机的IMEI号。

有一类特殊的机构,他们可以获取苹果手机的IMEI号。这就是通信运营商。因为手机入网,必须要报自己的IMEI号等信息,所以,通信运营商能够拿到每个移动通信设备的IMEI号。

IMEI

既然谈到了IMEI,我们有必要介绍它。

IMEI是安卓手机主要依赖的硬件设备ID。它确实是与硬件设备捆绑的,除非用专门的设备重写硬件设备的ROM,否则一个设备的IMEI号不可能发生改变。

苹果手机很早就禁用了IMEI,但安卓端则迟迟没有禁用它。

IMEI是国际移动设备识别码(International Mobile Equipment Identity)的缩写,即通常所说的手机序列号、手机“串号”,用于在移动电话网络中识别每一部独立的手机等移动通信设备,相当于移动电话的身份证。

因为一个电话卡(SIM卡)一次只能放在一个手机上,因此,手机上的IMEI号,实际上在一段时间之内是跟电话号码唯一绑定的。

哪怕双卡双待的手机,也有两个IMEI号,跟两个手机号码对应。

IMEI号一般而言,是和手机一对一唯一的。但是,由于部分水货甚至走私手机,以及一些“山寨”手机的存在,有可能存在IMEI号中的字段全部是“0”,或者盗用其他手机IMEI号的情况,导致IMEI号和手机设备不能一一对应。这种情况目前在减少。

另外一种IMEI号的误差来自于作弊,即用软件模拟手机,并生成假的IMEI号。这一情况在灰产和黑产生意中,极为常见。

手机号码和IMEI号的对应信息,运营商必然拥有。行业中有很多能够提供IMEI号和手机号码互换服务的供应商,其数据源归根结底,来自于运营商。

但是,随着个人信息保护法律的逐步完善,IMEI存在的隐私风险受到关注。普遍的观点是,考虑到它存续的时间长,不可更换,并且有可能被转换为电话号码,因此需要受到更严格监管。

IMEI号是否会被国家法律层面上禁用,至少在我写这篇文章的时候,仍然没有经全国人大审议后发布的成文法律对此进行确认。但从实际情况看,大量的广告投放的数据应用,以及投放中的效果监测,都仍然依赖于IMEI号。

不过,随着Android Q(新的安卓操作系统)的发布,安卓阵营的手机厂商也开始逐步禁止app获取IMEI。可以预测,未来IMEI将在移动设备中,不再能够作为数字营销和广告推广的用户识别ID。

安卓端用什么ID

安卓端曾经用的ID很多,五花八门。因为安卓的系统开放性很强,而且还能被随意的“root”(就是把操作系统的管理员权限都获取下来,然后就可以对操作系统“为所欲为”),所以,安卓上面运行的各种app、SDK等,都能拿到安卓上的各种ID。

也正因此,安卓端的安全性一直为人所诟病。直到最近才有所改善,我们后面再讲。

安卓端最主要使用的ID包括:IMEI、AndroidID、MAC地址、OAID。

IMEI前面已经讲过。安卓端的IMEI号,曾经(现在很多手机仍然是)能够被app或者app内的一些SDK随意拿到

Android_ID

AndroidID或Android_ID,是用户安卓手机上操作系统提供的ID。在设备首次启动时,系统会随机生成一个64位的数字,并把这个数字以16进制字符串的形式保存下来,这个16进制的字符串就是Android_ID。这个ID与IDFA似乎有些类似,都是操作系统的ID,但其实区别很大。除非手机用户重刷ROM(类似于格式化后重装操作系统),否则Android_ID不能被用户禁用、重写。这意味着这个ID跟硬件ID其实没有太大区别,也是一种典型的假名信息。

没错,它跟IMEI号的待遇一样,Android Q操作系统已经对它进行了屏蔽。

MAC地址

MAC地址是一种特别典型的硬件ID,也就是说,它是被写死在硬件上的,就像刻在铭牌上的汽车的发动机号。

MAC地址的硬件是网卡。所有网络设备要上网,其实都需要有一个网卡(过去是真的一个粗大的卡,现在已经只是一个小小的芯片了)。而所有的网卡,都有一个自己的寻址地址,用6段二位16进制数表示,例如00-50-BA-CE-D6-F9。如果一台计算机有两张网卡,就会有两个MAC地址。

这东西也是无法被普通用户重写擦除的,所以,同样是敏感的假名信息,同样需要被屏蔽,以免被滥用于追踪消费者。

目前没有成文法对它进行明确说明是否可用。但在这一两年的实际应用中,一般都认为这是一种隐私信息,需要加以保护。

OAID

随着Android Q的发布,Android_ID、MAC、IMEI这些被禁用,安卓端需要有一个既能不侵犯隐私,又能对消费者进行追踪的ID。

苹果的IDFA给了安卓阵营的厂商很大启发。于是,在2018年(或者更早的时间),中国信息通信研究院发起了一个移动安全联盟(MSA),主要成员包括华为、ViVO、小米等手机厂商。MSA作为开发者,开发了OAID,用于安卓端的用户追踪,以取代前面说的这些假名ID。

OAID跟IDFA很类似,用户可以禁用、更新,并且操作系统升级之后,OAID也自动会被更新。因此,它不能算是一个一直与硬件绑定的假名ID,而更类似于一个匿名ID。

例如,在华为的开发者文档中,有介绍OAID,如下:

用户可在系统”设置>隐私>广告与隐私”或”设置>安全与隐私>更多安全设置>匿名设备标识”界面中,重置”广告标识符”和启用”限制个性化广告”,以保护用户个人数据的隐私安全。
用户重置”广告标识符”后,会生成一个新的OAID,开发者(app和SDK等)将只能获取到这个新的OAID。

所以,它的英文名字,也起名叫“匿名”。OAID的英文是Open Anonymous ID,即开放性的匿名ID。

谁能获得安卓端的各种ID

跟苹果iOS端类似,app、app中的SDK(经过app授权),以及运营商可以获得安卓端的ID。

不过,运营商情形比较特殊。运营商并不能直接获得OAID或者IDFA这样的匿名ID,运营商只能获得IMEI号为主的硬件标识。

运营商如果要获得OAID或者IDFA,也需要通过它们自己的app——如果用户安装了它们的app的话。

彩蛋

最后,给大家一个彩蛋。哈哈,上面那么多文字,浓缩成下面的表就好了。

真正的彩蛋是:欢迎加入我的读者群 :P

-加入宋星的读者群-

欢迎加入我的读者群

https://url.cn/jMI7P4RK (二维码自动识别)

v2-5bf35eae58555cb70680df80f58f10ff_720w.jpg

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK