控制台用登录 Cookie,服务端调用用 API 密钥,浏览器采集两者都不带。接口认证细节见 认证与密钥。
传输
控制台、采集脚本和 /api/v1 按部署使用 HTTPS。登录成功后写入名为 wc_session 的 Cookie:HttpOnly、SameSite 为 Lax、有效期 14 天。是否带 Secure 由部署的 Cookie 配置决定。两步验证开启时,密码通过之后还要票据和验证码才会写这枚 Cookie,见 账号与团队。
浏览器采集不带这枚 Cookie。w.js 用 sendBeacon 或 fetch(不带凭据)把事件送到 /api/v1/pulse。
密钥
API 密钥在 控制台配置设置API 密钥 创建,前缀 wck_,完整值只显示一次。调用时放在 Authorization: Bearer 后面。权限是一份范围列表,例如 track:write、stats:read、privacy:write,* 表示全部。密钥可以绑在一个项目上,也可以跟着用户、再按该用户在各项目的成员身份判断能不能访问。
密钥不是站点标识。站点标识写在网页脚本里,可以公开;密钥能写数据或读报表,只能放在服务端。怀疑泄露时在控制台撤销,再换一把。提交支持问题时不要粘贴完整密钥,见 联系支持。
谁能看什么
项目角色决定控制台能点开的页,见 账号与团队。开放接口再查一遍密钥范围和项目成员关系:范围不够是 403 / SCOPE_FORBIDDEN,不是这个项目的成员是 403 / SITE_FORBIDDEN。
报表还可以按成员收窄到某些渠道、平台、主机名,并隐藏属性、套上脱敏。所有者不套这层范围。
采集端不信任浏览器里带来的身份和档位。档位、同意、机器人、额度和域名都在服务端再判一次。脚本里的混淆不能代替这次判断。
失败时各端怎么处理
三端的严宽不同,避免把一次字段错误变成永久丢数或把聊天打断:
- 采集端宽松。坏字段丢掉、好字段留下,拒绝也返回
202。无人值守的页面看不到错误,也没法当场重试。 - 客服连接中等。结构字段错了会拒绝这一条;内容超长则截断后继续,避免访客因为一条状态包断线。
- 管理接口严格。类型不对、超长、不在枚举里,整请求
400,code为VALIDATION,并带问题列表。未知字段丢掉,不因为多了一个键就失败。
限流在密钥、IP 和站点上分别计数。打满开放接口得到 429。打满采集得到 202 且该条不入库。见 速率限制 与 API 401 / 403 / 429。
审计
成员的加入、角色变更和移除,两步验证的开启、关闭和恢复码使用,隐私配置的变更,都会写审计。项目里 控制台配置设置审计日志 可以查看,并导出 CSV、NDJSON 或 JSON(单次最多 5 万条)。范围包括成员与权限、站点与隐私、数据治理、导出和登录。
地址不进事件库。限流用的 IP 键是截断或 HMAC 之后的值,用来挡洪水,不是一条可反查的访问日志。地理只保留策略允许的国家或城市字段,见 隐私与合规中心。