Wasp 官网隐私政策与数据收集实践:从 Cookie 同意机制到 PostHog 分析的完整解析
2026/9/14 19:35:13 网站建设 项目流程

Wasp 官网隐私政策与数据收集实践:从 Cookie 同意机制到 PostHog 分析的完整解析

【免费下载链接】waspThe batteries-included full-stack framework for the AI era. Develop JS/TS web apps (React, Node.js, and Prisma) using declarative code that abstracts away complex full-stack features like auth, background jobs, RPC, email sending, end-to-end type safety, single-command deployment, and more.项目地址: https://gitcode.com/GitHub_Trending/wa/wasp

导读

本文以 Wasp 仓库中官网(wasp.sh)的 隐私政策文档 为骨架,逐节解析 Wasp Inc. 收集哪些数据、如何收集、如何存储与保护,并将政策条款与仓库内真实的实现源码(Cookie 同意横幅、PostHog 分析脚本、脚本按需加载机制)一一对应,帮助你既理解这份 GDPR 风格隐私政策的法律语义,也看清其背后「隐私条款 → 前端实现 → 数据链路」的工程全貌。


一、隐私政策概览:文档定位与适用前提

该文档位于web/src/pages/privacy-policy.md,是 Wasp Inc. 官网(https://wasp.sh)对外公开的正式隐私政策页面。其 frontmatter 声明了页面元信息:

  • title: Privacy Policy
  • description: Privacy Policy for Wasp Inc.
  • hide_table_of_contents: true(隐藏目录侧边栏,保持页面简洁)

政策本身由 Wasp Inc.("we"/"our"/"us")发布,最近更新时间为2026-01-13,适用范围限定于访问 wasp.sh 网站的用户行为。文中明确写道:「如果您不同意本隐私政策的条款,请勿访问本网站」,这是典型的 GDPR 合规文案结构(政策末尾也注明其基于 GDPR.eu 提供的隐私通知模板撰写)。

从工程角度看,这份政策并非孤立的法律文本——它描述的每一项数据实践(Cookie、分析工具、第三方服务)都能在仓库的web/站点源码中找到对应实现,本文后续章节将逐项建立「条款 ↔ 代码」的对应关系。

二、数据收集:收集什么、如何收集

2.1 收集的数据类型

政策声明 Wasp Inc. 收集以下四类个人数据:

数据类型说明
IP 地址用于定位访问来源与基本网络信息
浏览器类型识别用户使用的浏览器与客户端环境
访问页面记录用户访问了站点的哪些页面
页面停留时间衡量用户在页面上的停留时长

这四类数据共同构成了网站流量分析的基础指标,属于典型的「访问分析型」数据集合,不包含姓名、邮箱等主动提交的身份信息。

2.2 收集方式

政策指出,用户通过浏览器 Cookie直接提供了大部分数据——当用户使用或浏览网站时,数据经由 Cookie 被采集。也就是说,该站点采用「默认被动埋点 + 用户主动访问触发」的方式采集上述匿名化程度较高的行为数据。

三、数据的使用与第三方服务

3.1 使用目的

收集到的数据仅用于三个目的:

  1. 分析网站流量(Analyze website traffic)
  2. 改进网站体验(Improve our website)
  3. 理解访客如何使用站点(Understand how visitors use our site)

3.2 第三方服务:PostHog

政策明确列出的第三方服务是PostHog(产品分析平台)。政策强调:

  • 第三方服务商拥有各自的隐私政策,用户应自行查阅;
  • Wasp Inc. 仅在「提供服务所必需」的范围内与第三方共享信息;
  • 第三方有义务对信息保密并确保安全。

源码印证:PostHog 的实际接入位于 web/static/scripts/posthog.js。该文件是 PostHog 官方加载器的压缩版(含posthog.init桩方法注册),并在文件末尾以项目密钥完成初始化:

posthog.init("CdDd2A0jKTI2vFAsrI9JWm3MqpOcgHz1bMyogAcwsE4", { api_host: "https://us.i.posthog.com", person_profiles: "identified_only", });

两个关键配置值得注意:

  • api_host指向 PostHog 的 US 数据节点(us.i.posthog.com),即采集数据发送到该地址;
  • person_profiles: "identified_only"意味着 PostHog只为已识别(identified)的用户创建人物档案,匿名访客的页面浏览不会自动生成可关联的个人画像——这与政策中「仅收集 IP、浏览器类型、访问页面、停留时间」的轻量采集口径是自洽的。

3.3 站点脚本加载的整体编排

在 web/docusaurus.config.ts 中,可以看到生产环境(prodOnlyScripts)的两类分析脚本及其不同的同意策略:

脚本来源requiresConsent原因
Plausible 代理脚本/waspara/wasp/script.js(经 Cloudflare Workers 代理)false注释明确说明 Plausible 不使用 Cookie,因此可立即加载
PostHog 脚本/scripts/posthog.jstrue涉及 Cookie 采集,须等待用户同意后才加载

实现上,mapToDocusaurusScripts会对需要同意的脚本设置自定义type属性(text/javascript+requires-consent),使其默认不被浏览器自动执行

// Scripts requiring consent shouldn't be loaded until the cookies are accepted, // so we use a custom type on the script _not to load it_ automatically. // Later, if cookies are accepted, the script will be loaded by the // `src/components/CookieConsentBanner.tsx` component. ...(requiresConsent ? { type: SCRIPT_WITH_CONSENT_TYPE } : {}),

这也解释了隐私政策中「我们通过 Cookie 收集数据」的具体机制:只有用户接受 Cookie 后,PostHog 埋点脚本才会被真正加载并开始采集

四、Cookie 同意机制:从条款到源码

4.1 同意横幅组件

政策要求用户知情同意,其落地实现是 web/src/components/CookieConsentBanner.tsx。该组件基于react-cookie-consent库构建,提供:

  • Accept all / Reject all两个按钮(enableDeclineButton开启拒绝选项);
  • 明确的说明文案:"We use cookies primarily for analytics to enhance your experience...",并链接到/privacy-policy页面供用户进一步了解;
  • 自定义 Cookie 名称:wasp-cookies-consent

4.2 同意状态驱动的脚本加载

组件核心逻辑是一个loadScripts函数与useEffect的组合:

const CONSENT_COOKIE_NAME = "wasp-cookies-consent"; useEffect(() => { if (Cookies.get(CONSENT_COOKIE_NAME) === "true") { loadScripts(); } }, []);

当用户点击接受(onAccept={loadScripts})或此前已同意(Cookie 值为"true")时,loadScripts会遍历页面中所有type="text/javascript+requires-consent"的脚本标签,通过「移除节点 → 将 type 改为text/javascript→ 重新挂载」的方式触发浏览器执行:

function loadScripts() { document .querySelectorAll(`script[type="${SCRIPT_WITH_CONSENT_TYPE}"]`) .forEach((el) => { // We need to reattach the element so that the browser picks up the new `type`. const parent = el.parentNode; parent.removeChild(el); el.setAttribute("type", "text/javascript"); parent.appendChild(el); }); }

自定义脚本类型常量定义在 web/src/lib/cookie-consent.ts:

export const SCRIPT_WITH_CONSENT_TYPE = "text/javascript+requires-consent";

4.3 拒绝后的行为

如果用户选择Reject all,则wasp-cookies-consent不会被置为"true",PostHog 脚本始终保持text/javascript+requires-consent类型而永不执行,从而做到「零分析埋点」。这正对应政策中用户可管理 Cookie 偏好的承诺。

五、数据存储与安全

政策在「数据如何存储」一节声明了两层保障:

  1. 安全措施
    • SSL/TLS 加密(传输层加密,保护数据在浏览器与服务器之间传输);
    • 安全云基础设施(托管层面的防护)。
  2. 数据保留:个人数据仅保留「实现本政策所述目的所必需」的时长;期限届满后,数据将被安全删除。

需要说明的是,政策对具体的保留周期(如多少天、多少个月)未作硬性数字承诺,而是以「目的达成即删除」的原则性表述为主——这也是 GDPR 框架下常见的做法。

六、营销与选择退出

政策声明 Wasp Inc. 希望向用户发送其可能感兴趣的产品与服务信息,但强调:

  • 用户有权在任何时候停止接收营销联系;
  • 若用户此前同意接收营销,可随时选择退出;
  • 退出或咨询途径:发送邮件至info@wasp-lang.dev

这一节体现了「同意可撤销」原则:即便营销沟通基于用户同意,该同意也可以被随时撤回,且撤回方式透明(一个联系邮箱即可)。

七、数据保护权利:GDPR 六大权利详解

政策明确赋予每位用户以下六项数据保护权利,全部源自 GDPR(欧盟《通用数据保护条例》)的框架:

权利内容
访问权(Access)请求获取个人数据的副本,服务方可能收取少量费用
更正权(Rectification)请求纠正不准确的信息,或补全不完整的信息
删除权(Erasure)在特定条件下请求删除个人数据
限制处理权(Restrict processing)在特定条件下请求限制对个人数据的处理
反对处理权(Object to processing)在特定条件下反对对其个人数据的处理
数据可携带权(Data portability)请求将已收集的数据转移给其他组织,或直接转交给用户本人

政策同时承诺:用户提出请求后,Wasp Inc. 将在一个月内作出回应。行使权利的途径包括:

  • 邮箱:info@wasp-lang.dev
  • 地址:2261 Market Street, San Francisco, CA 94114

八、Cookie 详解与管理

8.1 什么是 Cookie

政策将 Cookie 定义为「放置在用户计算机上的文本文件」,用于收集标准的互联网日志信息与访客行为信息。网站可能通过 Cookie 或类似技术自动收集信息。

8.2 网站如何使用 Cookie

Wasp Inc. 使用两类 Cookie 以改进网站体验:

  • 功能性 Cookie(Functional cookies):保持登录状态、记住用户偏好;
  • 分析型 Cookie(Analytics cookies):理解用户如何使用网站,以改进服务。

8.3 管理 Cookie

用户可以通过浏览器设置拒绝接受 Cookie,或清除浏览器中已有的 Cookie(政策引用了第三方资源 allaboutcookies.org 的操作指引)。政策同时给出诚实的前提提示:在少数情况下,部分网站功能可能因 Cookie 被禁用而无法正常工作

这与仓库实现中的两个事实相互印证:

  1. 拒绝 Cookie 会导致 PostHog 分析脚本不加载(见第四章),但网站核心功能(如文档浏览)不受影响,因为核心脚本requiresConsent: false
  2. 功能性 Cookie(如记住偏好)若被拒绝,个性化体验会相应降级。

九、第三方网站链接与政策变更

  • 第三方网站:网站可能包含指向其他网站的链接,但本隐私政策仅适用于 wasp.sh 自身;用户点击外部链接后,应查阅目标网站自己的隐私政策。
  • 政策变更:Wasp Inc. 会定期审查本政策,并将任何更新发布在当前页面;最近一次更新日期为 2026-01-13。用户可通过查看页面顶部的日期戳确认最新版本。

十、如何联系我们与投诉渠道

政策提供了两级联系/救济渠道:

  1. 直接联系 Wasp Inc.:对隐私政策、持有的个人数据或行使数据权利有任何疑问,可发送邮件至info@wasp-lang.dev或邮寄至 2261 Market Street, San Francisco, CA 94114;
  2. 联系监管机构:若用户认为问题未得到满意解决,可向其当地的数据保护监管机构(data protection supervisory authority)提交投诉——这是 GDPR 下的标准救济路径。

附:网站隐私与 Wasp CLI 遥测的边界

值得一并厘清的是:上述隐私政策仅覆盖wasp.sh 网站的数据采集,而 Wasp 命令行工具(waspCLI)自身还有一套独立的、面向框架使用者的**遥测(Telemetry)**机制,详见 web/docs/telemetry.md。

两者是相互独立的体系:

维度网站隐私政策CLI 遥测
数据来源wasp.sh 站点访问行为wasp命令执行
采集内容IP、浏览器、页面、停留时间随机 UUID(distinct_id)、项目哈希(project_hash)、命令类型、wasp_version、OS、上下文
发送方式PostHog 脚本(需 Cookie 同意)HTTPS 请求,每 12 小时最多发送 3 次
退出方式浏览器拒绝 Cookie / 拒绝按钮设置环境变量WASP_TELEMETRY_DISABLE=1

CLI 遥测明确声明其数据是匿名化(anonymized)且范围极有限的:distinct_id为随机生成的、不可识别的 UUID,project_hash为不可识别的项目哈希,部署参数仅保留预定义关键词白名单(flyrailwaysetupcreate-dbdeploycmdlaunch)中的内容。这与网站隐私政策「轻量采集」的总体取向保持一致,共同构成了 Wasp 在数据隐私层面的完整实践。


参考文件索引

  • 隐私政策原文
  • Cookie 同意横幅组件
  • Cookie 同意脚本类型常量
  • 站点脚本加载配置
  • PostHog 分析脚本
  • Wasp CLI 遥测说明

【免费下载链接】waspThe batteries-included full-stack framework for the AI era. Develop JS/TS web apps (React, Node.js, and Prisma) using declarative code that abstracts away complex full-stack features like auth, background jobs, RPC, email sending, end-to-end type safety, single-command deployment, and more.项目地址: https://gitcode.com/GitHub_Trending/wa/wasp

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询