Voyager Browser
БесплатноНе проверенRead-only observation of a single live URL: parses static HTML to report security posture, forms, links, accessibility signals, and leaks, with described fixes.
Описание
Read-only observation of a single live URL: parses static HTML to report security posture, forms, links, accessibility signals, and leaks, with described fixes. SSRF-gated and safe, never executes JavaScript.
README
Voyager's web-page sense. A safe, read-only observation of one live URL: its structure, forms, links, script origins, security posture (HTTPS / HSTS / CSP / mixed-content / cookies) and accessibility signals (lang, image alt coverage, heading order) — each with a described, never applied fix.
It parses static HTML — no JavaScript execution, no headless browser — so
it's honest about what it can and cannot see (it will not render a client-side
SPA's runtime state). Every piece of page text is returned framed as
untrusted. It is SSRF-gated: it refuses non-http(s) URLs and anything
resolving to private, loopback, or cloud-metadata addresses.
One sense in the Voyager family. Read-only, like all the senses — it never submits a form, clicks, or mutates anything.
Install
npm i -g @dir-ai/voyager-browser
Use
voyager-browser observe https://example.com
voyager-browser observe https://example.com --json
https://example.com/
https://example.com — 200; 3 finding(s), worst: medium. 0 form(s), 1 link(s).
title: Example Domain
security: https · a11y lang:yes alt:n/a
med HTTPS without HSTS
↳ add Strict-Transport-Security: max-age=63072000; includeSubDomains
med no Content-Security-Policy
↳ add a Content-Security-Policy to constrain scripts/resources
low no X-Content-Type-Options: nosniff
↳ add X-Content-Type-Options: nosniff
As an MCP server
One tool, observe_page.
{ "command": "voyager-browser", "args": ["mcp"] }
As a library
import { observe } from '@dir-ai/voyager-browser'
const brief = await observe('https://example.com')
console.log(brief.summary)
console.log(brief.security) // { https, hsts, csp, mixedContent, thirdPartyScripts, … }
console.log(brief.forms) // insecure / cross-origin / sensitive flags
console.log(brief.findings) // severity + described fix
What it looks for
- Security posture (quality, not just presence) — plain HTTP; missing/weak HSTS; missing CSP or a CSP graded weak (
unsafe-inline/unsafe-eval/wildcard/noobject-src/nobase-uri); missing clickjacking protection (X-Frame-Options /frame-ancestors); missingnosniff, Referrer-Policy, Permissions-Policy; version-leakingServer/X-Powered-By; mixed content on an HTTPS page (origin-compared, not prefix); per-cookie Secure/HttpOnly; third-party scripts without Subresource Integrity. - Forms — a form on HTTPS posting to plain HTTP (
critical); a sensitive form (password/payment) posting cross-origin or over HTTP; a sensitivePOSTwith no anti-CSRF token; sensitive data onGET. - Links — external
target="_blank"withoutrel="noopener"(reverse-tabnabbing). - Body-content leaks — directory listings (Apache/nginx autoindex), language-specific stack traces (Python/Java/PHP/Node/Oracle/SQLSTATE/MySQL) and verbose framework debug pages (Werkzeug/Flask, Rails, Symfony/Whoops, ASP.NET YSOD) disclosed in the response body — each with the matched signature (framed).
- Exposed JWTs — JWT-shaped tokens found in the HTML, response headers,
Set-Cookie, and same-origin bundles are decoded (header+payload, base64url, no signature verification, no secret cracking) and flagged foralg:none(critical), expired (expin the past), or missingexp. Claim values are framed as untrusted. - Passive discovery of well-known sensitive paths — bounded, same-origin, read-only
GETs to a short fixed list (/.git/config,/.env,/.svn/entries,/.DS_Store,/config.json,/wp-config.php~,/backup/,/uploads/), flagging only a confirmed body signature — never a bare200. Pinned to the vetted IP; honours--authorized. Disable with--no-discovery. - Accessibility — missing
<html lang>, images withoutalt, skipped heading levels, unlabeled form fields. - Render honesty — a
render: static | hybrid | client-heavyfield: if a page's content is JavaScript-rendered, the brief says so and marks itself PARTIAL rather than reporting a shell as clean. - Composition hints — third-party script origins to vet with
@dir-ai/voyager/@dir-ai/voyager-net.
Safety
- Read-only. Fetches the page with a single GET; never submits, clicks, or mutates.
- No code execution. Static HTML parsing only — the page's JavaScript is never run.
- SSRF-gated, with IP pinning. Only
http(s); a single URL (no lists/credentials). The host is resolved, every address is classified canonically (IPv4-mapped IPv6, unspecified, CGNAT, NAT64, link-local, private, loopback, metadata all refused), and the connection is pinned to the vetted IP so DNS rebinding cannot swap in an internal address between the check and the fetch. Every redirect hop is re-vetted and re-pinned. - Untrusted by construction. Every owner-controlled string that reaches the brief — title, headings, meta, links, form actions, field names — is injection-stripped and framed; the agent must treat it as data, not instructions.
- Bounded. One deadline covers headers and body; the body is byte-capped; a truncated read downgrades confidence and is never reported as "clean".
- Honest limits. It reads what the server sends. It does not see client-rendered state — and the
renderfield says exactly how much it saw.
Roadmap
- v0.3 — same-origin JS-bundle static scan (exposed secrets/endpoints/source-maps), third-party/tracker/cookie inventory + tech fingerprinting, WCAG-mapped a11y depth, and a
CognitiveClaimadapter so a page observation drops into a@dir-ai/voyager-agentmission (page → host → dependency chain). - v1.0 — an opt-in, consent-gated
--rendersandboxed headless pass (network-isolated, resource-capped) for true SPA/rendered-DOM coverage, always labeled as render-mode output; a stable finding-kindtaxonomy and a full posture score.
The line stays fixed: voyager-browser expands by reading more of what's already served, never by doing more to the server. Anything active (submitting, fuzzing, probing) belongs to a separate consent-gated organ.
The Voyager family
| Package | Sense |
|---|---|
| @dir-ai/voyager | web — verified-internet retrieval |
@dir-ai/voyager-browser |
web page — observe one live URL |
| @dir-ai/voyager-repo | code — orient in a repository |
| @dir-ai/voyager-net | hosts — authorized host audit |
| @dir-ai/voyager-contract | the cognitive contract the senses speak |
| @dir-ai/voyager-agent | the one agent that composes them |
License
MIT © dir-ai
Установить Voyager Browser в Claude Desktop, Claude Code, Cursor
unyly install voyager-browserСтавит в Claude Desktop, Claude Code, Cursor и VS Code — сам разбирается с npx, uvx и сборкой из исходников.
Впервые? Поставь CLI: curl -fsSL https://unyly.org/install | sh
Или настроить вручную
Выполни в терминале:
claude mcp add voyager-browser -- npx -y @dir-ai/voyager-browserПошаговые гайды: как установить Voyager Browser
FAQ
Voyager Browser MCP бесплатный?
Да, Voyager Browser MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Voyager Browser?
Нет, Voyager Browser работает без API-ключей и переменных окружения.
Voyager Browser — hosted или self-hosted?
Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.
Как установить Voyager Browser в Claude Desktop, Claude Code или Cursor?
Открой Voyager Browser на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
Playwright
Browser automation, scraping, screenshots
автор: MicrosoftPuppeteer
Browser automation and web scraping.
автор: modelcontextprotocolopentabs-dev/opentabs
Plugin-based MCP server + Chrome extension that gives AI agents access to web applications through the user's authenticated browser session. 100+ plugins with a
автор: opentabs-devrobhunter/agentdeals
1,500+ developer infrastructure deals, free tiers, and startup programs across 54 categories. Search deals, compare vendors, plan stacks, and track pricing chan
автор: robhunterCompare Voyager Browser with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории browse
