隐私与分析

我们会发送什么——不会发送什么

尽量简短。下面用平实的话说明这段代码实际做了什么。

一、最简短版本

Turning Lines 转爻只在你明确同意之后,才会启用 Google Analytics 4 的访问计数与 Microsoft Clarity 的会话回放。 在你同意之前,本站不会加载这两家的任何标签, 也不会向 googletagmanager.com、 google-analytics.com 或 clarity.ms 发出任何请求。

这两个工具互相独立。GA4 只接收 32 个白名单事件(下文); Clarity 录制渲染出来的页面 DOM、点击、滚动、URL 与 来源链接。它们共用同一个同意 gate,但每家看到的是 你访问的不同切片。

你写的问题、所起的卦、保存的历史,都只存在本浏览器的 localStorage 里 —— 它们不会出现在 GA4 事件层, 也不会作为自定义 Clarity 标签被发送。但 Clarity 会录制 渲染出的 DOM(除非元素带有 data-clarity-mask="true" 属性),也会带上页面 URL,所以未保存的、还在输入中的问题也可能出现在 Clarity 的回放里。GA4 允许列表见第三节,GA4 自身额外采集的内容见 第三节·补,Clarity 自身看到的范围见第八节。

唯一的例外,是首页起卦台下方那个「简短回访」表单上的 三道封闭式多选题 —— intent_category、 helpfulness 和 would_return。 在你同意分析之后,提交表单时这三道题的答案会作为一条 feedback_submitted 事件发给 Google。

二、只在你同意后才会发送什么

在你同意之后,本站可能发送:

  • 32 个 GA4 白名单事件,分五个家族:24 个核心起卦与 页面互动事件(question_input_started、question_committed、question_skipped、reading_started、reading_progress_half、reading_completed、reading_reset_before_complete、results_engaged、calculation_opened、copy_result_clicked、copy_result_succeeded、copy_result_failed、cast_mode_selected、manual_mode_selected、feedback_submitted、hero_primary_cta_clicked、hero_method_cta_clicked、method_section_viewed、supporting_content_viewed、faq_opened、history_section_viewed、history_reading_opened),2 个区块可见信号(workbench_visible、results_reflection_visible),2 个爻级归因事件(reading_line_recorded、reading_line_undone), 5 个学习与内容事件(feedback_started、content_engaged、guide_to_reading、diagram_interacted、language_switched),以及 page_view。 列表之外的事件会被静默丢弃。
  • 区块可见信号:两个事件 (workbench_visible、results_reflection_visible)用来告诉我们, 访客是否真的把起卦台或反思段落滚动进了视窗—— 与任何点击都无关。它们只携带下面四个封闭式枚举维度—— 不会包含问题文本、卦象、邮箱或任何识别信息。
  • 四个非识别性参数,每个事件都会带上: 页面的 content_language(en 或 zh-CN)、粗粒度的 page_id、 来自 referrer 主机名本地分桶的 source_category(direct / search / social / referral / unknown),以及来自视口宽度本地分桶的 device_class(mobile / tablet / desktop)。
  • 搜索来源归因:如果来源是可识别的搜索引擎,page_referrer 只会使用该搜索引擎的固定首页地址 (例如 https://www.google.com/);其他来源则为空。 不会发送原始来源路径、搜索词、锚点或任意引荐网站地址给 GA4。
  • feedback_submitted 还附带三个额外的枚举参数: intent_category、helpfulness(1–5)、would_return(yes / maybe / no)。三者都是封闭枚举。
  • diagram_interacted 还会带一个额外的 diagram_id 参数,值取自一份封闭注册表 (coin_to_hexagram)。六掷卦图还会以id="six-throw-diagram" 暴露自己;这两个属性 会被映射到同一个 diagram_id 枚举值。未知 id 会被丢弃。
  • 内容参与信号:5 个学习事件仅用于衡量 访问者是否真正「读进去了」——是否停留了较长时间、是否 切换了语言、是否从指南页进入了起卦台、是否与已知的图解 区域发生过交互。它们只记录粗粒度的页面级参与行为—— 不会发送你写的问题、所起的卦、反馈里输入的文本、邮箱 地址,也不会捕获任何按键或表单取值。
  • 爻级别的归因信号:两个爻级事件(reading_line_recorded、reading_line_undone) 以及在 reading_started、reading_progress_half、reading_reset_before_complete、copy_result_failed上新增的几个封闭枚举参数。被接受的参数仅有:reading_mode(cast / enter)、input_method(manual_coins / random_cast / manual_entry)、line_position(1…6)、progress_bucket(early / half /late / complete)、failure_reason(clipboard_unavailable / clipboard_rejected /unknown)。封闭集合之外的值会被静默丢弃。我们 永远不会发送硬币面、爻值(6/7/8/9)、卦序号、你写的问题文本、 原始错误消息或调用栈。

三、GA4 事件层永远不会发送的内容

下面这些项目不出现在 GA4 事件层(上一节的 32 个事件)。 Clarity 单独的 DOM 回放范围见第八节。

  • 你写的问题原文。
  • 卦序编号、六爻值、变卦、动爻。
  • 阅读历史(笔记、复盘、日期)。
  • 你的邮箱地址。反馈表单不再收集邮箱。
  • 任何自由文本回复。反馈表单也不再收集。
  • 完整的来源 URL,包括任何搜索词。
  • 完整的当前 URL。即使上报 page_location,其值也来自一份封闭的路径白名单——64 个卦详情 URL 都会归并为 /hexagrams,具体的卦序号永远不会发给 Google;查询字符串和锚点也永远不会发送。
  • 原始视口宽度或高度。

反馈表单只有三道封闭式的多选题。在你同意并提交之后, 这三道题的答案会作为 feedback_submitted 事件 发出去。表单里没有自由文本字段,也就没有可发送的自由 文本回复。

三·补、同意之后 Google Analytics 4 自己会收到什么

一旦你同意,Google Analytics 4 的标签就会加载。 GA4 自身会按照它本身的设计,自动收集任何 GA4 资源在公网上都会收集的那些信息:访客的 IP 地址、 User-Agent、设备的粗粒度类别、浏览器类别,以及 一个保存了随机生成的假名 client ID 的 _ga cookie,这个 client ID 能把同一个浏览器上的多次访问 关联起来。Google 在 GA4 cookie 用途说明里公开描述了这一点。

根据 Google 自己的说明,GA4 不会在它的分析服务器上 记录或保存完整的 IP 地址——见 IP 匿名化说明。我们不会把由此产生的数据称为「完全匿名」: 它是假名化的、能在同一浏览器内被关联的, 并由 Google 作为本资源的数据处理方来处理。

四、同意与撤回如何运作

首次访问时,页面底部的横幅会询问你是否同意启用分析与 会话回放。默认是拒绝:如果什么都不做, 不会发送任何东西。你的选择只存在本浏览器里; 清空浏览器存储即可清除。

随时可以从页脚的"隐私与分析 → 设置"链接重新打开对话框。 对话框会分别显示两个工具的当前状态、各自设置的 cookie 与撤回路径。

撤回同意会做三件事:

  • 把 Google 标签的 analytics_storage 改回 denied,并尝试清除本站能触及的 _ga、_gid 等相关 cookie;
  • 发送 Microsoft Clarity 的官方 consentv2 拒绝信号(ad_Storage 与 analytics_Storage 都设为 denied),并调用 Clarity 文档化的 clarity("consent", false) —— 即 Microsoft 官方用来清掉 Clarity cookie 并停止继续跟踪的 API 调用;
  • 重新加载本页面。重新加载是本站的工程选择 —— 我们不假装 Microsoft 文档承诺「重新加载就一定能停掉所有回放」,也不打包这种承诺。consent(false) + consentv2 拒绝 + 重新加载这一组合,是我们能提供的最强合约:重新加载后,同意存储会重新评估持久化的「denied」,Clarity 标签不会被重新注入。Clarity 在本站自身源下设置的第一方 cookie(loader 能触及的 _clck / _clsk)属于 consent(false) 的官方清理范围;而 Clarity 在 clarity.ms / microsoft.com 域下设置的第三方 cookie(如 CLID、ANONCHK、MR、MUID、SM)本站无法触及 —— 希望清除它们的访客应使用浏览器针对这些域的站点数据控件。

五、分析绝不会被用于

  • 广告个性化——ad_storage、ad_user_data、ad_personalization 始终处于 denied。
  • 在其他网站上建立你的画像。
  • 出售你的数据。本站不会出售本站所收集或产生的任何数据。

备注:Google Analytics 本身是本站的数据处理方。 在你同意之后,Google 会收到上面的事件,并按 Google 自己的条款与隐私政策处理。除此之外, 我们不会再把这些事件分享给任何其他人。

六、Google 与 Microsoft 作为处理方

如果你同意,Google 会作为上文 GA4 事件的数据处理方; Microsoft Clarity 会作为下文第八节会话回放的独立数据 处理方。两家各家的条款与隐私政策会在数据到达他们 服务器的那一刻起适用。各家的文档说明了支持的范围 以及如何从他们那一侧管理这些数据。

七、联系

本站部署于 ichingonline.site。 本站不设联系表单,页脚也不会索取邮箱。

如果你想在读完一卦后给个反馈,首页起卦台下方有一个 小的「简短回访」表单。表单只提供三道封闭式多选题 —— intent_category、helpfulness 和 would_return,没有自由文本或留言字段。 这三道题的答案会作为一条 feedback_submitted 事件发给 Google,而且只有在你同意分析之后才会发送, 所以请不要选你不希望 Google 收到的选项。这个表单 也不接受任何形式的留言、评论或便条。

如果你在分析脚本还在加载时提交,三道题的答案会先 留在本浏览器,等脚本加载完成后再发出——表单保持 可见,并显示一句简短的「已排队,等待发出」提示, 不会假装已经把答案发出去。在脚本真正就绪、答案被 Google 实际收到之前,什么都不会离开你的浏览器。

随时都可以从页脚的「隐私与分析 → 设置」重新打开 对话框、修改或撤回同意。你的选择只存在本浏览器里。

八、Microsoft Clarity 会话回放(与 GA4 分开)

Microsoft Clarity 是一项与 Google Analytics 独立的会话回放 工具。同一个同意选择会决定两者,但每家看到的是你访问 的不同切片;Clarity 仅在服务器上配置了 Clarity Project ID 的情况下才会加载。如果 Project ID 未配置(默认情况, 也就是新克隆出来的版本),即使你已经同意分析, 也永远不会有请求发往 clarity.ms —— 当前 状态可以从页脚的「隐私与分析 → 设置」中确认。

如果 Clarity Project ID 有配置,且你已经同意分析, Clarity 自己(不是本站)会采集:

  • 当前页面 URL(完整的 location.href,包括 Clarity 在录制时能读取到的路径 / 查询字符串 / 锚点);
  • 页面 referrer(完整的 document.referrer —— 也就是你从哪个 URL 跳转过来);
  • 鼠标点击、滚动等 UI 交互;
  • 渲染出的页面 DOM(受本站的 data-clarity-mask 属性约束);
  • 假名化的第一方 cookie(_clck、_clsk)以及一个假名化浏览器标识符,后者能跨次访问关联同一浏览器的活动。详见 Clarity 官方 cookies 说明;此外还有 Clarity 在 clarity.ms / microsoft.com 域下设置的第三方 cookie(如 CLID、ANONCHK、MR、MUID、SM),本站无法从自身源触及它们。

Clarity 自己也能解读点击 —— 哪个目标在哪个按钮上, 可以由点击坐标加上邻近的遮罩/未遮罩区域推断出来。 所以即便点击位置紧挨着一个被遮罩的输入框,这种交互 也能传递可推断的信息。data-clarity-mask属性可以抑制元素的可见文字,但无法隐藏元素的形状与位置。

本站不会向 Clarity 推送自定义标签—— 也就是不会调用 clarity("set", ...) 传入 访客的问题、卦序、阅读笔记、Google Analytics 的 client ID, 或任何自定义的用户/会话标识符。Clarity 自己的代码片段 会生成它的假名化会话 ID —— 我们不会去定制它, 也不会假装它不存在。

本站还在敏感区域上加了 data-clarity-mask="true" 属性(Clarity 的遮罩合约会读取这个属性),用来抑制它原本 会录到的可见文字。被遮挡的区域包括:

  • 首页的自由文本问题输入框。
  • 起卦台结果上方的「你写的问题」回显块。
  • 整个起卦台工作台(卦图、动爻列表、起卦细节、五段反思、封闭式反馈表单)。
  • 阅读历史列表的每一行、完整的详情面板、回显出的历史问题,以及三段自由文本笔记(选择、变化、领悟)。

掷爻按钮、进度导航、同意横幅、设置弹窗、语言切换器 以及页脚链接则有意不遮挡——回放仍能体现 访客的点击路径。Clarity 自带的输入遮罩已覆盖表单输入框; 上面的 data-clarity-mask 属性则把遮罩扩展到 本站阅读相关的 DOM。

撤回合约。撤回分析同意会按顺序做三件事: (1) 发送官方 Clarity consentv2 拒绝信号 (ad_Storage 与 analytics_Storage 都为 denied),(2) 调用 Clarity 文档化的 clarity("consent", false) —— 即 Microsoft 官方用来清掉 Clarity 第一方 cookie 并停止继续跟踪的 API 调用,(3) 重新加载本页面,让 gate 重新读取持久化的「denied」, Clarity 标签不会被重新注入。我们不假装 Microsoft 文档承诺 仅靠「重新加载」就能停掉每一次回放;consent(false) + consentv2 拒绝 + 重新加载的组合,是我们能提供的最强合约。Clarity 在本站自身源 下设置的第一方 cookie(_clck / _clsk) 属于 consent(false) 的官方清理范围;Clarity 在clarity.ms / microsoft.com 域下设置的 第三方 cookie(如 CLID、ANONCHK、MR、MUID、SM)本站无法触及, 想清除它们的访客应使用浏览器针对这些域的站点数据控件。

想立刻撤回,可以重新打开页脚的「隐私与分析 → 设置」 弹窗,选「撤回同意」。你的选择只存在本浏览器里。

Microsoft 是任何被录制的 Clarity 回放的处理方。 一旦数据到达 Microsoft 的服务器,他们自己的条款与隐私政策 就会适用。