分析追踪:隐私优先的事件收集

本文解释了我们如何在尊重隐私并避免机器人流量的前提下追踪用户行为。

问题:理解用户行为

我们需要了解:

  • 用户访问了哪些页面

  • 他们查看了哪些产品

  • 流量来自何处(谷歌广告、自然搜索、社交媒体)

  • 哪些营销活动带来了转化

但我们必须避免:

  • 追踪机器人和爬虫

  • 存储个人身份信息

  • 违反隐私法规

解决方案:客户端 + 服务器端追踪

客户端:JavaScript 追踪

访客ID:存储在 Cookie 中的随机 ID(365 天)

会话ID:存储在 sessionStorage 中的随机 ID(直到浏览器关闭)

营销活动参数:从 URL 中提取并存储在 sessionStorage 中

追踪的参数

  • gclid - 谷歌点击 ID(搜索广告)

  • gbraid - 谷歌广告点击 ID(购物广告)

  • wbraid - 谷歌广告点击 ID(iOS)

  • fbclid - Facebook 点击 ID

  • srsltid - 谷歌自然搜索结果 ID

  • utm_source, utm_medium, utm_campaign, utm_term, utm_content

存储:参数存储在 Cookie 中(30 分钟),用于 WhatsApp/电话点击归因

服务器端:数据丰富化

服务器使用以下信息丰富事件:

GeoIP 数据:来自 IP 地址的国家、地区、城市

User-Agent 解析:浏览器、操作系统、设备类型

时间戳:服务器时间(UTC)

机器人检测:过滤已知的机器人 User-Agent

事件类型

页面浏览:用户访问页面

产品查看:用户查看产品页面

加入购物车:用户将产品加入购物车

结账:用户开始结账

购买:用户完成购买

WhatsApp 点击:用户点击 WhatsApp 按钮

电话点击:用户点击电话号码

数据流

sequenceDiagram
    participant User
    participant JS as JavaScript
    participant API as /api/analytics
    participant Firehose as Kinesis Firehose
    participant S3
    
    User->>JS: 访问页面
    JS->>JS: 提取 URL 参数
(gclid, utm_* 等) JS->>JS: 存储在 sessionStorage 中 JS->>API: POST 事件 + 参数 API->>API: 使用 GeoIP 丰富数据 API->>API: 解析 User-Agent API->>API: 过滤机器人 API->>Firehose: 发送丰富化后的事件 Firehose->>S3: 存储在分析存储桶中

机器人检测

我们使用多种信号过滤机器人流量:

User-Agent 模式:已知的机器人字符串(Googlebot, Bingbot 等)

行为模式:速度过快、请求过多

缺少 JavaScript:机器人通常不执行 JS

排除 Cookietv_exclude=true 会停止所有追踪

隐私保护

无 PII:我们从不存储姓名、电子邮件、电话号码

匿名化 IP:存储前移除 IP 地址最后一段

无跨站追踪:Cookie 仅为第一方

选择退出:用户可以设置排除 Cookie

数据保留:事件在 90 天后删除

条件化像素加载

我们仅在相关时加载追踪像素:

谷歌广告像素:仅当存在 gclidgbraidwbraid

LinkedIn 像素:仅当存在 msclkid

Facebook 像素:仅当存在 fbclid

好处:更快的页面加载,更少的追踪开销

流量来源检测

我们从 URL 参数中检测流量来源:

谷歌广告gclid, gbraid, wbraidutm_source=google_ads

谷歌自然搜索srsltidutm_source=google_search

Facebookfbclidutm_source=facebook

LinkedInmsclkidutm_source=linkedin

直接访问:无参数 → utm_source=direct

转化追踪

我们追踪整个漏斗中的转化:

产品查看加入购物车结账购买

每个步骤包括:

  • 访客 ID(用于归因)

  • 会话 ID(用于会话分析)

  • 营销活动参数(用于投资回报率计算)

  • 产品 SKU(用于产品分析)

潜在客户触点追踪

当用户联系我们(WhatsApp、电话、电子邮件)时,我们捕获:

联系方式:WhatsApp、电话、电子邮件

营销活动参数:来自 Cookie(30 分钟窗口期)

产品上下文:他们当时在哪个产品页面

好处:将线下转化归因于线上营销活动

速率限制

分析端点设有速率限制:

限制:每个 IP 每 10 分钟 100 个请求

好处:防止滥用和机器人洪水攻击

存储

事件通过 Kinesis Firehose 存储在 S3 中:

格式:JSON 行(每行一个事件)

分区:按日期(年/月/日/小时)

压缩:Gzip

保留期:90 天

查询

事件通过 AWS Athena 查询:

模式:在 Glue Data Catalog 中定义

查询:对 S3 数据的 SQL 查询

用例:营销活动投资回报率、产品受欢迎程度、流量来源

参考资料

技术概念

AWS 服务

相关文章

总结

我们的分析系统在尊重隐私的同时追踪用户行为:

客户端

  • ✅ 从 URL 中提取营销活动参数

  • ✅ 存储在 sessionStorage 中(会话范围)

  • ✅ 存储在 Cookie 中(30 分钟用于归因)

  • ✅ 将事件发送到 API

服务器端

  • ✅ 使用 GeoIP 和 User-Agent 丰富数据

  • ✅ 过滤机器人流量

  • ✅ 发送到 Kinesis Firehose

  • ✅ 存储在 S3 中(按日期分区)

隐私

  • ✅ 不存储 PII

  • ✅ IP 地址匿名化

  • ✅ 仅使用第一方 Cookie

  • ✅ 提供选择退出选项

  • ✅ 90 天保留期

条件化加载

  • ✅ 仅当存在 gclid 时加载谷歌广告像素

  • ✅ 仅当存在 msclkid 时加载 LinkedIn 像素

  • ✅ 仅当存在 fbclid 时加载 Facebook 像素

这种方法在洞察力、隐私和性能之间取得了平衡。


← 返回文档索引