
fortress v150.0.7871.114
隐形Chromium引擎,仅需更改一行代码即可阻止爬虫和浏览器代理被屏蔽。
一个浏览器引擎,统治一切
隐身 Chromium 引擎 · v3(Chromium 153)
Fortress 是一款隐身 Chromium 引擎,只需改动一行代码,就能让你的爬虫和浏览器代理不再被拦截。 机器人检测器通过读取浏览器指纹来标记自动化程序;Fortress 在 Chromium 的 C++ 内部修正该指纹,使浏览器呈现为普通的 Chrome 安装。爬虫能跑完任务,代理能到达目标页面,而 CreepJS、Sannysoft、BrowserScan 以及实时的 Cloudflare Turnstile 都会将其识别为人类。将你现有的 Playwright 或 Puppeteer 通过 CDP 指向 Fortress,代码中的其他部分无需任何改动。借助 v3,每次启动都是一台不同的、自洽的机器,因此一组会话看起来就像一群真实用户。
在无头模式、数据中心 IP、无代理的情况下,Fortress 成功服务了 92 个受保护页面中的 86.4%;排名第二的技术栈(Camoufox)为 74.5%。
Blink · V8 · BoringSSL 在源码树内打补丁 · ANGLE / D3D11 支持的 WebGL · JA3/JA4 一致的 TLS · 每月上游变基 · 可复现、经 gauntlet 门控的发布
81单表面C++ 补丁 |
0%CreepJS无头 / 隐身 |
48/48在 64 个克隆集群中各不相同 |
覆盖每一个 |

在真实窗口中未经剪辑的 Fortress 二进制文件录制:它通过实时 Cloudflare 挑战,让 bot.sannysoft.com 全绿,随后被 BrowserScan 读取为“Normal”。可用 tools/gauntlet.py 复现。
原生代码一致性每个被伪造的 getter 就是一个 C++ getter: |
即插即用的 CDPnodriver 风格的原始 CDP 运行在 |
通过 gauntlet 考验在 CreepJS 上 0% 无头;Sannysoft、BrowserScan 和实时 Cloudflare Turnstile 全部通过,且均表现为原版 Chrome 安装。 |
IPC 人设图人设通过 IPC 到达渲染器,进入进程全局配置:零命令行痕迹、按上下文隔离,一个二进制文件即可生成数千个自洽身份。 |
集群重新身份化
|
构造上自洽真实的 V8、Blink 和 BoringSSL 让引擎、user-agent 和 JA3/JA4 TLS 形态保持一致,WebGL / WebGPU 与 persona GPU 在参数级别一致:不仅渲染器字符串,还包括限制、精度和扩展。 |
新特性:v3 · 153.0.8010.36 · 集群引擎
v3 将 Fortress 从自洽的单一 persona 转变为自洽的集群引擎:patches/ 上 87 次提交,从 Chromium 151/152 变基到 153,以及以下变更。
- IPC persona 图,已发布。 persona 通过 IPC 传递到渲染器,进入进程全局配置:零命令行痕迹和按上下文身份隔离,因此同一浏览器中的多个会话或账户绝不会坍缩为单一可关联身份。
on_restore集群重新身份化。 快照恢复时,整个 persona 就地重新生成密钥(RNG、canvas/audio、GPU/screen/UA、网络和 TLS 状态),无需重启,并由每个表面的闭环 ack 确认。64 个克隆的集群启动后 48/48 各不相同,压力测试门控至 500 个克隆。- 字节精确的 canvas 和 audio。 Canvas 噪声在
getImageData/toDataURL/toBlob(以及 OffscreenCanvas)之间幂等且字节精确,仅对边缘抗锯齿像素进行门控,使用 64 位域分离种子和故障关闭 RNG(种子为零或缺失时禁用噪声;不会泄漏任何黄金常量)。WebGL/WebGL2 回读,包括 PBOreadPixels,走同一边缘门控路径。Audio farble 是值键控的:相同输入产生相同输出,每个 persona 全新但内部稳定。 - 自洽的 WebGL 和 WebGPU。 两者都与 persona GPU 在参数级别一致:限制、精度、扩展以及
navigator.gpu适配器身份都与真实硬件 GPU 匹配,绝不匹配软件后端。已实机验证。 - 真实的字体基底。 154 个不同的内置字体家族,具有真实度量克隆和按 persona 的度量;枚举受 persona 门控,因此主机字体永远不可见。
- 处处自洽。 约三十个具体破绽被关闭,每个都以一致性规则取代伪造:
@media匹配屏幕和 DPR、color-gamut 和 dynamic-range、jsHeapSizeLimit匹配 deviceMemory、按 persona 的prefers-color-scheme(约三分之一为深色)、Windows 系统字体、导航请求路径上的 Device-Memory 客户端提示、按 persona 的 WebAuthnisUVPAA()、macOS 零宽度覆盖滚动条、故障关闭的 WebRTC(裸启动时无真实 IP 泄漏)、pointer/hover/maxTouchPoints固定、符合操作系统的speechSynthesis语音,以及自洽的 Mac persona(Apple 架构、核心和内存 SKU、一台并非永久插电的 MacBook)。 - 录制的人类鼠标运动。 引擎原生的轨迹引擎由 ~10k 条录制人类路径(SapiMouse)库支持,以有机的速度和微抖动控制光标,运动信号比原始驱动人类化约 16 倍(人类化差距 ~4.3 对 ~70)。速度成比例的
getCoalescedEvents批处理和按 persona 的实时AudioContext时序完善了行为种子。 - Widevine EME,已发布。 真实的 Widevine CDM 已内置并启用,因此
requestMediaKeySystemAccess('com.widevine.alpha')的解析与真正的 Google Chrome 完全一致。路线图中标记的 DRM 缺口已关闭。 - 在更多平台上原生运行。 Windows x64 原生发布(
.zip+tillion.cmd);Linux arm64、x86 和 armhf tarball 正在陆续推出;macOS.app从源码构建。```bash pip install -U tilion-fortress # or: docker run --rm -p 9222:9222 tilion/fortress:latest
**[完整发布说明](https://github.com/tiliondev/fortress/releases)**
## 目录
| | |
|---|---|
| **[它是什么](#what-it-is)** · **[快速开始](#quick-start)** | 它是什么、安装、第一个脚本、原生构建、AI 代理设置 |
| **[每次会话都是一台独特的机器](#every-session-a-distinct-machine)** | 连续启动 40 次,40 台不同的连贯机器 |
| **[Fortress MCP](#the-fortress-mcp-stealth-browsing-as-agent-tools)** | 面向 AI 代理的 29 个隐身浏览器工具(Beta) |
| **[为什么修补引擎,而不是页面](#why-patch-the-engine-not-the-page)** | 自我暴露 JS 论点 + 四层检测 |
| **[Fortress 如何比较](#how-fortress-compares)** | 对比 puppeteer-stealth · Camoufox · 反检测应用 · **v2 到 v3** |
| **[证明:实时检测器结果](#proof-live-detector-results)** | v3 实时结果、CreepJS / Sannysoft / BrowserScan / WebGL / WebGPU,附截图 |
| **[基准测试:92 个受保护网站](#benchmark-92-protected-sites-eight-stacks)** | Fortress 对比七种技术栈,全部无头模式,1,584 台全新机器,数据中心 IP |
| **[配置角色](#configure-the-persona)** | IPC 角色图谱和 `--uxr-*` 指纹表面 |
| **[与你的技术栈兼容](#works-with-your-stack)** | browser-use · Crawl4AI · Stagehand · LangChain |
| **[构建与验证](#build--verify)** | 从源码构建、平台、验证来源 |
| **[参考](#reference)** | 故障排除 · 常见问题 · 路线图 · 仓库布局 |
---
## 它是什么
Fortress 是一个 Chromium 分支,从引擎内部伪造浏览器指纹。机器人检测器读取的表面(canvas、WebGL、WebGPU、音频、字体、navigator、Client-Hints 以及大约四十多个其他表面)都在 Chromium 的 **C++** 中修正,没有 JavaScript 补丁层暴露在页面上供其捕获。
它以普通浏览器二进制文件的形式发布,暴露一个 CDP 端点。将 Playwright、Puppeteer 或任何 CDP 客户端指向它,你现有的自动化无需更改即可运行。
JavaScript 隐身补丁会留下一个页面可以发现的额外层:`.toString()` 会显示覆盖方法的源代码,而从 iframe 或 worker 中重新获取同一原始对象可以绕过它。Fortress 则在引擎中修正表面,因此 `navigator.vendor` 解析到真正的 C++ getter,报告 `[native code]`,并且在每个 realm 中读取结果一致。页面自检时看到的是原版 Chromium。这就是为什么你的自动化能通过以前会被标记的地方,而剩下的任何拦截都追溯到你的代理和行为,而不是浏览器。[为什么修补引擎,而不是页面](#why-patch-the-engine-not-the-page) 完整介绍了检测机制。
在 v3 中,角色不再是一个固定的身份。每次启动都会生成一台全新的、内部连贯的机器(GPU、屏幕、核心数、时区、语言、字体全部一致),通过 IPC 传递给渲染器,因此命令行上不会显示任何内容,并且每个 `BrowserContext` 都可以持有自己的身份。```python
from tilion_fortress import Fortress
from playwright.sync_api import sync_playwright
with Fortress() as f: # launches the stealth engine on a CDP endpoint
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(f.cdp_url)
page = browser.new_page()
page.goto("https://bot.sannysoft.com")
page.screenshot(path="all-green.png")
import { Fortress } from "tilion-fortress";
import { chromium } from "playwright";