我尝试确定默认的 Google Analytics 脚本实际收集了哪些数据。这似乎是一个简单的问题,但事实证明并没有明确的答案。
我知道它们(例如)收集 IP 地址、屏幕分辨率、操作系统等等... 但我并没有找到一个完整的列表。我也有一个可收集的所有可能的维度和指标的清单,但不适用于“默认”分析脚本。
我要求列出由 Google Analytics 默认收集的所有数据清单。
我尝试确定默认的 Google Analytics 脚本实际收集了哪些数据。这似乎是一个简单的问题,但事实证明并没有明确的答案。
我知道它们(例如)收集 IP 地址、屏幕分辨率、操作系统等等... 但我并没有找到一个完整的列表。我也有一个可收集的所有可能的维度和指标的清单,但不适用于“默认”分析脚本。
我要求列出由 Google Analytics 默认收集的所有数据清单。
尽管有点过时,但这项分析是使用手动反混淆的Google Analytics JavaScript文件完成的,快照日期为2018年3月27日。
在分析JS中要查找的一些关键对象:DOCUMENT, WINDOW, NAVIGATOR, SCREEN, LOCATION
以下是GA使用的项目(不一定意味着这些数据以原始形式发送回Google)。
Data Utilized | Code Snippet
------------- | ------------
Url | LOCATION.protocol + "//" + LOCATION.hostname + LOCATION.pathname + LOCATION.search
ReferringPage | DOCUMENT.referrer
PageTitle | DOCUMENT.title
HowLongIsPageVisible | DOCUMENT.visibilityState .. DOCUMENT,"visibilitychange"
DocumentSize | DOCUMENT.documentElement .clientWidth && .clientHeight
ScreenResolution | SCREEN.width SCREEN.height
ScreenColors | SCREEN.colorDepth + "-bit"
ClientSize | e = document.body; e.clientWidth && e.clientHeight
ViewportSize | ca = [documentEl.clientWidth .... : ca = [e.clientWidth .... ca.join("x")
FlashVersion | getFlashVersion
Encoding | characterSet || DOCUMENT.charset
JSONAvailable | window.JSON
JavaEnabled | NAVIGATOR.javaEnabled()
Language | NAVIGATOR.language || NAVIGATOR.browserLanguage
UserAgent | NAVIGATOR.userAgent
Timezone/LocalTime | c.getTimezoneOffset(), c.getYear(), c.getDate(), c.getHours(), c.getMinutes()
PerformanceData | WINDOW.performance || WINDOW.webkitPerformance ... loadEventStart,domainLookupEnd,domainLookupStart,connectStart,responseStart,requestStart,responseEnd,responseStart,fetchStart,domInteractive,domContentLoadedEventStart
Plugins | NAVIGATOR.plugins
SignalUserLeaving | navigator.sendBeacon() // how long the user was on the page
HistoryLength | WINDOW.history.length // number of pages viewed with this browser tab
IsTopSiteForUser | navigator.loadPurpose // "Top Sites" section of Safari
NameOfPage (JS) | WINDOW.name
IsFrame | WINDOW.top != WINDOW
IsEmbedded | WINDOW.external
RandomData | WINDOW.crypto.getRandomValues // because of the try/catch, it doesn't appear to leak anything other than random values
ScriptTags | getElementsByTagName("script"); // probably for Ads, AutoLink decorating [https://support.google.com/analytics/answer/4627488?hl=en] and cross-domain tracking [https://developers.google.com/analytics/devguides/collection/analyticsjs/cross-domain]
Cookies (JS) | DOCUMENT.cookie.split(";") // limited to cookies not marked as server only
默认情况下,GA 似乎只会明确收集与 Google Analytics 特定文档相关的查询字符串参数。但请记住,他们也可以从服务器端提取整个 URL 的数据,包括查询字符串和哈希:
_ga
_gac
gclid
gclsrc
dclid
utm_id
utm_campaign
utm_source
utm_medium
utm_term
utm_content
他们可以选择从浏览器请求头中捕获任何内容。其中最显著的是:
Cookies (Google) | for the google analytics domain, to track the user between sites
IP Address | (parameter "anonymizeIp" claims to anonymize the IP address)
Browser w/ version |
Operating system |
Device Type |
Referer | (in this context, only the url of the page the client is currently on)
X-Forwarded-For | Is a proxy being used? And, if not used for privacy, the actual IP address
Javascript enabled
Cookies enabled
一些其他可用的度量标准,但GA似乎没有访问:
Canvas Supported
CPU Architecture
CPU Number of cores
AudioContext Supported
Bluetooth Supported
Battery Status
Memory (RAM)
Number of speakers
Number of microphones
Number of webcams
Device Orientation
Device input is Touchscreen
System Fonts
LocalStorage Data
IndexedDB Data
WebRTC Supported
WebGL Supported
WebSocket Supported
他们似乎没有使用任何已知的黑客方法来提取额外的独特用户信息,例如使用Canvas和GL查找当前机器的视频卡模型。这并不令人惊讶,因为谷歌可以在chromium/webkit中公开任何他们想要的数据。
然而,他们控制着70%的浏览器市场,这使得他们有权利操纵无害的功能(如随机数生成器)来泄露用户跟踪数据,如果他们愿意的话。
您从Google Analytics门户网站选择查看的内容未必会影响到他们所收集的内容。
GA帮助谷歌确定网站的搜索排名表现,并创建一个用户指纹来跟踪每个互联网用户查看了什么及持续时间。后者有助于他们选择广告,这是他们赚钱的主要方式。他们脚本中触及的大部分数据不以原始形式发送回来,而是用于创建上述指纹。
我认为要了解GA收集的信息,最好看一下Google的通用政策:
“我们收集信息是为了向所有用户提供更好的服务-从确定您使用的语言到更复杂的事情,例如哪些广告对您最有用,您在网上最关心的人或您可能喜欢哪些YouTube视频。
我们以两种方式收集信息:
您提供给我们的信息。例如,我们的许多服务都需要您注册Google帐户。当您这样做时,我们会要求您提供个人信息,例如您的姓名,电子邮件地址,电话号码或信用卡。如果您想充分利用我们提供的共享功能,我们还可能要求您创建一个公开可见的Google个人资料,其中可能包括您的姓名和照片。
我们从您使用我们的服务中获得的信息。我们收集有关您使用的服务以及您如何使用它们的信息,例如您在YouTube上观看视频的时间,访问使用我们的广告服务的网站的时间,或者您查看和与我们的广告和内容互动的时间....”