零JS注入,
原生 WebKit 真指纹
NexAir 不向网页注入任何脚本。34 款真机硬件规格、引擎层时区、系统字体白名单, 全部通过 macOS 原生能力生效。目标网站看到的,是一台真实的 Mac。
为什么大多数指纹浏览器
反而更容易被识别
市面上 99% 的多账号浏览器基于 Chromium 改造。为了篡改硬件特征,它们在页面加载前 向网页上下文注入 JS。而现代风控系统检测的,正是「有没有脚本动过手脚」。
先注入,再伪装
通过 Page.addScriptToEvaluateOnNewDocument 重写 navigator、screen、WebGL,让页面"看起来"像另一台设备。
- 脚本执行后,
Function.prototype.toString能读到被改写的原型链 - 属性描述符(
getOwnPropertyDescriptor)与原生实现不一致 - iframe 跨作用域比对、Worker 独立上下文二次校验即可穿透
- Cloudflare Turnstile、DataDome、Kasada、Akamai 均已在用这类检测
不改脚本,改系统
零 WKUserScript。所有环境特征通过 macOS 系统环境变量与 WebKit 运行时私有 SPI 生效,网页里没有任何一行外来脚本。
- 不触碰
window/navigator/screen/WebGL原型链 - 机型几何在
NSScreen层替换,网页读到的是真实值而非伪造值 - 语言与时区经
-AppleLanguages与引擎层 TZ 注入,不走 JS - 目标网站看到的,是一台天然混在数亿台真实 Mac 中的设备
六个必须做对的地方
指纹浏览器的难点不在功能多少,而在每一个细节都不能露馅。这六项里任何一项做错,前面所有工作都白费。
绝对零 JS 注入
严禁任何 WKUserScript,不重写页面全局环境。语言、时区、屏幕几何、字体栈全部经系统变量与 WebKit 私有 SPI 生效,页面拿不到任何被脚本篡改的证据。
Fail-Closed 与 DNS 熔断
每个环境独占一个 Air Engine 进程或独立 SOCKS5 通道。代理中断时立即中止加载,绝不回退直连;53 端口 UDP/TCP 强制劫持,非法解析撞向黑洞路由。
34 款真机拟态
从 MacBook Air 13" 到 MacBook Pro 16" M 系列,再到 iMac 24" 4.5K、Mac Studio 5K、Mac Pro 6K XDR。视口几何、Retina 像素比、Display P3 广色域与 HDR 动态范围全部与真机一致。
语言时区跟随出口
选定节点后,启动时经加密通道探测出口归属,同步匹配 Accept-Language 语言栈与引擎层 TZ。越南节点打开的 Google,界面就是越南语。
字体白名单隔离
屏蔽本机自行安装的第三方字体,只保留纯净 macOS 系统字库(含完整中日韩基础字库)。阻断网站通过 Canvas 测量与 CSS 字体探测枚举设备。
全协议 Air Engine
无需安装 Clash、Surge 或 v2ray。支持订阅链接与单条/批量粘贴,覆盖 VLESS Reality、VMess、Trojan、SS2022、AnyTLS、SOCKS5 与 HTTP。
- Runner 沙盒进程独立 WebKit + 独立锁
- Air Engine127.0.0.1:随机端口
- 出口节点越南 · ANYTLS
- 目标网站看到的是一台真 Mac
断链 / 验签失败 → 立即中止加载,绝不回退本机直连
53 端口 UDP/TCP 强制劫持 → 非法解析 → block 兜底路由
状态是连续的,
不是一张截图
下面三个片段按真实界面重绘。它们展示的不是功能清单,而是界面在状态切换时的真实反应。
高级隐私保护引擎时区同步Canvas / WebGL 加噪系统字体白名单Safari 专有接口关闭 WebRTC
一个窗口,管住所有环境
管理面板与浏览窗口都是 macOS 原生实现,macOS 26 上自动启用 Liquid Glass。没有网页套壳,没有 Electron 的一百兆内存。
Safari 胶囊标签栏
工具栏高 40pt,标签栏 30pt,单个标签 24pt 高、11pt 连续超椭圆圆角,宽度上限 240pt。轨道自适应平铺,相邻标签靠近时自动让出分割线。
- ✓环境胶囊常驻左上角,国旗 + 名称,点开看出站详情
- ✓纯矢量国旗,17×12.8pt 自绘,不依赖 emoji 渲染
- ✓零轮询防崩,增量 Diff 驱动,15–20 个标签高负载下 CPU 近乎为零
- ✓地址栏水平居中,宽度随窗口自适应,不随右侧控件增减漂移
语言不是翻译的,是出口决定的
这张截图里 Google 的界面是越南语。我们没有翻译它,也没有注入任何脚本改语言——是这台环境真的从越南出去。
- ✓引擎层时区,
TZ在 WebKit 进程启动前就设好,不是运行后改 - ✓语言栈同步,
Accept-Language与出口地区一致 - ✓单标签自动收拢,只开一个标签时紧凑排布,关闭按钮就地显示
- ✓⌘` 轮切窗口,中英文输入法下都可用
单二进制,多进程协同
一个可执行文件,两种身份。无参数启动进入管理面板,带 --profile 启动成为独立沙盒进程。每个环境都有自己的 WebKit 实例与 Air Engine 进程。
只依赖 Foundation 与 Security。定义 Profile、环境分组、34 款机型库、浏览历史与排他锁,以及 MCPServerRegistry。代理凭据由 PrivateVaultCredentialStore 管理:POSIX 0600 独立加密保险箱 credentials.vault,与系统钥匙串双轨容灾。传递时只走 stdin 管道或临时 0600 文件,明文绝不进入日志与命令行参数。
节点解析(VLESS / VMess / Trojan / SS2022 / AnyTLS / SOCKS5)、Air Engine 配置动态生成、专属子进程管理、端口调度与 GeoIP 定位。生成配置时强制注入 hijack-dns 规则与 block 兜底路由,防止 DNS 旁路逃逸。
纯 Objective-C 底层。符号按字节异或混淆,运行时 dlsym 动态查找,调用前核验 methodSignature,全部包在 @try/@catch 内。Method Swizzling 替换 NSScreen 尺寸与色域,C 导出符号配置系统字体白名单。写入后必须回读校验,不适配就优雅降级。
组装 WKWebViewConfiguration,绑定物理隔离的 WKWebsiteDataStore、网络代理、SPI 隐私能力适配与屏幕几何模拟。Agent 操作只在 WKContentWorld.defaultClient 隔离世界里执行,不污染网页全局上下文。
SwiftUI 管理控制台、AppKit 原生多窗口多标签浏览器、Runner 进程入口、Agent IPC 桥接与无头指纹探针。全部装进同一个二进制,arm64 与 x86_64 通用。
让 Agent 操作浏览器,
但不污染网页
每个沙盒提供专属的本地 UNIX Domain Socket 桥接。Agent 在隔离的客户端世界里驱动浏览器—— 点击走 AppKit 系统事件循环,填充走受控输入,网页的 JS 全局变量一行都不会被改写。
~/.agents/servers/nexair.json全局 Agent 规范{Workspace}/.agents/servers/nexair.json项目级规范~/.codex/config.tomlCodex~/.config/opencode/opencode.jsonOpenCodeclaude_desktop_config.jsonClaude Desktop~/.cursor/mcp.jsonCursor
~/.local/bin/nexair 全局软链接。
语义快照
返回带稳定引用 ID(e1、e2…)与视口坐标的 DOM 树,Agent 不用猜选择器。
原生点击与坐标
经 macOS 系统事件循环分发,模拟真实物理鼠标;click-xy 直接打视口坐标,可绕过 Canvas 人机验证。
逐字键入
按字符间隔键入,自动触发 React / Vue 数据绑定,OTP 输入框也能正确识别。
# 也可以用软链接,安装后自动建立 $ NX="/Applications/NexAir.app/Contents/MacOS/NexAir" # 列出所有环境:ID / 名称 / 模式 / 状态 / 标签数 $ "$NX" agent spaces # 后台静默启动沙盒并导航 $ "$NX" agent open "TEST" https://example.com --background # 语义快照,元素标注为 e1、e2… $ "$NX" agent snapshot "TEST" # 按快照引用填充与点击 $ "$NX" agent fill "TEST" e1 "user@example.com" $ "$NX" agent click "TEST" e2 # 原生坐标点击,突破 Canvas 人机验证 $ "$NX" agent click-xy "TEST" 420 310 # 逐字键入(默认 30ms/字符) $ "$NX" agent type "TEST" 'input[autocomplete="one-time-code"]' "123456" # 截取视口快照作为执行证据 $ "$NX" agent screenshot "TEST" /tmp/view.png
完整命令集:skill · spaces · open · snapshot · click · fill · type · click-xy · wait · focus · eval · screenshot · tab-list · tab-new · tab-close。
装进 /Applications,开始
免费使用,无需注册账号。不联网激活,不上报使用数据。
$ xattr -dr com.apple.quarantine "/Applications/NexAir.app"