社区讨论LinuxDo 最新
详细扒一下A出是怎么监控你的
以Claude Desktop 2.19675.0.0为例 一.a出什么时候会扒一遍你的数据 主要入口是一个 logEvent(事件名, 事件专属字段, 可选参数) 只有执行到具体记录点才会产生对应事件 包括但不限于: 类型 触发条件或实例 启动和登录 初始激活、启动时登录状态检查、登录回调、登录失败、账号切换 窗口和页面 主界面加载失败、HTTP 错误、失败后恢复、重试耗尽、无响应、渲染进程退出 用户操作 打开快捷输入、提交快捷输入、点击启动按钮、通知交互、部分预览和文件操作 更新 开始检查、发现更新、下载完成…
内容摘要
作者:#Carolus
板块:#开发调优
以Claude Desktop 2.19675.0.0为例
一.a出什么时候会扒一遍你的数据
主要入口是一个
logEvent(事件名, 事件专属字段, 可选参数)
只有执行到具体记录点才会产生对应事件
包括但不限于:
类型
触发条件或实例
启动和登录
初始激活、启动时登录状态检查、登录回调、登录失败、账号切换
窗口和页面
主界面加载失败、HTTP 错误、失败后恢复、重试耗尽、无响应、渲染进程退出
用户操作
打开快捷输入、提交快捷输入、点击启动按钮、通知交互、部分预览和文件操作
更新
开始检查、发现更新、下载完成、安装、更新错误、回滚
Code/Cowork
CLI 安装和准备、会话相关操作、工具或插件状态、VM 状态
SSH
连接成功或失败、跳过后台连接、断开、重连尝试、重连成功、需要用户认证、唤醒探测
性能和后台诊断
内存采样、内存越过阈值、事件循环卡顿、GPU 状态或进程退出
配置和策略
管理配置检测、配置读取失败、权限或策略决策
功能实验
使用某项功能开关、命中实验及其分组
退出
退出清理超时、看门狗触发,以及下次启动时报告上次退出清理摘要
二. 具体会采集你的哪些信息
一个事件的大致结构如下:
{
"events": [
{
"event_type": "TelemetryEvent",
"event_data": {
"event_name": "desktop_ssh_connected",
"timestamp": "事件构建时的 UTC 时间",
"user_properties": {
"user_id": "账号 UUID,无法取得时为 anonymous"
},
"metadata": "经过过滤后的元数据 JSON 字符串",
"auth": {
"organization_uuid": "组织 UUID,存在才加入",
"account_uuid": "账号 UUID,存在才加入"
}
}
}
]
}
以及在每个普通事件中都会尝试采集以下公共字段(仅列出可能被a出用于构建用户画像的信息,除此之外还有很多通用信息),受过滤和序列化影响,不一定每次都全部上传
1.你的项目目录、Git 仓库、SSH 主机
字段
本地读取的原始信息
进入事件的形式
folder_hash
规范化后的工作目录;远程场景包含远程主机键与目录
哈希
host_hash
SSH 主机与端口组成的键,或 WSL 发行版标识
哈希
repo_hash
Git origin 解析出的主机、owner、仓库名
哈希
is_git_repo
工作目录是否处于 Git 仓库中
布尔值
实际算法是:
SHA-256(
本地随机盐 + NUL +
身份字符串 + NUL +
待标识对象
)
//取十六进制结果前 16 位
2.GPU、显示器和运行环境
信息
普通事件里的形式
GPU 厂商
已知厂商类别,无法识别时归为 other/unknown
GPU 数量
有上限的数量
硬件加速设置
设置状态
GPU 合成/光栅化
功能状态
GPU 重启
次数、距上次重启时间
显示器数量
有上限的数量
刷新率
le60、61_100、101_144、gt144 等档位
多显示器刷新率是否不同
布尔值
缩放比例
1、1_to_2、2、gt2 等档位
3.IP、MAC、网卡与 VPN
信息
读取与用途
目前找到的去向
网卡名称、地址族、本地 IP、MAC
SSH 控制器通过 networkInterfaces() 读取,检测网络接口变化
本地比较、触发 SSH 探测/重连;未在该路径证明原始地址上传
VPN 接口名
macOS 调用 ifconfig,匹配 utun、ppp、ipsec、tun
VM 启动失败诊断
已连接 VPN 的名称
macOS 调用 scutil --nc list
本地诊断日志;也进入失败事件的过滤流程
网桥/虚拟网卡名
macOS 调用 ifconfig -a
同上
VPN 是否处于连接状态
根据诊断结果计算
vpn_active
可用磁盘空间
VM 故障诊断辅助函数
available_disk_space_bytes
4.设备注册、公钥、硬件保护状态:
发现了独立的 DeviceRegistry:
以账号上下文获取设备密钥后端。
读取/导出公钥 publicKeySpkiB64。
返回 isHardwareBacked,表示是否由硬件保护。
调用原生模块对认证数据签名。
支持会话、对话、项目等绑定相关签名接口。
本地 ant-device-registry.json 缓存注册记录的标识。
签名数据包含注册记录标识、时间以及相应绑定上下文。
5.使用行为
包括:
何时启动、登录、切换账号、退出。
何时初始化会话,使用哪个模型、权限模式、推理设置。
使用本地、SSH、WSL 等哪一种后端。
是否使用 Git、worktree、临时工作目录。
MCP 服务器数量、插件与工具相关状态。
是否使用计划任务、远程控制、预热、侧边会话等功能。
SSH 连接次数、持续时间、重连、失败、等待用户认证等状态。
某些审批或提示的允许、拒绝、取消结果。
崩溃、卡顿和内存压力。
例如 desktop_ccd_session_initialized 将会话 ID、消息 UUID、模型、权限模式、后端、MCP 数量及上述目录/仓库哈希放入同一事件
6.系统用户名、邮箱、语言与时区
信息
确认的路径
限制
系统用户名
os.userInfo().username;可用于 OTLP 的 process.owner
可选 OTLP 路径,不能说默认发给 Anthropic
邮箱/UPN/名称
部署身份对象;可用于 OTLP 的 enduser.id
取决于身份与导出配置
系统语言
Electron 语言 API
用于界面语言选择,也进入支持诊断信息
时区、locale
Sentry 上下文采集代码
最终报告还要经过过滤与发送条件
用户主目录、Windows 用户资料路径
路径处理与脱敏代码也会读取
读取用户名可能正是为了在日志里替换它,不能反推为上传
三.扒完你之后什么时候上传
启动 Claude时以及在桌面 Code 页面启动一个会话时,会触发一次
其余主要依赖事件队列机制,每次刷新就上传:
条件
何时发生
定时器到期
有事件入队且尚无计时器时,安排一次延迟刷新
队列达到 50 条
提前刷新,不再等当前延迟结束
正常退出
退出清理处理器尝试刷新剩余队列
特定诊断代码主动刷新
例如主界面无响应或渲染进程退出后的处理
定时等待算法是:
等待时间 = 基准(默认60s)间隔 ×(0.5 + 随机数)
发送到
https://claude.ai/api/event_logging/v2/batch
综上,我觉得对于被封过号然后用同一台机器换号使用的用户,a出是很容易把你和之前的账号关联起来的,封不封你纯看心情以及你的数据对a出的价值
ps:其实上文中很多东西codex也采集,希望奥特曼叔叔当个好人
资讯来源
LinuxDo