@a2f0/ct-client

中文文档
0.1.8发布于 2026/11/06UNLICENSEDTypeScriptES Module零依赖构建来源已验证近 30 天下载 7507

明确初始化,带有浏览器选择退出支持的分批点击跟踪

中文使用文档

@ a2f0/ ct 客户端

无框架,分批点击跟踪. 导入或构建跟踪器开始 没有收听者、计时器、存储器或请求。 明确调用 已部署的浏览器靴子, 在精确检查注册生产后 或中转原产地; 避免使用共享组件和测试.

安装方式 bun add @a2f0/ct-client 或者说 npm install @a2f0/ct-client。 。 。 .

import { createTracker } from "@a2f0/ct-client";
const tracker = createTracker({
  site: "a2f0-net",
  app: "desktop",
  environment: "production",
  capture: "all",
  page: () => "/skyline-3d",
});
tracker.init();
await tracker.flush();
tracker.setOptOut(true);
tracker.destroy();

该地点必须登记在API的确切出处。 默认终点 实值 https://ct.a2f0.net/v1/点击。浏览器 MESM 已自成一体; TypeScript 类型 包含。 没有运行时间依赖. init 投放无效的站点/ 应用程序名称、 环境或端点 URL, 然后再添加听众 . 初始化跟踪器前验证配置 .

选项

选项默认行为
站点需求公共网站标识符,小写字母/数字/连字符
应用无效默认 App swit, 小写字母/数字/连字符, 1–64 个字符
环境服务器推断生产或中转; 必须与注册地点和确切来源相匹配
页 次() => '/'稳定路由模板,没有记录的ID或令牌,最多200个字符
捕获交互式所有元素、交互式控制或标记元素
批量大小20国每个请求1-50克
冲出相机5000块100至60 000毫秒
最大队列大小500个以批量大小和1,000为界
启用真实虚假使它变成惰性
覆盖Gpc虚假只有真忽略了全局隐私控制;其他选择退出仍然适用
结束点CT 结束点HTTPS, 或关于本地主机促进发展的 HTTP

抓取值为“ 全部” 、“ 交互式” 和“ 标记 ” 。 指定一个稳定的标签 data-ct="开通建设". 从不将用户内容放入此属性 。 使用 data-ct-ignore在元素或祖先上排除子树. 输入、文本区域、, 选择,并总是排除可编辑的内容。 打开影子DOM和SVG的工作.

将嵌入式应用程序包入 data-ct-app="skyline"中最接近的属性 点击的由路径构成的路径覆盖了跟踪器默认值,包括未标记的路径 画布在打开的阴影根内单击。 无效或空的最近属性 生成无效而不是继承另一个应用程序。 每个主机使用一个跟踪器 网站;网站保留 a2f0-net 而其桌面、天线和其他嵌入式 应用程序获得单独的应用程序值. 封闭的阴影根只暴露他们的宿主 跨原生的 iframe 点击需要该框架内部的跟踪器.

每个跟踪器固定环境,每批发送一次。 收藏家会得到 由注册网站和确切请求生成 值拒绝整个批次。 旧客户端可能忽略两个维度: app是 环境是无效的。 从不将用户数据放入应用程序名中. 初始化 仅涉及有意登记的生产或中产地,从未涉及当地, 预览、测试或自动页面.

init 拒绝 WebDriver 控制的浏览器: 它返回错误, 并添加无 听众 只有可信任的点击被捕获;合成的点击被忽略. 输入 是偶数,并返回当前是否允许抓取。 销毁删除 听取者, 中止请求, 并丢弃队列; 后进即可启动 再来一次 冲浪发送一个批次和时间表 剩余的工作。 网络错误, 超时, 408 和 429 重试并加盖回放; 其他 4xx 回复丢弃 被拒绝的批次。 事件ID使重试 象徵.

选择出去

设置 OptOut( true) 在 localStorage 中保存 ct: opt- out=1, 清除队列并停止 为这个网站捕获。 setOptOut(假)去除此偏好。 跟踪器 荣誉 DNT,全球隐私控制以及CT扩展的数据-ct-失效标记. 要明确仅覆盖全球隐私控制, 请通过覆盖Gpc: true to 在调用前创建 Tracker 。 违约是虚假的。 这适用于抓取 并且只交付给追踪器。 DNT, 保存和模拟的退出,扩展, 存储出错,自动浏览器守卫仍然无法跟踪. 选择退出无法撤回服务器已经收到的请求 。 存储出错 无法跟踪 。 扩展适用于所有地点,必须安装 每个浏览器/配置中分别显示。 首选项不同步 .

队列在记忆中 。 点击量满后会降低。 隐藏页面尝试 持续冲出,但关闭/挤出/下行导航可能会丢失未发送的事件. 这是最好的分析,不是审计线索或账单来源。 没有饼干, 访问者 ID 、 本地点击历史、 文本、 hrefs、 DOM ID 、 类或窗体值 由SDK收集。 页面默认为“/”所以动态的路由永远不会被推断.

默认的 CT 收藏器添加了全部请求的 IP 和 大致的国家, 州/地区,城市,大陆, 和时区 当一批货到达。 这些领域 最多储存了90天,可供提供设备的管理员在 认证仪表板和数据API. SDK没有发送仪表板证书。 IP可以链接活动;这不是匿名分析. 获得接受 即使明确启用了覆盖Gpc,批量还是收到此元数据. 见 收集数据政策 在决定向网站的访客披露什么时.

版本与发布记录

@a2f0/ct-client 共发布 10 个版本,首次发布于 2026/10/22;过去 12 个月发布了 10 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.8latest2026/11/061 天前
0.1.72026/11/043 天前
0.1.62026/10/2810 天前
0.1.52026/10/2315 天前
0.1.42026/10/2315 天前
0.1.32026/10/2315 天前

关于 @a2f0/ct-client 的常见问题

@a2f0/ct-client 是什么?

明确初始化,带有浏览器选择退出支持的分批点击跟踪

如何安装 @a2f0/ct-client?

在项目目录运行 npm install @a2f0/ct-client,或使用 pnpm add / yarn add / bun add。

@a2f0/ct-client 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@a2f0/ct-client 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@a2f0/ct-client 可以商用吗?

@a2f0/ct-client 使用 UNLICENSED 许可。作者声明为 UNLICENSED,即不授予公开使用许可(与公共领域的 Unlicense 不同)。使用前需获得作者授权。以上为概括,不构成法律意见,请以许可原文为准。

@a2f0/ct-client 的下载量有多少?

根据 npm 官方下载统计,@a2f0/ct-client 在 2026/10/05 – 2026/11/03 这 30 天内被下载 7,507 次,日均约 250 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@a2f0/ct-client 还在维护吗?

最新版本 0.1.8 发布于 2026/11/06(1 天前);至今共发布 10 个版本,其中过去 12 个月发布了 10 个;首次发布于 2026/10/22。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。