Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
grubcrawler — Самый быстрый в мире агентный краулер. Восстановлен. Переосмыслен. Готов к войне. | Kitploit
Инструменты/GitHubGitHub/deepbluedynamics/grubcrawler
OSINT (Разведка открытых источников)РазведкаДинамический анализ (песочница)Веб-прокси и перехватСбор информацииВеб-безопасностьТестирование на ПроникновениеУтилиты и фреймворкиМашинное ОбучениеRed TeamingКраулерАнти-Бот
34720 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
GitHubdeepbluedynamics/grubcrawler

grubcrawler

Самый быстрый в мире агентный краулер. Восстановлен. Переосмыслен. Готов к войне.

РепозиторийСайт
Grub Crawler

Лицензия Python FastAPI Playwright MCP Ghost Protocol Живой стрим Camoufox Прокси


Агентный веб-краулер с защитой от обнаружения, резервным извлечением через зрение и пиринговой сеткой.


Эндпоинты · Mesh · Анти-обнаружение · Ghost Protocol · Живой стрим · MCP-инструменты · Быстрый старт · Бенчмарки · Архитектура


Полноценный движок веб-краулинга с рендерингом JavaScript, анти-детект браузером Camoufox, маршрутизацией прокси по запросу и автономными агентскими циклами. Преобразует страницы в чистый Markdown с помощью нативного движка извлечения на Rust. Когда стандартный краулинг блокируется Cloudflare, CAPTCHA или JavaScript-стенами, Ghost Protocol делает скриншот и извлекает содержимое через компьютерное зрение (Claude, GPT-4o или Ollama). Поддерживает мульти-провайдерскую оркестрацию LLM через OpenAI, Anthropic и Ollama в одном сеансе. Узлы координируются через пиринговую сетку на основе сплетен для распределённого краулинга.


Почему Grub

Мы объединили возможности каждого крупного краулера — и добавили то, чего нет ни у одного из них.

Самостоятельно размещаемые краулеры

Облачные / управляемые краулеры

Только Grub имеет Ghost Protocol — автоматический резерв на основе зрения, который делает скриншоты заблокированных страниц и извлекает содержимое через LLM, когда обычный краулинг не удаётся. Предотвращение (Camoufox + прокси + стелс) обрабатывает 95% блокировок. Ghost Protocol обрабатывает остальное.

Эндпоинты API

Основной краулинг

Агент (Режим B)

Управление заданиями

Удалённый кеш

Управление сессиями

Живой стрим

Mesh

Система

MCP-инструменты (grub-crawl.py)

MCP-мост открывает все возможности любому MCP-совместимому хосту:

Внутренние модули

Ядро агента (app/agent/)

Адаптеры провайдеров (app/agent/providers/)

Политические шлюзы (app/policy/)

Наблюдаемость (app/observability/)

Уровень API

Анти-обнаружение (app/)

ФайлНазначениеСтатус
stealth.pyСтелс-патчи playwright-stealth, блокировка трекерных доменовГотово
proxy.pyРазрешение прокси по запросу с резервным envГотово

Mesh (app/mesh/)

Инфраструктура

Машина состояний агента```

INIT -> PLAN -> EXECUTE_TOOL -> OBSERVE -> PLAN -> ... -> RESPOND -> STOP | | +-- policy_denied ---------------------->+ +-- max_steps / max_wall_time / max_failures -> STOP +-- no_op_loop (3x empty) ------------> STOP +-- blocked (ghost trigger) -----------> GHOST -> OBSERVE

root@kitploit:~
Stop conditions enforced every iteration:
- `max_steps` (default: 12)
- `max_wall_time` (default: 90s)
- `max_failures` (default: 3)
- `no_op_loop` (3 consecutive empty responses)
- `policy_denied` (blocked tool/domain)
- `completed` (agent responds with text)

## Антидетекция

Три уровня антидетекции, которые накладываются друг на друга. Профилактика предотвращает блокировки до их появления. Ghost Protocol обрабатывает их после.

### Camoufox Engine

Подключаемый антидетект-браузер с подменой отпечатков на уровне C++. Никаких ручных трюков с User-Agent — Camoufox генерирует реалистичные отпечатки для каждого контекста на уровне браузера, включая canvas, WebGL, шрифты и свойства navigator.```bash
# Switch engine (default: chromium)
BROWSER_ENGINE=camoufox

Прокси по запросу

Направляйте трафик обхода через пулы резидентных, датацентровых или пользовательских прокси. Переопределение для каждого запроса с помощью переменных окружения по умолчанию. Полная конфигурация прокси, совместимая с Playwright.```bash

Env-based default

PROXY_SERVER=http://proxy.example.com:10001 PROXY_USERNAME=your_username PROXY_PASSWORD=your_password

Or per-request

curl -X POST http://localhost:6792/api/crawl
-H "Content-Type: application/json"
-d '{ "url": "https://example.com", "options": { "proxy": { "server": "http://proxy.example.com:10001", "username": "your_username", "password": "your_password" } } }'

root@kitploit:~
### Стелс-режим

Опциональное включение патчей `playwright-stealth` для Chromium (пропускается для Camoufox, где встроено). Блокирует 20+ отслеживающих/аналитических доменов (Google Analytics, DataDome, PerimeterX и т.д.) для уменьшения поверхности цифрового отпечатка.```bash
STEALTH_ENABLED=true
BLOCK_TRACKING_DOMAINS=true

Ghost Protocol

Когда результат обхода сигнализирует о блокировке от ботов (Cloudflare challenge, CAPTCHA, пустая оболочка SPA), агент может переключиться в режим невидимки:

  1. Сделать скриншот всей страницы через Playwright
  2. Отправить изображение LLM с возможностью зрения (Claude Sonnet или GPT-4o)
  3. Извлечь содержимое из отображаемых пикселей
  4. Вернуть извлеченный текст с render_mode: "ghost" в трассировке

Это полностью обходит основанную на DOM защиту от ботов.

Требует AGENT_GHOST_ENABLED=true. Автоматически срабатывает при обнаружении блокировок, когда AGENT_GHOST_AUTO_TRIGGER=true.

Mesh

Агенты общаются с агентами. Каждый экземпляр Grub является одновременно и работником, и координатором. Локальный узел разгружает облако, облако делегирует локальному. Вызовы инструментов прозрачно пересекают провод.``` Node A (local) Node B (cloud) ┌─────────────┐ ┌─────────────┐ │ AgentEngine │ │ AgentEngine │ │ ↓ │ │ ↓ │ │ MeshDispatcher ──── HTTP ────→ MeshDispatcher │ │ ↓ │ │ ↓ │ │ Dispatcher │ │ Dispatcher │ │ ↓ │ │ ↓ │ │ ToolRegistry │ │ ToolRegistry │ └─────────────┘ └─────────────┘ ↕ heartbeat (15s) ↕ └────────────────────────────────┘

root@kitploit:~
**Как это работает:**
- **Обнаружение** — узлы присоединяются через список seed-пиров, затем обмениваются (1-hop), чтобы узнать о других
- **Heartbeat** — каждые 15 секунд узлы обмениваются метриками загрузки. 3 пропуска = нездоровый узел. 2 минуты = удаление
- **Маршрутизация** — MeshDispatcher оценивает все узлы по загрузке, местоположению и близости, затем направляет вызовы инструментов на лучший узел
- **Макс. 1-hop** — Узел A → B только, никогда A → B → C. Предотвращает петли маршрутизации
- **Локальное резервирование** — если удалённое выполнение не удалось, используется локальный Dispatcher
- **HMAC-аутентификация** — весь трафик mesh подписывается общим секретом (SHA-256, TTL 60с)

### Запуск Mesh из 2-х узлов локально```bash
# Docker Compose (recommended)
./deploy.sh mesh           # Linux/Mac
./deploy.ps1 -Target mesh  # Windows

# Verify
curl http://localhost:6792/mesh/peers  # Node A sees Node B
curl http://localhost:6793/mesh/peers  # Node B sees Node A

Подключение локального приложения к Cloud Run```bash

Deploy to Cloud Run with mesh

./deploy.sh cloudrun latest --mesh-peer http://your-local-ip:6792 --mesh-secret mysecret

Start local node

MESH_ENABLED=true MESH_SECRET=mysecret MESH_PEERS=https://your-cloud-run-url
MESH_ADVERTISE_URL=http://your-local-ip:6792
uvicorn app.main:app --port 6792

root@kitploit:~
### Ручная настройка```bash
# Node A
MESH_ENABLED=true MESH_NODE_NAME=local MESH_SECRET=test123 \
  MESH_ADVERTISE_URL=http://localhost:6792 \
  uvicorn app.main:app --port 6792

# Node B
MESH_ENABLED=true MESH_NODE_NAME=cloud MESH_SECRET=test123 \
  MESH_PEERS=http://localhost:6792 \
  MESH_ADVERTISE_URL=http://localhost:8081 \
  uvicorn app.main:app --port 8081

Когда mesh отключена (MESH_ENABLED=false, по умолчанию), Grub работает как обычный одноузловой сканер с нулевыми накладными расходами mesh.

Прямая трансляция

Наблюдайте за работой сканера в реальном времени. Постоянный пул прогретых экземпляров Chromium транслирует кадры области просмотра через WebSocket или MJPEG.

WebSocket — подключитесь и отправляйте интерактивные команды:```javascript const ws = new WebSocket("ws://localhost:6792/stream/my-session?url=https://example.com"); ws.onmessage = (e) => { const msg = JSON.parse(e.data); if (msg.type === "frame") document.getElementById("viewport").src = "data:image/jpeg;base64," + msg.data; }; // Navigate, click, scroll, type — all over the same socket ws.send(JSON.stringify({ action: "navigate", url: "https://example.com/pricing" })); ws.send(JSON.stringify({ action: "click", selector: "#signup-btn" })); ws.send(JSON.stringify({ action: "scroll", direction: "down" }));

root@kitploit:~
**MJPEG** — поместите его в тег ``, мгновенное видео:```html
<img src="http://localhost:6792/stream/my-session/mjpeg?url=https://example.com" />

Требуется BROWSER_STREAM_ENABLED=true. Каждый экземпляр Chromium использует ~150-300 МБ ОЗУ.

Быстрый старт

Локальная разработка```bash

git clone cd grub-crawl cp .env.example .env pip install -r requirements.txt uvicorn app.main:app --reload --host 0.0.0.0 --port 6792

root@kitploit:~
### Включить Agent Mode B```bash
# Add to .env
AGENT_ENABLED=true
OPENAI_API_KEY=sk-...
# or
ANTHROPIC_API_KEY=sk-ant-...
AGENT_PROVIDER=anthropic

Отправить задачу агента```bash

curl -X POST http://localhost:6792/api/agent/run
-H "Content-Type: application/json"
-d '{ "task": "Find the pricing page on example.com and extract plan details", "max_steps": 10, "allowed_domains": ["example.com"] }'

root@kitploit:~
### Docker```bash
# Single node
./deploy.sh local            # or ./deploy.ps1 -Target local

# 2-node mesh
./deploy.sh mesh             # or ./deploy.ps1 -Target mesh

# Cloud Run
./deploy.sh cloudrun v1.0.0  # or ./deploy.ps1 -Target cloudrun -Tag v1.0.0

# Cloud Run + mesh (connect to local node)
./deploy.sh cloudrun v1.0.0 --mesh-peer http://your-ip:6792 --mesh-secret mykey

Антиобнаружение (Camoufox + Proxy)```bash

Add to .env

BROWSER_ENGINE=camoufox STEALTH_ENABLED=true BLOCK_TRACKING_DOMAINS=true

Optional: proxy

PROXY_SERVER=http://proxy.example.com:10001 PROXY_USERNAME=your_username PROXY_PASSWORD=your_password

root@kitploit:~
### Ghost Protocol (обход антибот-защиты)```bash
# Add to .env
AGENT_GHOST_ENABLED=true

curl -X POST http://localhost:6792/api/agent/ghost \
  -H "Content-Type: application/json" \
  -d '{"url": "https://blocked-site.com"}'

Прямая трансляция браузера```bash

Add to .env

BROWSER_STREAM_ENABLED=true BROWSER_POOL_SIZE=2

MJPEG (open in browser)

open "http://localhost:6792/stream/demo/mjpeg?url=https://example.com"

root@kitploit:~
## Конфигурация

### Сервер
- `HOST` (по умолчанию: 0.0.0.0)
- `PORT` (по умолчанию: 6792)
- `DEBUG` (по умолчанию: false)

### Хранилище
- `STORAGE_PATH` (по умолчанию: ./storage)
- `RUNNING_IN_CLOUD` (по умолчанию: false)
- `GCS_BUCKET_NAME`
- `GOOGLE_CLOUD_PROJECT`

### Аутентификация
- `DISABLE_AUTH` (по умолчанию: false)
- `GNOSIS_AUTH_URL` (по умолчанию: http://gnosis-auth:5000)

### Движок браузера
- `BROWSER_ENGINE` — chromium | camoufox (по умолчанию: chromium)

### Обход
- `MAX_CONCURRENT_CRAWLS` (по умолчанию: 5)
- `CRAWL_TIMEOUT` (по умолчанию: 30)
- `ENABLE_JAVASCRIPT` (по умолчанию: true)
- `ENABLE_SCREENSHOTS` (по умолчанию: false)

### Прокси
- `PROXY_SERVER` — URL прокси (например, http://proxy:10001)
- `PROXY_USERNAME`
- `PROXY_PASSWORD`
- `PROXY_BYPASS` — список обхода, разделенный запятыми

### Стелс
- `STEALTH_ENABLED` (по умолчанию: false) — патчи playwright-stealth
- `BLOCK_TRACKING_DOMAINS` (по умолчанию: false) — блокировать запросы аналитики/отслеживания

### Агент (Режим B)
- `AGENT_ENABLED` (по умолчанию: false)
- `AGENT_MAX_STEPS` (по умолчанию: 12)
- `AGENT_MAX_WALL_TIME_MS` (по умолчанию: 90000)
- `AGENT_MAX_FAILURES` (по умолчанию: 3)
- `AGENT_ALLOWED_TOOLS` — разрешённый список, разделённый запятыми
- `AGENT_ALLOWED_DOMAINS` — разрешённый список, разделённый запятыми
- `AGENT_BLOCK_PRIVATE_RANGES` (по умолчанию: true)
- `AGENT_REDACT_SECRETS` (по умолчанию: true)

### Поставщики LLM
- `AGENT_PROVIDER` — openai | anthropic | ollama (по умолчанию: openai)
- `OPENAI_API_KEY`
- `OPENAI_MODEL` (по умолчанию: gpt-4.1-mini)
- `ANTHROPIC_API_KEY`
- `ANTHROPIC_MODEL` (по умолчанию: claude-3-5-sonnet-latest)
- `OLLAMA_BASE_URL` (по умолчанию: http://localhost:11434)
- `OLLAMA_MODEL` (по умолчанию: llama3.1:8b-instruct)

### Протокол Ghost
- `AGENT_GHOST_ENABLED` (по умолчанию: false)
- `AGENT_GHOST_AUTO_TRIGGER` (по умолчанию: true)
- `AGENT_GHOST_VISION_PROVIDER` — наследуется от AGENT_PROVIDER
- `AGENT_GHOST_MAX_IMAGE_WIDTH` (по умолчанию: 1280)

### Mesh
- `MESH_ENABLED` (по умолчанию: false) — главный переключатель
- `MESH_PEERS` — URL-адреса одноранговых узлов, разделённые запятыми
- `MESH_NODE_NAME` — человекочитаемое имя (по умолчанию: hostname)
- `MESH_SECRET` — общий HMAC-секрет для аутентификации между узлами
- `MESH_ADVERTISE_URL` — URL, который используют одноранговые узлы для доступа к этому узлу
- `MESH_PREFER_LOCAL` (по умолчанию: true) — предпочтение локального выполнения
- `MESH_HEARTBEAT_INTERVAL_S` (по умолчанию: 15)
- `MESH_PEER_TIMEOUT_S` (по умолчанию: 45) — отметить как нерабочий после этого
- `MESH_PEER_REMOVE_S` (по умолчанию: 120) — удалить из таблицы одноранговых узлов после этого
- `MESH_REMOTE_TIMEOUT_MS` (по умолчанию: 35000) — тайм-аут для удаленных вызовов инструментов

### Прямая трансляция
- `BROWSER_POOL_SIZE` (по умолчанию: 1)
- `BROWSER_STREAM_ENABLED` (по умолчанию: false)
- `BROWSER_STREAM_QUALITY` (по умолчанию: 25) — качество JPEG 1-100
- `BROWSER_STREAM_MAX_WIDTH` (по умолчанию: 854)
- `BROWSER_STREAM_MAX_LEASE_SECONDS` (по умолчанию: 300)

## Контракт ответа

`POST /api/markdown` возвращает:

`success`, `url`, `final_url`, `status_code`, `markdown`, `markdown_plain`, `content`, `render_mode`, `wait_strategy`, `timings_ms`, `blocked`, `block_reason`, `captcha_detected`, `http_error_family`, `body_char_count`, `body_word_count`, `visible_char_count`, `visible_word_count`, `visible_similarity`, `quarantined`, `quarantine_reason`, `policy_flags`, `content_quality`, `extractor_version`, `normalized_url`, `content_hash`

### Качество содержимого

- `blocked` — анти-бот/капча/вызов
- `empty` — очень слабый сигнал
- `minimal` — тонкие/страницы ошибок
- `sufficient` — пригодно для суммаризации

Не выполнять суммаризацию, если только `content_quality` не равно `"sufficient"`.

### Защита от внедрения подсказок

- `quarantined=true` означает, что экстрактор обнаружил в извлеченном содержимом текст, похожий на инструкции, который отсутствовал в видимом отображаемом тексте страницы (обычно при злоупотреблении `.sr-only`/визуально скрытыми элементами).
- При карантине `content_quality` понижается до `minimal`, `policy_flags` включает `hidden_text_suspected` и `quarantined`, а выходные данные `content`/`markdown` обнуляются (fail-closed).

### Формат ошибки```json
{"error": "http_error|validation_error|internal_error", "status": 400, "details": {}}

Бенчмарки

Арена состязаний — сравнение один на один между Grub, Crawl4AI, Firecrawl (self-hosted) и Scrapy. Все тесты выполняются на одной машине, одних и тех же URL, в одинаковых условиях. Grub запускается первым в качестве базовой линии, остальные адаптеры в случайном порядке с задержкой в 10 секунд между каждым для предотвращения смещения из-за ограничения скорости.

Скорость одиночного URL (мс, чем меньше, тем лучше)

Grub побеждает в 4 из 5 заездов по скорости одиночного URL. Конвертация в Markdown выполняется за 0–21 мс через нативный движок Rust (grub_md).

Разбивка фаз Grub (серверные мс)

Навигация доминирует; конвертация в markdown занимает менее миллисекунды на большинстве страниц благодаря движку Rust.

Пропускная способность пакетов (мс, чем меньше, тем лучше)

Grub побеждает в 2 из 3 размеров пакетов. Стоимость на URL: 163–312 мс (Grub) против 255–477 мс (остальные).

Как запустить```bash

Start Grub

docker compose up -d

Start Firecrawl (optional)

docker compose -f combat/firecrawl-compose.yaml up -d

Install combat deps

pip install crawl4ai scrapy markdownify tabulate

Run the arena

pytest combat/ -m combat -v

Generate report

python -m combat.report

root@kitploit:~
## Статус разработки

### Этап 1: Базовая инфраструктура ✅
### Этап 2: Сканирование ✅
### Этап 3: Модуль агента ✅
- [x] Ядро агента — конечный автомат, типы, ошибки (W1)
- [x] Единый контракт инструментов — диспетчер с тайм-аутом/повтором (W2)
- [x] Политические шлюзы — разрешённые домены, запрет частных диапазонов, редактирование (W3)
- [x] Наблюдаемость — EventBus, TraceCollector, сохранение RunSummary (W4)
- [x] Проводка API — `/api/agent/run`, `/api/agent/status`, JobType.AGENT_RUN (W5)
- [x] Адаптеры провайдеров — OpenAI, Anthropic, Ollama с резервным вариантом (W6)
- [x] Флаги конфигурации — настройки агента, провайдера, ghost, потока (W7)

### Этап 4: Протокол Ghost ✅
- [x] Определение триггера режима маскировки (W8)
- [x] Конвейер захвата снимков экрана (W8)
- [x] Извлечение данных с помощью зрения через Claude/GPT-4o (W8)
- [x] Цепочка резервных вариантов в ядре (W8)
- [x] Инструмент Ghost для внешних вызывающих (W8)
- [x] Ghost MCP инструмент + REST конечная точка (W8)

### Этап 5: Потоковый браузер в реальном времени ✅
- [x] Постоянный пул браузеров с арендой/возвратом (W9)
- [x] Релей передачи экрана через CDP (W9)
- [x] WebSocket конечная точка с интерактивными командами (W9)
- [x] Резервный поток MJPEG (W9)
- [x] Конечные точки состояния потока и состояния пула (W9)

### Этап 5.5: Анти-обнаружение ✅
- [x] Движок браузера с анти-обнаружением Camoufox (W10)
- [x] Прокси на каждый запрос с резервной переменной среды (W10)
- [x] Скрытые патчи для Chromium (W10)
- [x] Блокировка доменов трекеров/аналитики (W10)
- [x] Исправление определения формата зрения Anthropic (W10)

### Этап 6: Координатор Mesh ✅
- [x] Обнаружение пиров с помощью сплетен (1 хоп) (W11)
- [x] Межузловая аутентификация HMAC-SHA256 (W11)
- [x] Цикл сердцебиения с метриками нагрузки и повтором начального узла (W11)
- [x] MeshDispatcher — прозрачная маршрутизация инструментов между узлами (W12)
- [x] Оценка на основе нагрузки с бонусом за локальность/сродство (W12)
- [x] Скрипты развёртывания — локальный, mesh, Cloud Run (W12)
- [x] Топология mesh из 2 узлов в Docker Compose (W12)
- [x] Встроенная страница приветствия (grub-site) (W12)

### Этап 7: Производительность и усиление
- [x] Движок Markdown на Rust (`grub_md`) — нативное расширение PyO3, преобразование за суб-миллисекунды
- [x] Арена боевых испытаний — автоматизированные бенчмарки против Crawl4AI, Firecrawl, Scrapy
- [x] Набор модульных тестов — 176 тестов по всем модулям
- [ ] Улучшения обработки ошибок
- [ ] Мониторинг и оповещения

Полный план архитектуры см. в [MASTER_PLAN.md](https://github.com/deepbluedynamics/grubcrawler/blob/HEAD/MASTER_PLAN.md).

## Лицензия

Лицензия проекта Grub Crawler
Скачать инструмент
ФункцияCrawl4AIFirecrawlScrapyGrub
Рендеринг JS✅ Playwright✅ Playwright❌ только HTTP✅ Playwright
Анти-детект браузерстелс-плагин❌❌✅ Camoufox
Ghost Protocol❌❌❌✅ авто-резерв
Прокси по запросу✅ эскалация❌промежуточное ПО✅ по запросу
Стелс-патчи✅❌❌✅ по запросу
Агентский цикл✅ агентный✅ /agent❌ пауки✅ ограниченная SM
Поток живого браузера✅ WebSocket✅ Live View❌✅ WS + MJPEG
Вывод в Markdown✅ Fit Markdown✅ ядро❌✅ Rust-движок
MCP-инструменты✅ сообщество✅ официальные⚠️ сообщество✅ 15 инструментов
Мульти-провайдерская LLM✅ все LLM⚠️ Gemini❌✅ OpenAI/Anthropic/Ollama
P2P сетка❌❌❌✅ протокол сплетен
Принуждение политик❌❌❌✅ доменные шлюзы + редактирование
Защита от инъекций в промпты❌❌❌✅ карантин + diff видимого текста
ЛицензияApache 2.0AGPL-3.0BSDПроприетарная
ЦенаБесплатноБесплатно–$333/месБесплатноСамостоятельно
ФункцияBrowserbaseScrapflyFirecrawl CloudGrub
Рендеринг JS✅ кастомный Chromium✅ проприетарный✅ Playwright✅ Playwright
Анти-детект браузер✅ кастомный Chromium✅ проприетарный✅ облачный стелс✅ Camoufox
Ghost Protocol❌❌❌✅ авто-резерв
Прокси по запросу✅ управляемый✅ 130M+ IP✅ облачный✅ по запросу
Стелс-патчи✅ встроенные✅ встроенные✅ встроенные✅ по запросу
Агентский цикл✅ Stagehand⚠️ через интеграции✅ /agent✅ ограниченная SM
Поток живого браузера✅ iFrame + CDP✅ CDP✅ Live View✅ WS + MJPEG
Вывод в Markdown✅ через MCP✅ встроенный✅ ядро✅ Rust-движок
MCP-инструменты✅ официальные✅ официальные✅ официальные✅ 15 инструментов
P2P сетка❌❌❌✅ протокол сплетен
Принуждение политик❌❌❌✅ доменные шлюзы + редактирование
Защита от инъекций в промпты❌❌❌✅ карантин + diff видимого текста
Возможность самостоятельного размещения❌ только облако❌ только облако⚠️ ограниченный OSS✅ полная + Cloud Run
ЦенаБесплатно–$99/месПо использованиюБесплатно–$333/месСамостоятельно
МетодПутьОписаниеСтатус
POST/api/crawlКраулинг одного URL (HTML + markdown)Доступен
POST/api/markdownИзвлечение Markdown из одного или нескольких URLДоступен
POST/api/batchПакетный краулинг с отслеживанием заданийДоступен
POST/api/rawИзвлечение сырого HTML (без markdown)Доступен
GET/viewПросмотр HTML с рендерингом в браузереДоступен
GET/downloadСкачивание файлов (PDF и т.д.) через краулерДоступен
МетодПутьОписаниеСтатус
POST/api/agent/runОтправить задачу автономному агентуДоступен
GET/api/agent/status/{run_id}Проверить статус запуска агента / загрузить трассировкуДоступен
POST/api/agent/ghostGhost Protocol: скриншот + извлечение через зрениеДоступен
МетодПутьОписаниеСтатус
POST/api/jobs/createОбщая отправка заданияДоступен
POST/api/jobs/crawlОтправка задания на краулинг одного URLДоступен
POST/api/jobs/batch-crawlОтправка задания на пакетный краулингДоступен
POST/api/jobs/markdownОтправка задания только на MarkdownДоступен
POST/api/jobs/process-jobЭндпоинт воркера Cloud TasksДоступен
POST/api/wraithРабочий процесс краулинга на основе ИИЗарезервировано
МетодПутьОписаниеСтатус
POST/api/cache/searchНечёткий поиск по кешированному содержимомуДоступен
GET/api/cache/listСписок метаданных кешированных документовДоступен
GET/api/cache/doc/{doc_id}Получить один кешированный документДоступен
POST/api/cache/upsertОбновить/вставить записи кешаДоступен
POST/api/cache/pruneОчистить записи кеша по TTL/доменуДоступен
МетодПутьОписаниеСтатус
GET/api/sessions/{session_id}/filesСписок файлов сессииДоступен
GET/api/sessions/{session_id}/fileПолучить конкретный файлДоступен
GET/api/sessions/{session_id}/statusСтатус прогресса сессииДоступен
GET/api/sessions/{session_id}/resultsВсе результаты краулингаДоступен
GET/api/sessions/{session_id}/screenshotsСписок скриншотовДоступен
МетодПутьОписаниеСтатус
WS/stream/{session_id}Поток viewport через WebSocketДоступен
GET/stream/{session_id}/mjpegРезервный стрим MJPEGДоступен
GET/stream/{session_id}/statusСтатус стрим-сессииДоступен
GET/stream/pool/statusСтатус пула браузеровДоступен
МетодПутьОписаниеСтатус
POST/mesh/joinПодключение пира + обнаружение через сплетниДоступен
POST/mesh/heartbeatHeartbeat пира с метриками нагрузкиДоступен
POST/mesh/executeВыполнение инструмента между узлами (макс. 1 переход)Доступен
POST/mesh/leaveУведомление об уходе пираДоступен
GET/mesh/peersСписок известных пиров + статус здоровьяДоступен
GET/mesh/statusСтатус mesh этого узла + нагрузкаДоступен
МетодПутьОписаниеСтатус
GET/healthПроверка здоровья + количество инструментов + информация о meshДоступен
GET/toolsСписок зарегистрированных инструментов AHPДоступен
GET/siteВстроенная лендинг-страницаДоступен
GET/{tool_name}Выполнить инструмент AHP (catch-all)Доступен
ИнструментОписаниеСтатус
crawl_urlИзвлечение Markdown из одного URL с инъекцией JSДоступен
crawl_batchПакетная обработка до 50 URL с объединениемДоступен
raw_htmlПолучение сырого HTML без преобразованияДоступен
download_fileСкачивание файлов (PDF и т.д.) через краулерДоступен
crawl_validateОценка качества содержимогоДоступен
crawl_searchНечёткий поиск по локальному кешу краулингаДоступен
crawl_cache_listСписок локально кешированных файловДоступен
crawl_remote_searchПоиск по кешу удалённого краулераДоступен
crawl_remote_cache_listСписок записей удалённого кешаДоступен
crawl_remote_cache_docПолучить удалённый кешированный документДоступен
agent_runОтправить задачу автономному агенту (Режим B)Доступен
agent_statusПроверить статус запуска агентаДоступен
ghost_extractGhost Protocol: скриншот + извлечение через зрение ИИДоступен
mesh_peersСписок пиров mesh и их статус здоровья/нагрузкиДоступен
mesh_statusПолучить статус mesh этого узла и метрики нагрузкиДоступен
set_auth_tokenСохранить токен аутентификации в .wraithenvДоступен
crawl_statusСообщить конфигурацию и состояние подключенияДоступен
ФайлНазначениеСтатус
types.pyПеречисление RunState, StopReason, ToolCall, ToolResult, AssistantAction, RunConfig, RunContext, StepTrace, RunResultГотово
errors.pyТипизированные ошибки: validation_error, policy_denied, tool_timeout, tool_unavailable, execution_error, provider_error, stop_conditionГотово
dispatcher.pyВалидация инструментов, принудительный тайм-аут (30с), повтор (1x), нормализация типизированных ошибокГотово
engine.pyОграниченный цикл: plan -> execute -> observe -> stop. Интеграция с EventBus. Возвращает (RunResult, RunSummary)Готово
ghost.pyGhost Protocol: обнаружение блокировки, захват скриншота, извлечение через зрение, авто-запускГотово
ФайлНазначениеСтатус
base.pyАбстрактный класс LLMAdapter, FallbackAdapter (ротация при сбое), фабричные функцииГотово
openai_adapter.pyМаппинг OpenAI tool_calls, зрение GPT-4oГотово
anthropic_adapter.pyБлоки Anthropic tool_use/tool_result, зрение Claude SonnetГотово
ollama_adapter.pyHTTP /api/chat Ollama, зрение llavaГотово
Файл
Назначение
Статус
domain.pyБелый список доменов, запрет RFC-1918/loopback/link-localГотово
gate.pyПред-инструментные и пред-запросные проверки политик с PolicyVerdictГотово
redaction.pyРедактирование секретных шаблонов (API-ключи, JWT, приватные ключи)Готово
ФайлНазначениеСтатус
events.pyEventBus + 7 типизированных событий: run_start, step_start, tool_dispatch, tool_result, policy_denied, step_end, run_endГотово
trace.pyTraceCollector, JSON-сериализация RunSummary, persist_trace() / load_trace() через хранилищеГотово
ФайлНазначениеСтатус
agent_routes.pyPOST /api/agent/run, GET /api/agent/status/{run_id}. 503 при отключенииГотово
routes.pyОсновные REST-эндпоинты краулинга/markdown/пакетов/кешаГотово
job_routes.pyCRUD заданий, статус сессии, воркер Cloud TasksГотово
jobs.pyПеречисление JobType (вкл. AGENT_RUN), JobManager, JobProcessorГотово
models.pyВсе Pydantic-модели, вкл. AgentRunRequest/ResponseГотово
ФайлНазначениеСтатус
models.pyМодели протокола: NodeInfo, NodeLoad, MeshToolRequest/Response, PeerStateГотово
auth.pyПодпись/проверка токенов HMAC-SHA256 с TTL 60сГотово
client.pyАсинхронный клиент httpx для join, heartbeat, leave, execute_toolГотово
coordinator.pyЖизненный цикл, таблица пиров, цикл heartbeat с повторными попытками seedГотово
routes.pyЭндпоинты /mesh/* — join, heartbeat, execute, leave, peers, statusГотово
router.pyОценка нагрузки + выбор цели (чистая логика, без I/O)Готово
dispatcher.pyMeshDispatcher, обёртка над локальным Dispatcher для прозрачной маршрутизацииГотово
ФайлНазначениеСтатус
config.pyВсе переменные окружения, вкл. конфигурацию агента + провайдера + ghost + прокси + стелсГотово
storage.pyХранилище с разделением по пользователям (локальная ФС / GCS)Готово
crawler.pyДвижок краулинга Playwright с поддержкой проксиГотово
markdown.pyПреобразование HTML в MarkdownГотово
browser.pyАвтоматизация браузера — движки Chromium + CamoufoxГотово
browser_pool.pyПостоянный пул браузеров с паттерном аренды/возвратаГотово
stream.pyCDP screencast → ретрансляция WebSocket/MJPEG + интерактивные командыГотово
URLGrubCrawl4AIFirecrawlScrapyПобедитель
example.com39112831513831Grub
news.ycombinator.com423220414012038Grub
en.wikipedia.org507486626372368Grub
httpbin.org2831170176769Firecrawl
quotes.toscrape.com27512446471145Grub
URLnavcontentvisible_textmarkdowntotal
example.com35811140391
news.ycombinator.com38419132423
en.wikipedia.org369483821507
httpbin.org22927160283
quotes.toscrape.com23010271275
ПакетGrubCrawl4AIFirecrawlScrapyПобедитель
10 URL1940467032168680Grub
25 URL408510479669225303Grub
50 URL15604238701272936232Firecrawl