Zeus Desktop 提供全面的浏览器指纹管理功能,允许每个分身呈现独特且一致的浏览器身份。这可以防止网站通过指纹关联来识别多个分身属于同一用户。
什么是浏览器指纹?
浏览器指纹是网站通过收集浏览器和设备的独特特征来识别和追踪用户的技术——即使不使用 Cookie 也能实现。这些特征包括:
- User-Agent 字符串
- 屏幕分辨率
- 已安装的字体
- WebGL 渲染器信息
- Canvas 渲染模式
- AudioContext 输出
- 硬件规格(CPU 核心数、内存)
- 时区和语言
当两个浏览器会话共享相同的指纹时,网站可以判断它们很可能属于同一用户——这会使独立分身失去意义。
指纹配置
可配置属性
| 分类 | 属性 | 描述 | 示例 |
|---|
| 基础 | User-Agent | 浏览器标识字符串 | Mozilla/5.0 ... Chrome/120.0.0.0 |
| 基础 | 操作系统 | 操作系统标识符 | Win32、MacIntel、Linux x86_64 |
| 基础 | 语言 | 浏览器语言偏好 | en-US,en;q=0.9 |
| 基础 | 时区 | 地理时区 | America/New_York |
| 屏幕 | 分辨率 | 屏幕尺寸 | 1920x1080、2560x1440 |
| 屏幕 | 颜色深度 | 显示器颜色深度 | 24 |
| 屏幕 | 像素比 | 设备像素比 | 1 或 2(Retina 屏幕) |
| 高级 | WebGL 厂商 | GPU 厂商字符串 | Intel Inc.、NVIDIA Corporation |
| 高级 | WebGL 渲染器 | GPU 渲染器字符串 | Intel Iris OpenGL Engine |
| 高级 | Canvas 噪声 | 确定性 Canvas 噪声种子 | 随机整数 |
| 高级 | Audio 噪声 | 确定性音频噪声种子 | 随机整数 |
| 硬件 | CPU 核心数 | navigator.hardwareConcurrency | 4、8、12、16 |
| 硬件 | 设备内存 | navigator.deviceMemory(GB) | 4、8、16 |
随机指纹生成
点击**“随机生成指纹”**按钮,可以一键填充所有字段,生成一个真实且内部一致的配置。
生成器确保内部一致性:
- Windows 的 User-Agent 会自动匹配
Win32 平台和 Windows 字体
- macOS 的 User-Agent 会自动匹配
MacIntel 平台、devicePixelRatio: 2 和 macOS 字体
- WebGL 厂商/渲染器组合与所选操作系统匹配
- 所有值都来自真实常见配置的数据池
工作原理
Zeus 在两个层面应用指纹覆盖:
第一层:Chrome 启动参数
在 Chrome 启动前应用:
--user-agent="Mozilla/5.0 ... Chrome/120.0.0.0 Safari/537.36"
--lang=en-US
Chrome 启动后立即通过 WebSocket 连接到 CDP 调试端口进行注入:
反检测脚本详解
注入的脚本会在每个新文档(包括 iframe)中,在任何页面 JavaScript 执行之前运行。以下是每项保护的作用:
navigator.webdriver 移除
Object.defineProperty(navigator, 'webdriver', { get: () => undefined });
delete Object.getPrototypeOf(navigator).webdriver;
网站通过检查 navigator.webdriver 来检测自动化工具。此操作完全移除该标志。
Canvas 指纹噪声
向 Canvas API 输出添加确定性噪声。该噪声具有以下特点:
- 确定性 — 相同的种子始终产生相同的噪声(跨页面刷新保持一致)
- 不可感知 — 极微小的像素级变化,肉眼不可见
- 唯一性 — 不同的种子 = 不同的指纹
这通过让每个分身产生不同但一致的 Canvas 输出来防止 Canvas 指纹追踪。
WebGL 伪装
覆盖 WEBGL_debug_renderer_info 以报告自定义的 GPU 厂商和渲染器字符串。这是最强的指纹信号之一,因为 GPU 信息是高度设备特异的。
AudioContext 噪声
向 AudioContext.createAnalyser() 输出注入确定性噪声。音频指纹利用音频处理中的细微差异来识别设备。
字体检测保护
拦截字体测量查询并添加一致的变化,防止网站枚举你已安装的字体。
一致性准则
为了最大化反检测效果,确保分身配置内部一致:
| 如果你设置了… | 那么也应该设置… | 原因 |
|---|
| Windows UA | Win32 平台 | UA/平台不匹配是一个明显的红旗 |
| macOS UA | MacIntel 平台,devicePixelRatio: 2 | 大多数 Mac 有 Retina 显示屏 |
en-US 语言 | America/New_York 时区(或类似的美国时区) | 语言与时区不匹配看起来很可疑 |
1920x1080 分辨率 | devicePixelRatio: 1 | 1080p 显示器通常是 1x 像素比 |
| Intel GPU | Intel WebGL 渲染器 | GPU 品牌不匹配是可以被检测的 |
随机生成按钮会自动处理所有一致性规则。建议先使用随机生成,然后根据需要微调特定值。
Canvas 和 Audio 保护开关
UI 提供两个便捷开关:
-
Canvas 保护 — 启用后,会向 Canvas 操作注入确定性噪声。这使你的 Canvas 指纹对每个分身唯一,同时在不同会话间保持一致。
-
Audio 保护 — 启用后,会向 AudioContext 操作注入确定性噪声。类似于 Canvas 保护,但针对基于音频的指纹追踪。
生成随机指纹时,两者默认开启。
验证你的指纹
启动分身后,可以使用以下网站验证指纹效果:
| 工具 | 网址 | 检查内容 |
|---|
| BrowserLeaks | browserleaks.com | 全面的指纹分析 |
| CreepJS | abrahamjuliot.github.io/creepjs | 高级反检测分析 |
| AmIUnique | amiunique.org | 指纹唯一性评分 |
| Pixelscan | pixelscan.net | 机器人检测和一致性检查 |
故障排除
指纹未生效
- 确保分身已配置指纹设置(检查配置对话框)
- 确认 Chrome 使用了正确的调试端口启动(查看日志)
- CDP 注入仅在 Chrome 正确启动时才能工作——检查 Chrome 启动错误
网站仍然检测到自动化
- 确认
navigator.webdriver 已被移除(在 DevTools 控制台中检查:navigator.webdriver 应为 undefined)
- 验证
window.chrome 存在(某些网站检查其是否缺失)
- 确保所有指纹值内部一致(参见上方一致性准则)
- 某些高级检测可能检查时序异常——指纹伪装有帮助但无法完美对抗所有检测方法
Canvas/WebGL 测试显示相同指纹
- 确保不同分身的
canvasNoiseSeed 不同
- 验证分身设置中已启用 Canvas 保护
- 关闭并重新启动浏览器——指纹注入在启动时进行