
Kloakt
io.github.KultMember6Banger由 GitHub 账号 KultMember6Banger 发布v0.1.2更新于 Oct 24, 2026
Cloaked headless browser for AI agents — stealth TLS, smart extraction, SPA fallback
概览
Kloakt 是一个本地无头浏览器 MCP 服务器,让助手提取干净的 Markdown、抓取网页、生成页面结构快照并驱动持久浏览器会话。
- 可以做什么
- Kloakt 提供 12 个 MCP 工具:kloakt_extract 返回干净的 Markdown 或通过 CSS 选择器 schema 提取结构化字段,kloakt_fetch 进行底层 HTML/文本/链接/JS 求值抓取,kloakt_scrape 并行处理多个 URL,kloakt_search 和 kloakt_crawl 用于发现链接和在预算内爬取。它还提供 kloakt_snapshot 生成可访问性/结构树,kloakt_screenshot 通过系统 Chrome 生成真实 PNG,以及会话工具(open、act、read、list、close),在多次调用间保留 Cookie 和页面状态。
- 适用场景
- 当助手需要在本地读取或操作网页时使用:提取文章或文档内容、批量抓取 URL 列表、处理 JavaScript 密集的单页应用,或在持久会话中执行填写并提交表单等多步交互。
- 运行要求
- 作为本地进程通过 stdio 运行;README 显示用 python3 加 mcp_server.py 路径启动。可通过预编译二进制、Homebrew、cargo 或源码安装;从源码构建需要 Rust 1.75+。截图需要本地安装 Chrome/Chromium/Edge,可用 KLOAKT_CHROME 环境变量覆盖。未声明账户或 API 密钥。
安装
在 SourceWeft 中
- 打开 控制台中的 Kloakt,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
Kloakt
Cloaked headless browser for AI agents.
Lightweight, stealthy, built in Rust. Based on Obscura.
Kloakt is a headless browser built for AI agents. It runs JavaScript via V8, extracts clean markdown from any page (including SPAs), and exposes tools via MCP for Claude Code and other AI systems.
Beyond one-shot extraction it can drive persistent, stateful sessions (click, type, navigate — cookies and page/JS state persist across calls), emit an accessibility/structure snapshot as an agent-vision substitute, and capture real screenshots via system Chrome — 12 MCP tools in all.
Why Kloakt?
Install
Prebuilt binary (recommended)
One-line install (Linux & macOS). Downloads the right binary for your OS/arch from the latest GitHub Release and installs it to ~/.local/bin (or /usr/local/bin when run as root):
You can pin a version or override the install dir:
Windows: download kloakt-x86_64-windows.zip from the Releases page and extract kloakt.exe onto your PATH.
Homebrew (macOS)
(Until a dedicated tap exists, brew tap KultMember6Banger/kloakt https://github.com/KultMember6Banger/kloakt then brew install kloakt.)
cargo install
Builds the CLI from crates.io (requires Rust toolchain; first build compiles V8, ~5 min):
This installs the kloakt binary. To build with stealth mode, add --features stealth.
Build from source
Requires Rust 1.75+ (rustup.rs). First build takes ~5 min (V8 compiles from source, cached after).
Quick Start
Extract content (AI agent use)
Fetch a page
Start the CDP server
Scrape in parallel
Snapshot page structure (agent vision)
kloakt has no rasterizer, so this is the lightweight "what's on the page and what can I act on" view for agents that work from structure rather than pixels.
Screenshot (via system Chrome)
Persistent sessions
Drive a named session whose cookies and page/JS state survive across separate
invocations, backed by a running kloakt serve daemon:
Smart Extraction
The extract command uses a multi-phase pipeline optimized for AI agents:
- Noise removal — strips cookie banners, ads, popups, nav, social widgets
- Content scoring — text-density algorithm (Readability-like) finds the main content block
- Markdown conversion — DOM-to-markdown with absolute URL resolution
- SPA fallback — when JS rendering fails, extracts from meta tags, Open Graph, JSON-LD, and noscript content
Works on static HTML, server-rendered pages, and pure client-side SPAs (React, Vue, etc.).
Python API
MCP Server (Claude Code)
Kloakt includes an MCP server for use as a Claude Code tool:
Exposes 12 native tools:
Puppeteer / Playwright
Puppeteer
The CDP server embeds a per-session token in the WebSocket path (like Chrome). Connect via
browserURL so the client discovers the token from /json/version automatically — don't
hardcode the ws://.../devtools/browser path.
Playwright
Stealth Mode
Enable with --features stealth.
- Per-session fingerprint randomization (GPU, screen, canvas, audio, battery)
- Realistic
navigator.userAgentData(Chrome 145, high-entropy values) event.isTrusted = truefor dispatched events- Native function masking (
Function.prototype.toString()→[native code]) navigator.webdriver = undefined- Realistic
Accept-Language+ Client Hints (Sec-CH-UA) request headers - Per-session randomized
navigator.languages - TLS fingerprint (JA3) rotation across Chrome 145 Linux / Windows / macOS profiles
- 3,520 tracker domains blocked
CLI Reference
kloakt extract <URL>
Structured extraction with --schema
Pass a JSON object mapping field names to CSS selectors. Suffix a selector with [] to
return all matches as a list, and with @attr to return an attribute instead of text:
This is also exposed through the MCP kloakt_extract tool via an optional schema argument.
kloakt fetch <URL>
kloakt serve
kloakt scrape <URL...>
kloakt snapshot <URL>
Emit an indexed accessibility/structure tree (always JSON) — an agent-vision substitute.
Each node is compact: i (index), tag, depth, vis (visible), and when present click,
role, text, type/value, href, id, name, label.
kloakt screenshot <URL>
Capture a real PNG by delegating to a locally-installed Chrome/Chromium/Edge (kloakt has no
rasterizer). Errors clearly if none is found; override detection with --chrome <path> or the
KLOAKT_CHROME env var.
kloakt session <COMMAND>
Drive a persistent, named session against a running kloakt serve daemon. Cookies and
page/JS state survive across separate invocations (client state in ~/.kloakt/sessions/<name>.json).
Multi-statement JS passed to
evalreturnsnull(the daemon evaluates a single expression); wrap it in an IIFE —(function(){ ...; return v })()— to get a value back.
kloakt benchmark <URL...>
Measure load performance per URL — average/min/max load time, request count, bytes, and DOM
node count — as a table or --json.
Challenge / bot-wall detection
kloakt extract --json includes a "challenge" field reporting a detected captcha or bot
wall (recaptcha, hcaptcha, turnstile, cloudflare, datadome, perimeterx) or
null. This is detection only — kloakt tells you a page is gated so an agent can stop
and back off; it does not attempt to solve or evade challenges. (Also surfaced via the MCP
kloakt_extract output and the Python Page.challenge field.)
Global flags
Security note: by default kloakt refuses to fetch private, loopback, link-local, and cloud-metadata addresses (SSRF protection), and rejects
file://URLs. Use--allow-privateonly when you intentionally need to reach internal services. The CDP server binds to127.0.0.1and validates theHostheader to block DNS-rebinding.
CDP API
Full Chrome DevTools Protocol support for Puppeteer/Playwright compatibility.
License
Apache 2.0 — Based on Obscura by h4ckf0r0day.
来源:README.md,提交 6159897
工具
0版本历史
1- v0.1.2最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分