
スクレイパーやブラウザエージェントがブロックされるのを防ぐステルスChromiumエンジン。コードを1行変更するだけで利用可能。
ステルス Chromium エンジン
Fortress はステルス Chromium エンジンです。コードを1行変更するだけで、スクレイパーやブラウザエージェントがブロックされるのを防ぎます。 ボット検出器はブラウザのフィンガープリントを読み取って自動化を検出します。Fortress は Chromium の C++ 内部でそのフィンガープリントを修正するため、ブラウザは通常の Chrome インストールとして現れます。スクレイパーは処理を完了し、エージェントは指定されたページに到達し、CreepJS、Sannysoft、BrowserScan、そして実際の Cloudflare Turnstile もすべて人間として読み取ります。既存の Playwright や Puppeteer を Fortress に CDP 経由で向けるだけで、コードの他の部分は変わりません。
Blink · V8 · BoringSSL ツリー内パッチ適用 · ANGLE / D3D11 バックエンドの WebGL · JA3/JA4 一貫性のある TLS · 毎月 の上流リベース · 再現可能でガントレット検証済み リリース
34 |

編集なしの実際のウィンドウでの Fortress バイナリのキャプチャ:実際の Cloudflare チャレンジをクリアし、bot.sannysoft.com がすべて緑色になり、BrowserScan が "Normal" と表示されます。tools/gauntlet.py で再現可能。
リリース済み。 起動ごとに一貫性のあるペルソナを強化。
toString() は [native code] のまま)、レルム不変(メイン / ワーカー / iframe) — ブラウザにコンパイルされた一貫性、JavaScript でパッチされていない。```bash
pip install -U tilion-fortress # or: docker run --rm -p 9222:9222 tilion/fortress:latest**[→ 完全なリリースノート](https://github.com/tiliondev/fortress/releases/tag/v151.0.7908.0)**
## 目次
| | |
|---|---|
| **[概要](#what-it-is)** · **[クイックスタート](#quick-start)** | 概要、インストール、最初のスクリプト、AIエージェントのセットアップ |
| **[Fortress MCP](#the-fortress-mcp--stealth-browsing-as-agent-tools)** | AIエージェント向けの29のステルスブラウザツール(ベータ版) |
| **[なぜエンジンにパッチを当てるのか、ページではないのか](#why-patch-the-engine-not-the-page)** | 自己暴露型JSのテーゼ+3つの検出レイヤー |
| **[Fortressの比較](#how-fortress-compares)** | puppeteer-stealth、Camoufox、CloakBrowser、クローズドベンダーとの比較 |
| **[証明:ライブ検出器の結果](#proof-live-detector-results)** | CreepJS、Sannysoft、BrowserScan、Cloudflare(スクリーンショット付き) |
| **[ペルソナの設定](#configure-the-persona)** | `--uxr-*`フィンガープリント面 |
| **[お使いのスタックとの連携](#works-with-your-stack)** | browser-use · Crawl4AI · Stagehand · LangChain |
| **[ビルドと検証](#build--verify)** | ソースからの再現、来歴の検証 |
| **[リファレンス](#reference)** | トラブルシューティング、FAQ、ロードマップ、リポジトリレイアウト |
---
## 概要
Fortressは、エンジン内部からブラウザフィンガープリントを偽装するChromiumフォークです。ボット検出器が読み取るサーフェス(canvas、WebGL、audio、fonts、navigator、および約30以上のその他)は、Chromiumの**C++**で修正されており、ページがキャッチできるJavaScriptパッチレイヤーはその上にはありません。
通常のブラウザバイナリとして提供され、CDPエンドポイントを公開します。Playwright、Puppeteer、または任意のCDPクライアントをそれに向けると、既存の自動化が変更なしで実行されます。
JavaScriptステルスパッチは、ページが見つけられる余分なレイヤーを残します:`.toString()`はオーバーライドのソースを表示し、iframeやワーカーから同じプリミティブを再取得すると、それを超えてしまいます。Fortressは代わりにエンジン内のサーフェスを修正するため、`navigator.vendor`は本当のC++ゲッターに解決され、`[native code]`を報告し、すべてのレルムから同じ値を読み取ります。ページが自身を検査すると、標準のChromiumが見えます。そのため、以前はフラグが立てられていた場所でも自動化が通過し、残っているブロックはプロキシと行動に起因するものであり、ブラウザには起因しません。[なぜエンジンにパッチを当てるのか、ページではないのか](#why-patch-the-engine-not-the-page)で検出メカニズムの全容を説明しています。```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";
const f = await Fortress.launch(); // stealth engine on a CDP endpoint
const browser = await chromium.connectOverCDP(f.cdpUrl);
const page = await browser.newPage();
await page.goto("https://browserscan.net");
await browser.close();
await f.close();
1ループ、すべて実際のキャプチャ: CreepJS / Sannysoft / BrowserScan / rebrowser を通過 → CDP経由で構造化データをスクレイピング → aa.com · lowes · macys · kohls で Akamai をクリア (同一の住宅用IP)。
FortressエンジンをCDP経由で駆動した未編集のキャプチャ。ステルスプラグインもJSパッチもなし: フィンガープリントはバイナリで修正されています。これらは examples/scrape_demos.py で再現できます。
構造化抽出: 各アイテムが読み込まれるたびにレコードが型付きJSONに構築されます。
同一の住宅用IP、同一サイト (aa.com · Akamai Bot Manager)。標準/ヘッドレスブラウザは Access Denied (Reference #) になります; Fortressは実際のページを読み込み、Akamaiは _abck センサークッキーを発行 — Bot Managerはそれを実際のブラウザとして受け入れます。変数は フィンガープリント であり、IPではありません。
pip install tilion-fortress npm install tilion-fortress
docker run --rm -p 9222:9222 tilion/fortress:latest
tar xzf tilion-fortress-linux-x64.tar.gz # Linux ./tilion-fortress/tilion --headless=new --remote-debugging-port=9222 --user-data-dir=/tmp/p
sudo apt install ./tilion-fortress_151.0.7908.0_amd64.deb && tilion https://example.com
> [!TIP]
> SDK にはコンパイル済みビルドに加えて **`patches/`** が同梱されています。そのため、エンジンを自分でリビルドし、すべての表面修正をソースに対して検証できます。ダウンロードは、リリースの `SHA256SUMS` に対して自動的に SHA-256 検証されます。
### バージョン
Fortress は **2つの Chromium ベース** で提供されます。普及度と最新性のトレードオフを選択してください:
| チャンネル | Chromium | 使用するタイミング |
|---|---|---|
| **`stable`** *(デフォルト)* | **149** | 推奨 — 実際のユーザーの大多数が使用している Chrome バージョンと一致するため、最も自然に溶け込みます |
| **`latest`** | **151** | 最新のエンジン(stable よりわずかに新しいバージョンとして報告されます) |```python
Fortress().start() # Python: stable (149) by default
Fortress(channel="latest").start() # opt into 151
await Fortress.launch(); // Node: stable (149) by default
await Fortress.launch({ channel: "latest" });
docker run --rm -p 9222:9222 tilion/fortress:149 # or :151
# or set FORTRESS_CHANNEL=latest for either SDK
ネイティブバイナリ: Linux x64 (両方のバージョン) + Windows x64 (151); Windows-149 と macOS は Docker イメージで実行します。
Fortressはエージェントが操作するブラウザです:raw CDP on :9222、ステルスプラグインの設定は不要です。導入方法は2つあります。
オプション1: チャットアシスタントでプリロードして開く ワンクリックで、AGENTS.md を読み込み、全体のセットアップを案内します:
オプション2: エージェントにコピー(すべて、クリップボードへ) 下のボックスの右上にあるコピーアイコンをクリックします。AGENTS.md のセットアップコンテキスト全体(概要、インストール、接続、ペルソナ、ルール)がすべて凝縮されてクリップボードにコピーされます。それをCursor、Claude Code、Copilot、ChatGPT、または任意のエージェントに貼り付ければ、あとはそちらが処理します:```text You're setting up Fortress, an open-source STEALTH Chromium engine, for browser automation. It corrects the browser fingerprint (canvas, WebGL, audio, fonts, navigator, +30 more) in Chromium's C++ and exposes raw CDP on http://localhost:9222, a drop-in for Playwright/Puppeteer. Do NOT add puppeteer-stealth or any JS fingerprint patching (it self-reveals and undoes Fortress).
LAUNCH (pick one; all expose CDP on http://localhost:9222): Docker: docker run -d --rm -p 9222:9222 tilion/fortress:latest Python: pip install tilion-fortress then from tilion_fortress import Fortress; f=Fortress(); f.start() Node: npm install tilion-fortress then import {Fortress} from "tilion-fortress"; const f=await Fortress.launch()
CONNECT (keep my existing automation code): Playwright(py): browser = p.chromium.connect_over_cdp("http://localhost:9222") Playwright(js): const browser = await chromium.connectOverCDP("http://localhost:9222") Puppeteer(js): const browser = await puppeteer.connect({ browserURL: "http://localhost:9222" }) browser-use / Crawl4AI / Stagehand / LangChain: point their CDP endpoint at http://localhost:9222
PERSONA (optional; default is a coherent Windows identity). Override any surface with --uxr-* flags: --uxr-timezone=America/New_York --uxr-hw-concurrency=16 --uxr-languages=en-US,en
RULES:
Now walk me through launching Fortress and wiring my automation to it. Full guide: https://github.com/tiliondev/fortress/blob/main/AGENTS.md
## The Fortress MCP — エージェントツールとしてのステルスブラウジング <sub>ベータ</sub>
Raw CDP は、あなたが書くコードのためのものです。**Fortress MCP** は、**ツール** を呼び出すエージェントのためのものです: Claude、Cursor、または任意の MCP クライアントにステルスブラウザを提供する [Model Context Protocol](https://modelcontextprotocol.io) サーバーで、フェッチがブロックされた瞬間にツールを呼び出してページを取得します。**29 のツール、ローカルで無料** — `fetch_protected_page`、`extract_page`、`crawl_site`、`recon_site_apis`、`search_web`、`run_browser_task`、`save_profile`、`get_stealth_cdp_endpoint` など。
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/795/8f328e2498b09d7433208c5b4a9002450643537f2ee6b0519ac10420ef581bf3.gif" alt="同じサイト、同じプロンプト: 通常のブラウザは PerimeterX によってブロックされるが、Fortress MCP を使用したエージェントはクリーン JSON を返す" width="760"/></p>
<sub><i>実際の、日付入りの実行結果: <b>stockx.com</b> (PerimeterX)。標準ブラウザは <b>HTTP 403 — “Access denied”</b> を受け取る一方、Fortress MCP を使用したエージェントはクリーンな JSON を返す — 同じサイト、同じプロンプト。フレームワークリポジトリから再現できます。</i></sub>
### 30秒でセットアップ
2つのランナー — 一つ選んでください。`npx` は PATH に Python が必要です;`pip` は直接インストールします:```bash
pip install "tilion[mcp]" # command: tilion-mcp
# —or, zero-install—
npx -y tilion-mcp # auto-runs the server via uv (no global install)
Claude Desktop — 設定 → 開発者 → 設定ファイルの編集 (claude_desktop_config.json):```json
{ "mcpServers": { "fortress": { "command": "tilion-mcp" } } }
<sub>npxをお好みですか? <code>"command": "npx", "args": ["-y", "tilion-mcp"]</code>を使用してください。Claudeを再起動すると、<b>fortress</b>ツールが表示されます。</sub>
**Claude Code** (CLI) — 一行:```bash
claude mcp add fortress -- tilion-mcp # or: claude mcp add fortress -- npx -y tilion-mcp
Cursor (~/.cursor/mcp.json) · Cline / Windsurf (VS Code → MCP サーバー) — 同じブロック:```json
{ "mcpServers": { "fortress": { "command": "tilion-mcp" } } }
そして、エージェントに「このStockXページから価格を取得して」と指示するだけで、自動的に`fetch_protected_page`を呼び出します。
### エージェントが取得できるもの
| | tools |
|---|---|
| **ブロックされたページの取得** | `fetch_protected_page` · `read_page` · `get_page_html` · `search_web` |
| **構造化データ** | `extract_page` (schema-aware) · `extract_document` (PDF/DOCX/XLSX) |
| **サイト全体** | `crawl_site` (auto-SPA) · `recon_site_apis` (プライベートJSON APIを見つける) |
| **ページ操作** | `page_elements` · `click_button` · `fill_field` · `press_key` · `wait_for` · `evaluate_js` |
| **マルチステップフロー** | `run_browser_task` (ログイン, ページネーション, 無限スクロール, チェックアウト, …) |
| **キャプチャ / 認証** | `screenshot_page` · `save_page` · `download_file` · `save_profile` / `load_profile` |
| **独自のものを使用** | `get_stealth_cdp_endpoint` → Playwright / Puppeteer / browser-use 用のCDP URL |
ツールには注釈が付けられています(読み取りは自動承認、書き込みはゲート)、起動時に**プリウォーム**(最初の呼び出しは約100ms)、並行セーフ、タイムアウトおよびSSRF対策済み。**住宅用エグレス**を備えたホスト型エンドポイントが近日公開予定です。
→ 全29ツールのテーブル、ベンチマーク、エージェントスキル: **[`mcp/`](https://github.com/tiliondev/fortress/blob/HEAD/mcp/README.md)**
---
## なぜページではなくエンジンにパッチを当てるのか
通常のアプローチでは、`navigator.webdriver`にパッチを当て、WebGLベンダーを偽装し、スクリプトから`navigator.plugins`をオーバーライドします。しかし、CreepJSなどの検出器は依然としてそれを検出します。その理由は、**構造的**なものであり、単に別のプロパティが露出していないからではありません。JavaScriptによる偽装は、ネイティブ関数があるべき場所に置かれた関数です。検出器は返された値を脇に置き、それを返すものがネイティブかどうかを問い詰めます。
| 兆候 | JS偽装を検出する理由 |
|---|---|
| `toString`の自己開示 | ネイティブメソッドは `function get vendor() { [native code] }` のように文字列化されますが、オーバーライドは自身のソースコードを文字列化するため、`.toString()` を1回実行するだけで検出されます。 |
| ディスクリプタと`hasOwnProperty` | `getOwnPropertyDescriptor` は再定義されたプロパティを公開し、`hasOwnProperty('toString')` は改ざんされた関数では `true` を返しますが、ネイティブ関数では `false` を返します。 |
| `failsTypeError` | ネイティブゲッターは間違った `this` に対して特定の `TypeError` をスローします。単純なシムは沈黙しますが、その沈黙が合図となります。 |
レルム再取得は、すべてのメインワールドパッチを無効にするものです。検出器は別のレルムからプリミティブなプリミティブを取得し、あなたの関数に適用します。```js
const iframe = document.createElement('iframe'); document.body.appendChild(iframe);
const realToString = iframe.contentWindow.Function.prototype.toString;
realToString.call(navigator.__lookupGetter__('vendor')); // returns your source code. Caught.
メインワールドのパッチは、そのiframeとは異なるレルムに存在します。同じトラップがWeb Workerから発火します。これは、メインスレッドのシムが「内部」ではなく「横」で実行するスレッドです。
Fortressにはそのようなレイヤーはありません。navigator.vendorのゲッターは、そのままC++のゲッターです。ネイティブコードであるため[native code]と報告し、すべてのレルムで同一です。Camoufoxはうまく表現しています: 「検出されるJavaScriptのハイジャックは存在しない」。 Fortressは同じアイデアを、Geckoの代わりにV8とBlinkに適用します。
最新のアンチボット(Cloudflare、DataDome、Kasada、HUMAN、Akamai)は、構造的に異なる3つの表面を、3つの別々の場所で読み取ります。1つのツールですべてを修正することはほとんどありません:
FortressはレイヤーCエンジンであり、AとBも保持されるように駆動されるよう構築されています。バイナリだけではCDPチャネルが開いたままになります。その部分は制御レイヤーにあり、そうでないふりをすると捕まる原因になります。
Fortressは実際の先行技術に基づいています: fingerprint-chromium、ChromiumFish、CloakBrowserが先駆けであり、商用ベンダー(Multilogin、Kameleo、GoLogin、AdsPower、Browserbase、Surfsky)はクローズドソースの背後でChromiumを再コンパイルしています。その作業のほとんどは非公開のままです: 有料のフォークはバイナリを提供し、それを信頼するよう求めるだけで、ベンダーはパッチを社内に保持しています。
Fortressは逆の方向を目指します。なぜなら、ステルスエンジンは、それに依存する人々がその仕組みを理解できる場合にのみ有用であり続けるからです。 すべての表面修正は、patches/内に、1分で読める小さな単一目的の差分として存在し、エンジン全体は1つのスクリプトでソースから再構築されます。検出器が新しい手がかりを見つけた場合、修正を追跡し、パッチを適用し、送り返すことができます。そのフィードバックループが重要であり、エンジンが読み取り、拡張、再構築が可能なほどオープンである場合にのみ機能します。
任意の行を tools/gauntlet.py --bundle ./tilion-fortress で再現してください。ライブ検出器に対して検証済み。再実行日は docs/GAUNTLET_RESULTS.md に記載されています。
| BrowserScan | CreepJS | Cloudflare |
|---|---|---|
![]() | ![]() | ![]() |
バイナリはブランド文字列を一切含まず、ランチャーは一貫性のあるデフォルトのWindowsペルソナを適用します。任意の表面を --uxr-* スイッチで上書きするか、TILION_NO_DEFAULTS=1 を設定してベア起動を行います。```
--uxr-platform / --uxr-ua-platform / --uxr-ua-os / --uxr-ua-arch / --uxr-ua-bitness
--uxr-ua-platform-version / --uxr-ua-brand / --uxr-hw-concurrency / --uxr-device-memory
--uxr-webgl-vendor / --uxr-webgl-renderer / --uxr-webgl-fullparams
--uxr-canvas-seed / --uxr-audio-seed / --uxr-timezone / --uxr-languages
--uxr-screen-width / --uxr-screen-height / --uxr-webrtc-policy=disable_non_proxied_udp
| 環境変数 | 目的 |
|---|---|
| `TILION_NO_DEFAULTS=1` | デフォルトのペルソナをスキップ (ベア起動) |
| `TILION_TZ` / `TILION_LANG` | タイムゾーン / 言語のクイックオーバーライド |
> [!NOTE]
> **現在、ペルソナはコマンドライン上で動作します。** `--uxr-*` スイッチは `/proc/<pid>/cmdline` 経由で全プロセスから読み取り可能なため、起動ごとに1つのペルソナとなり、ホスト上の他のプロセスからも見えます。次に `MaskConfig` ランタイムが導入されます: これはIPC経由でペルソナを配信し、1プロセスあたりの制限を解除します ([今後の予定](#whats-next) を参照)。
---
## あなたのスタックと連携
Fortress は `:9222` で生のCDPを公開しているため、Playwright、Puppeteer、またはCDPを話すあらゆるものにシームレスに統合できます。
| フレームワーク | 接続方法 |
|---|---|
| [**browser-use**](https://github.com/browser-use/browser-use) (〜7万スター) | `cdp_url="http://localhost:9222"` |
| [**Crawl4AI**](https://github.com/unclecode/crawl4ai) (〜5.8万スター) | CDP エンドポイント |
| [**Stagehand**](https://github.com/browserbase/stagehand) (〜2.1万スター) | `connectOverCDP` |
| [**LangChain**](https://github.com/langchain-ai/langchain) Playwright ツールキット | Playwright CDP |
| **Playwright / Puppeteer** (Python & JS) | `connect_over_cdp` / `connect` |```python
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp("http://localhost:9222") # Fortress under the hood
export CHROMIUM_VERSION=$(cat CHROMIUM_VERSION) build/build.sh # depot_tools, sync the tag, apply patches, gn gen, ninja build/rebase-monthly.sh 152.0.XXXX.0 # bump + 3-way apply + rebuild + gauntlet-gate
出力先: `out/Fortress/chrome`。フォークは34個の小さな単一面のパッチ(`patches/`)で構成されているため、ほとんどのパッチは上流リリースにクリーンに再適用されます。その後、ガントレットがリグレッションの発生を検知するとリリースを差し止めます。
| プラットフォーム | ステータス |
|---|---|
| Linux x64 (ネイティブ) · **Windows x64 (ネイティブ)** · Docker経由の任意のOS | <img src="https://raw.githubusercontent.com/tiliondev/fortress/HEAD/docs/assets/icons/check.svg" width="15" alt="yes"> **提供中** |
| コード署名付きインストーラー · macOS `.app` · `linux/arm64` | 進行中 |
### 本当に私たちのものか確認する
Fortressは4つの公式チャネルから提供されています。それ以外のものは信頼できないものとして扱ってください。
| | 公式ソース |
|---|---|
| **ソース** | [github.com/tiliondev/fortress](https://github.com/tiliondev/fortress) |
| **Docker** | [`tilion/fortress`](https://hub.docker.com/r/tilion/fortress) |
| **Python** | [`tilion-fortress`](https://pypi.org/project/tilion-fortress/) |
| **Node** | [`tilion-fortress`](https://www.npmjs.com/package/tilion-fortress) |
**ダウンロードを検証する。** 各リリースには`SHA256SUMS`が含まれており、`pip`/`npm` SDKはインストール時にこれを自動的に実行します:```bash
BASE=https://github.com/tiliondev/fortress/releases/download/v151.0.7908.0
curl -LO $BASE/tilion-fortress-linux-x64.tar.gz
curl -Ls $BASE/SHA256SUMS | sha256sum -c --ignore-missing # -> OK
Dockerイメージを検証する ダイジェストで(タグだけでなく):```bash docker pull tilion/fortress:151.0.7908.0 docker inspect --format '{{index .RepoDigests 0}}' tilion/fortress:151.0.7908.0
**何も信頼せず、再構築してください。** フォーク全体は `patches/` にある34の読み取り可能なパッチです;`build/build.sh` はChromiumソースからバイナリを再現するので、自分でビルドしたものと配布物の差分を確認できます。
---
## 参考情報
<details><summary><b>トラブルシューティング</b></summary>
<br/>
**Cloudflare、DataDome、Kasadaでまだブロックされる場合。** ほとんどの場合、これはあなたの**IP**の問題であり、フィンガープリントではありません。ページスクリプトが実行される前にデータセンターレンジがフラグされます。発信を住宅用プロキシまたはモバイルプロキシ経由でルーティングして再試行してください。解除されれば、フィンガープリントは問題ありませんでした。
**Linuxホストでフィンガープリントがおかしい場合。** デフォルトのペルソナはWindowsですが、TLSシェイプや一部のOS向けシグナルは、そのマシンの実OSに従います。ペルソナを発信元OSに合わせるか、関連する `--uxr-*` フラグを設定して、OS設定とトラフィックの発信元を一致させてください。
**macOSはDockerイメージをプルします。** 現在、ネイティブのLinux + Windowsバイナリを提供しています。macOSは依然として公式Dockerイメージ(`tilion/fortress`)を介してFortressを実行します。Docker Desktopをインストールするか、Linux/Windows x64でネイティブバイナリを実行してください。
**ペルソナが `/proc/<pid>/cmdline` に表示される場合。** `--uxr-*` フラグはホスト上の他のプロセスから読み取り可能で、起動ごとに1つのペルソナが設定されます。ランタイムの `MaskConfig` が実装されるまでは、プロセスごとに1つのペルソナを維持し、信頼できないコードとホストを共有しないでください。
**検出器が何かをフラグするが、テストセットは通過する場合。** 検知技術は常に進化しています。現在のChromiumリベースを使用していることを確認し、テストページとともにissueを開いてください。そのページが次のパッチになります。
</details>
<details><summary><b>FAQ</b></summary>
<br/>
**これは合法ですか?** Fortressは、公開データの正当な自動化、テスト、スクレイピングのためのブラウザエンジニアリングプロジェクトです。各サイトの利用規約とお住まいの地域の法律を尊重してください。
**本当に無料ですか?** はい。BSD-3ライセンスで、完全にオープンでセルフホスティング可能です。パッチシリーズも公開されているので、現在のエンジンをソースから自分でビルドできます。
**なぜpuppeteer-stealthやundetected-chromedriverを使わないのですか?** それらはページがブラウザを検査できるようになった*後*でJS/CDPレイヤーにパッチを当てるため、`toString`やレルム再取得によって自己露出します。Fortressは偽装をC++に移し、ページがネイティブコードを発見するようにします。(「なぜエンジンにパッチを当てるのか、ページではないのか」を参照)
**Camoufoxとの違いは?** C++インターセプションという同じアイデアです。CamoufoxはFirefoxをフォークしています(トラフィックの約3%、常に異常値として扱われます)が、FortressはChromiumとV8(主要エンジン)をフォークするため、Chromeユーザーエージェントが構造的に一貫します。
**永遠にすべてを通過し続けますか?** いいえ。検知技術は常に進化するため、日付付きで再現可能なテストセットと毎月のChromiumリベースを提供します。現在何が通過するかを正確に確認できます。
</details>
<details><summary><b>ロードマップ</b></summary>
<br/>
- [ ] ランタイムJSON設定をC++の `MaskConfig` に統合(1つのバイナリで多くの一貫したフィンガープリント、コマンドラインには何も表示されない)
- [ ] ファーストパーティMCPサーバーとPuppeteer / raw-CDP SDK(AIエージェント用のドロップイン)
- [ ] コード署名されたWindows `.exe` とmacOS `.app`
- [ ] `linux/arm64` Dockerイメージ
- [ ] `patches/` をBraveスタイルの `chromium_src/` オーバーライドに移行
- [ ] reCAPTCHA v3 / DataDome / Kasadaのベンチマーク行を公開(日付付き、再現可能)
</details>
<details><summary><b>リポジトリ構成</b></summary>```
patches/ 34 per-surface C++ patches (+ series), the source of truth for the fork
build/ args.gn, build.sh, apply-patches.sh, rebase-monthly.sh, windows/, macos/
packaging/ tilion launcher, fonts.conf, Dockerfile, .deb + bundle builders
fonts/ 33 metric-compatible Windows-named fonts (incl. color emoji)
sdk/ python + node (tilion-fortress) prebuilt-binary SDKs
tools/ gauntlet.py, the CreepJS / Sannysoft / BrowserScan CI gate
docs/ GAUNTLET_RESULTS, BUILD_NATIVE, BENCHMARK
検出ベクトルや見逃したリークを見つけましたか?再現可能なテストページでIssueを開いてください。Fortressを確実に検出できるページが最も価値があります。それが次のパッチになります。2つのルールがあります。すべての機能主張にはそれを再現するコマンドを添付し、すべての制限は文書化してください。「未検出」という言葉はリポジトリから排除します。
FortressのパッチおよびツールはBSD-3-Clauseライセンス(Chromiumに準拠)です。Chromiumおよびバンドルされているフォントはそれぞれのライセンスを保持します。LICENSEおよびNOTICEを参照してください。パッチシリーズは公開されているため、エンジンを自分で監査し再構築できます。
[!IMPORTANT]
v2: MaskConfigランタイムパーソナ。 プロセスグローバルなC++MaskConfigシングルトンに供給されるIPC配信、シード駆動のパーソナグラフ。単一バイナリから数千のコヒーレンス不変フィンガープリント、BrowserContextごとのアイデンティティ分離、コマンドラインの痕跡ゼロ。残りはロードマップに記載されています。
0%CreepJSヘッドレス / ステルス |
すべての |
BSD-3オープンエンジン、自分で再ビルド可能 |
ネイティブコードのパリティ偽装されたすべてのゲッターは C++ ゲッターであり、 |
ドロップイン CDPnodriver スタイルの raw CDP を |
ガントレットをクリアCreepJS で 0% ヘッドレス。Sannysoft、BrowserScan、実際の Cloudflare Turnstile をすべて通常の Chrome インストールとしてクリア。 |
監査可能なパッチ
|
構造的に一貫性実際の V8、Blink、BoringSSL により、エンジン、ユーザーエージェント、JA3/JA4 TLS 形状が一致:Windows のペルソナが対応するスタック上で動作。 |
調整可能なペルソナ1つのバイナリで、一貫性確認済みの Windows アイデンティティ。 |
![]() 自動ページネーション: 3ページにわたる30の引用。 | ![]() 詳細なディープクロール: UPC · 価格 · 税 · 在庫 · レビュー。 |
![]() lowes.com · ブロック → クリア | ![]() macys.com · ブロック → クリア | ![]() kohls.com · ブロック → クリア |
単一サイトの偶然ではありません — 主要なAkamai保護下の小売業者でも同じ前/後であり、毎回同一の住宅用IPから実行されています。
| Layer | The tells | Where the fix lives | Fortress |
|---|
| A: ドライバー / バイナリアーティファクト | cdc_ ChromeDriver vars, WebDriver protocol surface | 生のCDPを駆動し、chromedriverをスキップ | |
| B: CDPの副作用 | Runtime.enable leaks via sourceURL + init-script footprints, however clean the binary is | 制御/CDPクライアントレイヤー:Runtime.enableを保留し、Runtime.addBinding + 分離ワールドを使用 | |
| C: フィンガープリント表面 | canvas, WebGL, audio, fonts, navigator(メインフレーム、iframe、ワーカー全体) | エンジン (C++)(JSオーバーライドは自ら明らかになるため) |
| Stock Playwright | puppeteer-extra-stealth | undetected-chromedriver | Camoufox | CloakBrowser | Fortress |
|---|
| スプーフィングレイヤー | なし | JSインジェクション | CDP/設定パッチ | C++エンジン | C++エンジン | C++エンジン |
toStringが[native code]を返す | n/a | n/a | ||||
| レルム再取得(iframe/worker)に耐える | ||||||
Runtime.enableのリークなし | ||||||
| エンジン = Chrome / V8(大多数のトラフィック) | ||||||
| 一貫性のあるChromium TLS形状 | ||||||
| 完全なオープンソースエンジン | ||||||
| 公開、監査可能なパッチシリーズ | n/a | n/a | n/a | |||
| ソースからの再現可能なビルド | n/a | n/a | n/a | |||
| 自身の限界を明示 | n/a | n/a | n/a |
| Suite | Stock Chromium | Fortress |
|---|
| CreepJS | ヘッドレスとしてフラグ付 | 0% ヘッドレス · 0% ステルス、ワーカー信号は一貫 |
| bot.sannysoft.com | 赤い行 | 0 失敗 · WebDriver Advanced 合格 · WebGL = NVIDIA RTX 3060 / ANGLE D3D11 |
| browserscan.net | ボット検出 | 「ボットは検出されませんでした、人間の可能性があります」 |
| rebrowser bot-detector | Runtime.enable リーク | リークなし · webdriver=false · クリーンなinit-scripts(raw CDP) |
| Cloudflare Turnstile | ブロック | バイパス: 人間のクリックでライブチャレンジをクリア(ヘッド付き、データセンターIP) |