隐私
无 Cookie 分析如何在不跟踪个人的情况下进行统计
我们做出的每一项隐私声明都有技术解释。本页准确说明一次页面浏览会经历什么、我们存储什么、绝不存储什么,以及您如何自行核实。
不必只听我们说
这些工具由其他组织运营。每个链接都会重新扫描本网站,所以您看到的是今天的结果,而不是我们挑选的截图。
数据流程
每个访客请求,包括来自欧盟、欧洲经济区、英国和瑞士的请求,都在我们的美国区域处理。IP 地址和用户代理仅在处理请求期间在内存中使用,并在存储最小化后的事件之前丢弃。
-
第 1 步 · 任何地方访客的浏览器
- 页面 URL 和引荐来源
- UTM 参数
- 屏幕宽度和语言
- 您的自定义事件属性
- 没有 Cookie,也没有本地存储,访客自己的退出选择除外
- 没有指纹识别 API
- 没有第三方请求
-
第 2 步 · 美国采集,在内存中
- 来自 Cloudflare 标头的国家/地区
- 用户代理 → 浏览器、操作系统、设备
- 机器人检查和您的流量规则
- 内存中的访问密钥
- IP 地址在请求结束后丢弃
- 完整的用户代理在请求结束后丢弃
- PII 已脱敏,查询字符串已裁剪
-
第 3 步 · 在美国区域排队最小化后的事件
- 仅最小化后的事件
- 没有 IP 地址
- 没有原始用户代理
- 没有访问密钥或盐值
-
第 4 步 · 美国存储和仪表板
- 页面、来源、营销活动
- 国家/地区和设备类别
- 随机访问 ID(最长一天)
- 事件属性
- 没有任何能识别个人的内容
- 没有任何能关联不同日期、站点或设备的内容
我们收集什么,绝不收集什么
收集的内容(经过最小化)
- 页面. 主机名和路径。除营销活动参数和您的允许列表外,查询字符串会被移除。除非您使用哈希路由,否则片段会被移除。
- 引荐来源. 引荐页面的域名和路径。查询部分会被移除,内部引荐会被清空。
- 营销活动. UTM 参数和 ref。广告点击 ID(gclid、msclkid、fbclid)会被简化为是/否标记。
- 位置. 仅国家/地区,来自我们的网络提供商(Cloudflare)为每个请求添加的国家/地区标头。不含省份、城市或坐标。
- 技术. 浏览器、操作系统(系列和主版本)、设备类型、屏幕尺寸范围、语言。
- 互动. 页面可见时长,以及以 10% 为一档的滚动深度。
- 时区. 浏览器的时区名称,例如 America/Denver。在服务器上运行的浏览器,其时区很少与请求所在国家/地区的时区一致,所以我们会比较两者,帮助区分机器人和真人。这一步在内存中完成,随后时区即被丢弃。它绝不会用作位置信息,也绝不会与访问或事件一起存储。它只保留在高级机器人检测的机器人训练记录中(蜜罐点击,以及来自我们自己站点的样本),保留 12 个月。
- 事件. 事件名称以及您选择发送的最多 30 个带类型的属性,均经过 PII 脱敏。
绝不收集或存储
- IP 地址. 在内存中用于机器人检查和每日访问密钥,随后丢弃。绝不写入磁盘、日志、队列或数据库,即使是机器人的也不例外。
- 完整的用户代理. 在内存中解析为类别,随后丢弃。
- Cookie 和设备存储. 不使用 Cookie、localStorage、sessionStorage 或 IndexedDB(访客自己的退出选择除外)。
- 指纹. 不使用 canvas、WebGL、字体、音频或电池 API,也不请求额外的客户端提示。
- 持久标识符. 没有任何超过一天的标识,也不关联站点或设备。没有用户画像。
- 精确位置. 不含坐标。
- 第三方请求. 跟踪器只与 Privatus Analytics 通信。
PII 脱敏器。在存储任何内容之前,会检查路径、引荐来源、标题和事件属性中是否有邮箱地址、长标识符、类似令牌的字符串,以及电话号码或卡号这类长数字串。匹配的内容会被替换为 [redacted-email] 这样的占位符,每个站点都能看到发生了多少次脱敏,以便从源头修复泄露。
如何统计访问
- 每个 UTC 日,我们生成一个随机的 256 位盐值。它只存在于内存中,并在当天结束时销毁,另加 30 分钟的宽限期。
- 对于每次请求,我们在内存中计算
HMAC(daily salt, site, IP, user agent),并在仅存于内存的存储中查找它,该存储有 30 分钟的不活动超时,最迟到 UTC 午夜为止。 - 新的访问会获得一个随机的访问 ID,它不是由该密钥派生的。只存储这个随机 ID。
- 盐值销毁后,任何方法都无法把已存储的访问关联回某台设备,也无法跨天把它们相互关联。
这是假名化数据:经过高度最小化,且无法在一天之外关联。我们不把它称为匿名数据。
我们存储的每一个字段
新增存储字段需要对其用途、最小化方式和保留期限进行书面审查。这是当前的列表。
| 字段 | 用途 | 最小化 | 保留期限 |
|---|---|---|---|
| 主机名、路径 | 页面 | 除允许列表外移除查询,PII 脱敏,路径掩码 | 套餐 |
| 引荐来源的主机和路径 | 来源 | 去除 www. 和 m.,丢弃查询,内部引荐清空 | 套餐 |
| UTM 参数、ref、付费点击 | 营销活动 | 点击 ID 简化为是/否标记 | 套餐 |
| 国家/地区 | 位置 | 来自 Cloudflare 国家/地区标头,IP 已丢弃 | 套餐 |
| 设备、浏览器、操作系统(含主版本)、屏幕范围 | 技术 | 原始用户代理已丢弃,屏幕尺寸分档 | 套餐 |
| 访问 ID | 访问 | 随机 UUID,最长一个 UTC 日 | 套餐 |
| 事件属性 | 事件 | 最多 30 个键,带类型,PII 脱敏 | 套餐 |
| 时区名称 | 训练机器人评分 | 绝不与访问或事件一起存储。仅与蜜罐点击或来自我们自己站点的样本一起保留 | 12 个月 |
| 过滤计数器 | 机器人、规则、脱敏 | 仅汇总数据,不含 IP | 13 个月 |
| 访问密钥(内存存储) | 访问连续性 | HMAC 密钥,30 分钟超时 | 最长一天 |
| 每日盐值(内存存储) | 访问密钥 | 从不持久化 | 1 天 + 30 分钟 |
“套餐”保留期限:Free 为 3 个月,付费套餐在订阅期间不限,可按站点单独设置。
自行验证
- 打开本页的开发者工具,进入 Application(或 Storage)标签页。您会发现没有 Cookie,本地存储中也没有来自跟踪器的任何内容。跟踪器唯一存储的是访客自己的退出选择。如果您更改了浅色或深色主题,本站点也会把它保存在那里。
- 切换到 Network 标签页,按
/api/event筛选并重新加载。您会看到每次页面浏览只有一个很小的请求。 - 打开请求负载。它只包含下方列出的字段:没有标识符,没有指纹。
- 在您自己站点的脚本标签上添加
data-debug="true",然后观察控制台。每个请求都会以前缀[privatus]记录下来,内容与实际发送的完全一致,并且不会有任何内容离开浏览器。被跳过的请求会记录原因,并且在 localhost 上也能使用。参见测试时不发送任何内容。 - 阅读跟踪器的源代码。它采用 MIT 许可证,篇幅很短,一次就能读完。参见开源。
也可以在您自己的站点上试试Cookie 和跟踪器扫描器。
请求包含什么
这些示例展示了每种请求中可能出现的所有字段。大多数请求携带的字段要少得多。下表说明了每个字段何时发送。
一次页面浏览
{
"s": "pa_7Q2K9XH3AB",
"t": "pageview",
"u": "https://example.com/app?utm_source=newsletter#/pricing",
"l": "en-US",
"w": 1440,
"i": 0,
"r": "https://news.example.org/",
"h": 1,
"d": 1,
"g": 1,
"hp": 1,
"a": "webdriver",
"tz": "America/Denver",
"xp": "var_4M8T2KQ9ZD",
"p": { "plan": "pro" }
}
一次互动请求
{
"s": "pa_7Q2K9XH3AB",
"t": "engagement",
"u": "https://example.com/app?utm_source=newsletter#/pricing",
"l": "en-US",
"w": 1440,
"i": 1,
"r": "https://news.example.org/",
"h": 1,
"d": 1,
"g": 1,
"hp": 1,
"a": "webdriver",
"tz": "America/Denver",
"e": 48210,
"sd": 80
}
一个自定义事件
{
"s": "pa_7Q2K9XH3AB",
"t": "event",
"u": "https://example.com/app?utm_source=newsletter#/pricing",
"l": "en-US",
"w": 1440,
"i": 1,
"r": "https://news.example.org/",
"h": 1,
"d": 1,
"g": 1,
"hp": 1,
"a": "webdriver",
"tz": "America/Denver",
"n": "signup",
"p": { "plan": "pro" }
}
| 字段 | 含义 | 何时发送 | 在我们这边如何处理 |
|---|---|---|---|
s | 站点 ID | 每个请求 | 用于查找站点。作为事件所属的站点存储。 |
t | 请求类型:pageview、engagement 或 event。可选的 Web Vitals 和点击图模块会增加 vital 和 click。 | 每个请求 | 作为事件类型存储。 |
u | 页面 URL,非营销活动的查询参数已在浏览器中移除 | 每个请求 | 主机名和路径在应用路径掩码和 PII 脱敏后存储。营销活动参数会存储,广告点击 ID 变为是/否标记,查询的其余部分被丢弃。 |
l | 浏览器语言 | 每个请求 | 存储,截断为 16 个字符。 |
w | 屏幕宽度(像素) | 每个请求 | 仅作为尺寸范围存储。在内存中读取,用于机器人评分。确切宽度会被丢弃。 |
i | 页面上出现第一次真实输入(指针、按键、触摸或滚轮)之后为 1,否则为 0 | 每个请求 | 作为这次访问的是/否存储。不会发送任何关于输入本身的内容。 |
r | 引荐来源 | 仅在有引荐来源时 | 主机和路径在 PII 脱敏后存储。查询被丢弃,来自您自己站点的引荐来源会被清空。 |
h | 使用哈希路由时为 1 | 仅当片段是页面地址的一部分时 | 在内存中使用,把片段保留为路径的一部分。不存储。 |
d | 浏览器发送“请勿跟踪”(Do Not Track)时为 1 | 仅在开启时 | 如果站点遵守“请勿跟踪”(默认关闭),该请求会被丢弃,不存储任何内容。否则会被忽略。该标记绝不存储。 |
g | 浏览器发送全球隐私控制(Global Privacy Control)时为 1 | 仅在开启时 | 如果站点遵守全球隐私控制(默认开启),该请求会被丢弃,不存储任何内容。否则会被忽略。该标记绝不存储。 |
hp | 在站点所有者标记为蜜罐的页面上为 1,在标记为仅真人可到达的页面上为 0 | 仅在标记为高级机器人检测的页面上 | 值为 1 的请求绝不会成为访问或事件。它会被计为机器人,并且在具有高级机器人检测的套餐中,作为蜜罐点击保留。值为 0 的请求照常计数,只有我们自己的站点会保留一份副本作为训练样本。 |
ch | 在“确认您是真人”页面上为 1。站点会向随机的少数访客显示此页面,真人和机器人都一样 | 仅在标记为 data-hp="ch" 的页面上 | 值为 1 的请求绝不会成为访问或事件,也不会被计为机器人。在具有高级机器人检测的套餐中,它会和蜜罐点击保留在一起,并标记为验证。 |
a | 自动化工具名称:webdriver、phantom、nightmare 或 cypress | 仅在蜜罐或验证页面上检测到自动化浏览器时 | 与蜜罐点击一起保留。在其他任何地方都会被忽略。 |
tz | 时区名称,例如 America/Denver | 每个请求(在浏览器报告时) | 在内存中与请求所在国家/地区比较,用于机器人评分,随后丢弃。绝不与访问或事件一起存储,也绝不用作位置信息。仅与蜜罐点击或训练样本一起保留。 |
xp | 实验预览值,来自地址中的 pa_preview | 仅页面浏览,且地址中有 pa_preview 时 | 在内存中使用,用来显示预览的版本。该页面浏览不会计入实验。不存储。 |
p | 自定义属性 | 页面浏览和自定义事件 | 在 PII 脱敏后最多存储 30 个。收入和货币作为各自独立的字段存储。 |
e | 页面上的可见时长(毫秒) | 互动请求 | 存储,上限为 4 小时。 |
sd | 滚动深度(百分比) | 互动请求 | 以 10% 为一档存储。 |
n | 事件名称 | 自定义事件 | 存储,截断为 120 个字符。 |
v | Web Vitals 指标值 | 指标请求(Web Vitals 模块) | 与指标名称一起存储,仅针对一部分请求样本。 |
c | 被点击元素的简短 CSS 选择器,或站点为它起的名称 | 点击请求(点击图模块) | 存储,截断为 512 个字符。不含坐标或文本。 |
您的数据存放在哪里
美国境内的存储与处理,以及传输保障措施。
合规中心
GDPR、ePrivacy、美国各州法律等。
数据处理协议
已包含在我们的条款中。