Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
grubcrawler — O crawler agente mais rápido do mundo. Recuperado. Reinventado. Pronto para a guerra. | Kitploit
Ferramentas/GitHubGitHub/deepbluedynamics/grubcrawler
OSINT (Inteligência de Fontes Abertas)ReconhecimentoAnálise Dinâmica (Sandboxing)Proxies Web e InterceptaçãoColeta de InformaçõesSegurança WebTestes de PenetraçãoUtilitários e FrameworksAprendizado de MáquinaRed TeamingRastreadorAnti-Bot
347há 20 diasRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHubdeepbluedynamics/grubcrawler

grubcrawler

O crawler agente mais rápido do mundo. Recuperado. Reinventado. Pronto para a guerra.

Ver RepositórioSite
Grub Crawler

License Python FastAPI Playwright MCP Ghost Protocol Live Stream Camoufox Proxy


Crawler web agêntico com anti-detecção, fallback de visão e malha ponto a ponto.


Endpoints · Malha · Anti-Detecção · Ghost Protocol · Stream ao Vivo · Ferramentas MCP · Início Rápido · Benchmarks · Arquitetura


Motor de crawling web full-stack com renderização JavaScript, navegador anti-detecção Camoufox, roteamento de proxy por requisição e loops de agente autônomos. Converte páginas para markdown limpo com motor de extração nativo em Rust. Quando o crawling padrão é bloqueado por Cloudflare, CAPTCHAs ou barreiras JavaScript, o Ghost Protocol captura uma captura de tela e extrai o conteúdo via IA de visão (Claude, GPT-4o ou Ollama). Suporta orquestração de LLM multi-provedor entre OpenAI, Anthropic e Ollama em uma única sessão. Os nós coordenam-se em uma malha ponto a ponto baseada em gossip para crawling distribuído.


Por que Grub

Integramos funcionalidades de todos os principais crawlers — e depois adicionamos o que nenhum deles tem.

Crawlers Auto-Hospedados

Crawlers Gerenciados / Nuvem

Apenas Grub tem Ghost Protocol — fallback automático baseado em visão que captura páginas bloqueadas e extrai conteúdo via LLM quando o crawling padrão falha. Prevenção (Camoufox + proxy + stealth) lida com 95% dos bloqueios. Ghost Protocol lida com o restante.

Endpoints da API

Crawling Principal

Agente (Modo B)

Gerenciamento de Jobs

Cache Remoto

Gerenciamento de Sessões

Stream ao Vivo

Malha

Sistema

Ferramentas MCP (grub-crawl.py)

A ponte MCP expõe todas as capacidades a qualquer host compatível com MCP:

Módulos Internos

Núcleo do Agente (app/agent/)

Adaptadores de Provedor (app/agent/providers/)

Portões de Política (app/policy/)

Observabilidade (app/observability/)

Camada de API

Anti-Detecção (app/)

ArquivoPropósitoStatus
stealth.pyPatches playwright-stealth, bloqueio de domínios de rastreadoresConcluído
proxy.pyResolução de proxy por requisição com fallback de envConcluído

Malha (app/mesh/)

Infraestrutura

Máquina de Estado do Agente```

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` (padrão: 12)
- `max_wall_time` (padrão: 90s)
- `max_failures` (padrão: 3)
- `no_op_loop` (3 respostas vazias consecutivas)
- `policy_denied` (ferramenta/domínio bloqueado)
- `completed` (agente responde com texto)

## Anti-Detecção

Três camadas de anti-detecção que se sobrepõem. A prevenção interrompe os bloqueios antes que ocorram. O Ghost Protocol lida com eles depois.

### Camoufox Engine

Navegador anti-detectável plugável com falsificação de impressão digital em nível C++. Sem truques manuais de user-agent — o Camoufox gera impressões digitais realistas por contexto no nível do navegador, incluindo canvas, WebGL, fontes e propriedades do navigator.```bash
# Switch engine (default: chromium)
BROWSER_ENGINE=camoufox

Proxy por Requisição

Direcione o tráfego de rastreamento através de pools de proxy residenciais, de datacenter ou personalizados. Substituição por requisição com padrões baseados em variáveis de ambiente. Configuração de proxy totalmente compatível com 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:~
### Stealth Mode

Patches opcionais do `playwright-stealth` para Chromium (ignorado para o Camoufox, onde já está integrado). Bloqueia mais de 20 domínios de rastreamento/análises (Google Analytics, DataDome, PerimeterX, etc.) para reduzir a superfície de fingerprint.```bash
STEALTH_ENABLED=true
BLOCK_TRACKING_DOMAINS=true

Protocolo Fantasma

Quando um resultado de rastreamento sinaliza um bloqueio antibot (desafio Cloudflare, CAPTCHA, casca SPA vazia), o agente pode alternar para o modo camuflagem:

  1. Tirar uma captura de tela de página inteira via Playwright
  2. Enviar a imagem para um LLM com capacidade de visão (Claude Sonnet ou GPT-4o)
  3. Extrair conteúdo dos pixels renderizados
  4. Retornar o texto extraído com render_mode: "ghost" no rastreamento

Isso contorna completamente a detecção antibot baseada em DOM.

Requer AGENT_GHOST_ENABLED=true. Ativa automaticamente em bloqueios detectados quando AGENT_GHOST_AUTO_TRIGGER=true.

Malha

Agentes conversando com agentes. Toda instância do Grub é tanto um trabalhador quanto um coordenador. O nó local descarrega para a nuvem, a nuvem delega para o local. Chamadas de ferramentas atravessam o fio de forma transparente.``` Node A (local) Node B (cloud) ┌─────────────┐ ┌─────────────┐ │ AgentEngine │ │ AgentEngine │ │ ↓ │ │ ↓ │ │ MeshDispatcher ──── HTTP ────→ MeshDispatcher │ │ ↓ │ │ ↓ │ │ Dispatcher │ │ Dispatcher │ │ ↓ │ │ ↓ │ │ ToolRegistry │ │ ToolRegistry │ └─────────────┘ └─────────────┘ ↕ heartbeat (15s) ↕ └────────────────────────────────┘

root@kitploit:~
**Como funciona:**
- **Descoberta** — nós entram via lista de pares semente, depois fazem gossip (1-salto) para aprender sobre outros
- **Heartbeat** — a cada 15s, os nós trocam métricas de carga. 3 perdidos = não saudável. 2 min = removido
- **Roteamento** — MeshDispatcher pontua todos os nós por carga, localidade e afinidade, então roteia chamadas de ferramenta para o melhor nó
- **Máx. 1-salto** — Nó A → B apenas, nunca A → B → C. Previne loops de roteamento
- **Fallback local** — se a execução remota falhar, recai para o Dispatcher local
- **Autenticação HMAC** — todo tráfego da malha é assinado com um segredo compartilhado (SHA-256, TTL de 60s)

### Executar uma Malha de 2 Nós Localmente```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

Conectar Local ao 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:~
### Configuração Manual```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

Quando o mesh está desabilitado (MESH_ENABLED=false, o padrão), o Grub opera como um crawler normal de nó único com zero overhead de mesh.

Transmissão ao Vivo

Veja o crawler trabalhar em tempo real. Um pool persistente de instâncias quentes do Chromium transmite quadros da viewport via WebSocket ou MJPEG.

WebSocket — conecte e envie comandos interativos:```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** — coloque-o em uma tag ``, vídeo instantâneo:```html
<img src="http://localhost:6792/stream/my-session/mjpeg?url=https://example.com" />

Requer BROWSER_STREAM_ENABLED=true. Cada instância do Chromium usa ~150-300MB de RAM.

Início Rápido

Desenvolvimento Local```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:~
### Ativar Agent Mode B```bash
# Add to .env
AGENT_ENABLED=true
OPENAI_API_KEY=sk-...
# or
ANTHROPIC_API_KEY=sk-ant-...
AGENT_PROVIDER=anthropic

Submeter uma Tarefa do Agente```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

Anti-detecção (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 (bypass anti-bot)```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"}'

Transmissão ao Vivo do Navegador```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:~
## Configuração

### Servidor
- `HOST` (padrão: 0.0.0.0)
- `PORT` (padrão: 6792)
- `DEBUG` (padrão: false)

### Armazenamento
- `STORAGE_PATH` (padrão: ./storage)
- `RUNNING_IN_CLOUD` (padrão: false)
- `GCS_BUCKET_NAME`
- `GOOGLE_CLOUD_PROJECT`

### Autenticação
- `DISABLE_AUTH` (padrão: false)
- `GNOSIS_AUTH_URL` (padrão: http://gnosis-auth:5000)

### Motor de Navegador
- `BROWSER_ENGINE` — chromium | camoufox (padrão: chromium)

### Crawling
- `MAX_CONCURRENT_CRAWLS` (padrão: 5)
- `CRAWL_TIMEOUT` (padrão: 30)
- `ENABLE_JAVASCRIPT` (padrão: true)
- `ENABLE_SCREENSHOTS` (padrão: false)

### Proxy
- `PROXY_SERVER` — URL do proxy (ex: http://proxy:10001)
- `PROXY_USERNAME`
- `PROXY_PASSWORD`
- `PROXY_BYPASS` — lista de bypass separada por vírgulas

### Furtividade (Stealth)
- `STEALTH_ENABLED` (padrão: false) — patches de playwright-stealth
- `BLOCK_TRACKING_DOMAINS` (padrão: false) — bloqueia requisições de análise/rastreamento

### Agente (Modo B)
- `AGENT_ENABLED` (padrão: false)
- `AGENT_MAX_STEPS` (padrão: 12)
- `AGENT_MAX_WALL_TIME_MS` (padrão: 90000)
- `AGENT_MAX_FAILURES` (padrão: 3)
- `AGENT_ALLOWED_TOOLS` — lista de permissões separada por vírgulas
- `AGENT_ALLOWED_DOMAINS` — lista de permissões separada por vírgulas
- `AGENT_BLOCK_PRIVATE_RANGES` (padrão: true)
- `AGENT_REDACT_SECRETS` (padrão: true)

### Provedores LLM
- `AGENT_PROVIDER` — openai | anthropic | ollama (padrão: openai)
- `OPENAI_API_KEY`
- `OPENAI_MODEL` (padrão: gpt-4.1-mini)
- `ANTHROPIC_API_KEY`
- `ANTHROPIC_MODEL` (padrão: claude-3-5-sonnet-latest)
- `OLLAMA_BASE_URL` (padrão: http://localhost:11434)
- `OLLAMA_MODEL` (padrão: llama3.1:8b-instruct)

### Protocolo Fantasma (Ghost Protocol)
- `AGENT_GHOST_ENABLED` (padrão: false)
- `AGENT_GHOST_AUTO_TRIGGER` (padrão: true)
- `AGENT_GHOST_VISION_PROVIDER` — herda de AGENT_PROVIDER
- `AGENT_GHOST_MAX_IMAGE_WIDTH` (padrão: 1280)

### Malha (Mesh)
- `MESH_ENABLED` (padrão: false) — chave mestre
- `MESH_PEERS` — URLs de peers seed separadas por vírgulas
- `MESH_NODE_NAME` — nome legível por humanos (padrão: hostname)
- `MESH_SECRET` — segredo HMAC compartilhado para autenticação entre nós
- `MESH_ADVERTISE_URL` — URL que os peers usam para alcançar este nó
- `MESH_PREFER_LOCAL` (padrão: true) — tendência para execução local
- `MESH_HEARTBEAT_INTERVAL_S` (padrão: 15)
- `MESH_PEER_TIMEOUT_S` (padrão: 45) — marcar como não saudável após isso
- `MESH_PEER_REMOVE_S` (padrão: 120) — remover da tabela de peers após isso
- `MESH_REMOTE_TIMEOUT_MS` (padrão: 35000) — timeout para chamadas de ferramentas remotas

### Transmissão ao Vivo (Live Stream)
- `BROWSER_POOL_SIZE` (padrão: 1)
- `BROWSER_STREAM_ENABLED` (padrão: false)
- `BROWSER_STREAM_QUALITY` (padrão: 25) — qualidade JPEG 1-100
- `BROWSER_STREAM_MAX_WIDTH` (padrão: 854)
- `BROWSER_STREAM_MAX_LEASE_SECONDS` (padrão: 300)

## Contrato de Resposta

`POST /api/markdown` retorna:

`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`

### Qualidade do Conteúdo

- `blocked` — anti-bot/captcha/desafio
- `empty` — sinal muito baixo
- `minimal` — páginas finas/de erro
- `sufficient` — utilizável para sumarização

Não sumarize a menos que `content_quality == "sufficient"`.

### Defesa contra Injeção de Prompt

- `quarantined=true` significa que o extrator detectou texto semelhante a instruções no conteúdo extraído que não estava presente no texto renderizado visível da página (comum em abusos de `.sr-only`/visualmente oculto).
- Quando em quarentena, `content_quality` é rebaixado para `minimal`, `policy_flags` inclui `hidden_text_suspected` e `quarantined`, e as saídas `content`/`markdown` são limpas (falha fechada).

### Formato de Erro```json
{"error": "http_error|validation_error|internal_error", "status": 400, "details": {}}

Benchmarks

Arena de combate — benchmarks diretos contra Crawl4AI, Firecrawl (auto-hospedado) e Scrapy. Todos os testes executados na mesma máquina, mesmas URLs, mesmas condições. Grub executa primeiro como linha de base, os adaptadores restantes em ordem aleatória com atraso de 10s entre cada um para evitar viés de limitação de taxa.

Velocidade de URL Única (ms, menor é melhor)

Grub vence 4/5 corridas de velocidade de URL única. Conversão Markdown executa em 0-21ms via mecanismo Rust nativo (grub_md).

Detalhamento de Fase do Grub (ms no servidor)

Navegação domina; conversão Markdown é sub-milissegundo na maioria das páginas graças ao mecanismo Rust.

Throughput de Lote (ms, menor é melhor)

Grub vence 2/3 tamanhos de lote. Custo por URL: 163-312ms (Grub) vs 255-477ms (outros).

Como Executar```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:~
## Status do Desenvolvimento

### Fase 1: Infraestrutura Principal ✅
### Fase 2: Rastreamento ✅
### Fase 3: Módulo Agente ✅
- [x] Núcleo do agente — máquina de estados, tipos, erros (W1)
- [x] Contrato unificado de ferramentas — dispatcher com timeout/retry (W2)
- [x] Portas de política — lista de permissões de domínios, negação de faixa privada, redação (W3)
- [x] Observabilidade — EventBus, TraceCollector, persistência de RunSummary (W4)
- [x] Conexão de API — `/api/agent/run`, `/api/agent/status`, JobType.AGENT_RUN (W5)
- [x] Adaptadores de provedores — OpenAI, Anthropic, Ollama com fallback (W6)
- [x] Flags de configuração — agente, provedor, ghost, configurações de stream (W7)

### Fase 4: Protocolo Ghost ✅
- [x] Detecção de gatilho do modo camuflagem (W8)
- [x] Pipeline de captura de tela (W8)
- [x] Extração de visão via Claude/GPT-4o (W8)
- [x] Cadeia de fallback no motor (W8)
- [x] Ferramenta Ghost para chamadores externos (W8)
- [x] Ferramenta Ghost MCP + endpoint REST (W8)

### Fase 5: Stream ao Vivo do Navegador ✅
- [x] Pool persistente de navegadores com lease/retorno (W9)
- [x] Relay de screencast CDP (W9)
- [x] Endpoint WebSocket com comandos interativos (W9)
- [x] Stream de fallback MJPEG (W9)
- [x] Endpoints de status de stream + status do pool (W9)

### Fase 5.5: Antideteção ✅
- [x] Motor de navegador antideteção Camoufox (W10)
- [x] Proxy por requisição com fallback de env (W10)
- [x] Patches de furtividade para Chromium (W10)
- [x] Bloqueio de domínios de rastreadores/análises (W10)
- [x] Correção de detecção de formato de visão Anthropic (W10)

### Fase 6: Coordenador de Malha ✅
- [x] Descoberta de pares com gossip (1-salto) (W11)
- [x] Autenticação entre nós HMAC-SHA256 (W11)
- [x] Loop de heartbeat com métricas de carga + retry de seed (W11)
- [x] MeshDispatcher — roteamento transparente de ferramentas entre nós (W12)
- [x] Pontuação baseada em carga com bônus de localidade/afinidade (W12)
- [x] Scripts de deploy — local, mesh, Cloud Run (W12)
- [x] Topologia de malha de 2 nós Docker Compose (W12)
- [x] Página de destino incorporada (grub-site) (W12)

### Fase 7: Desempenho + Fortalecimento
- [x] Motor Rust de markdown (`grub_md`) — extensão nativa PyO3, conversão sub-ms
- [x] Arena de combate — benchmarks automatizados vs Crawl4AI, Firecrawl, Scrapy
- [x] Suíte de testes unitários — 176 testes em todos os módulos
- [ ] Melhorias no tratamento de erros
- [ ] Monitoramento e alertas

Veja [MASTER_PLAN.md](https://github.com/deepbluedynamics/grubcrawler/blob/HEAD/MASTER_PLAN.md) para o plano completo da arquitetura.

## Licença

Licença do Projeto Grub Crawler
Baixar ferramenta
FuncionalidadeCrawl4AIFirecrawlScrapyGrub
Renderização JS✅ Playwright✅ Playwright❌ Apenas HTTP✅ Playwright
Navegador anti-detecçãoplugin stealth❌❌✅ Camoufox
Ghost Protocol❌❌❌✅ fallback automático
Proxy por requisição✅ escalonamento❌middleware✅ por requisição
Patches stealth✅❌❌✅ opt-in
Loop de agente✅ agêntico✅ /agent❌ spiders✅ SM limitado
Stream ao vivo do navegador✅ WebSocket✅ Live View❌✅ WS + MJPEG
Saída Markdown✅ Fit Markdown✅ núcleo❌✅ Motor Rust
Ferramentas MCP✅ comunidade✅ oficial⚠️ comunidade✅ 15 ferramentas
LLM multi-provedor✅ todos LLMs⚠️ Gemini❌✅ OpenAI/Anthropic/Ollama
Malha P2P❌❌❌✅ protocolo gossip
Aplicação de políticas❌❌❌✅ portões de domínio + redação
Defesa contra injeção de prompt❌❌❌✅ quarentena + diff de texto visível
LicençaApache 2.0AGPL-3.0BSDProprietária
PreçoGratuitoGratuito–$333/mêsGratuitoAuto-hospedado
FuncionalidadeBrowserbaseScrapflyFirecrawl CloudGrub
Renderização JS✅ Chromium personalizado✅ proprietário✅ Playwright✅ Playwright
Navegador anti-detecção✅ Chromium personalizado✅ proprietário✅ stealth em nuvem✅ Camoufox
Ghost Protocol❌❌❌✅ fallback automático
Proxy por requisição✅ gerenciado✅ 130M+ IPs✅ gerenciado em nuvem✅ por requisição
Patches stealth✅ embutido✅ embutido✅ embutido✅ opt-in
Loop de agente✅ Stagehand⚠️ via integrações✅ /agent✅ SM limitado
Stream ao vivo do navegador✅ iFrame + CDP✅ CDP✅ Live View✅ WS + MJPEG
Saída Markdown✅ via MCP✅ embutido✅ núcleo✅ Motor Rust
Ferramentas MCP✅ oficial✅ oficial✅ oficial✅ 15 ferramentas
Malha P2P❌❌❌✅ protocolo gossip
Aplicação de políticas❌❌❌✅ portões de domínio + redação
Defesa contra injeção de prompt❌❌❌✅ quarentena + diff de texto visível
Auto-hospedável❌ apenas nuvem❌ apenas nuvem⚠️ OSS limitado✅ completo + Cloud Run
PreçoGratuito–$99/mêsBaseado em usoGratuito–$333/mêsAuto-hospedado
MétodoCaminhoDescriçãoStatus
POST/api/crawlCrawling de URL única (HTML + markdown)Ativo
POST/api/markdownExtração de markdown de URL única ou múltiplaAtivo
POST/api/batchCrawling em lote com rastreamento de jobsAtivo
POST/api/rawExtração de HTML bruto (sem markdown)Ativo
GET/viewVisualizador HTML renderizado no navegadorAtivo
GET/downloadDownload de arquivos (PDFs, etc.) através do crawlerAtivo
MétodoCaminhoDescriçãoStatus
POST/api/agent/runSubmeter tarefa ao loop de agente autônomoAtivo
GET/api/agent/status/{run_id}Verificar status da execução / carregar traceAtivo
POST/api/agent/ghostGhost Protocol: captura de tela + extração por visãoAtivo
MétodoCaminhoDescriçãoStatus
POST/api/jobs/createSubmissão genérica de jobAtivo
POST/api/jobs/crawlSubmeter job de crawling de URL únicaAtivo
POST/api/jobs/batch-crawlSubmeter job de crawling em loteAtivo
POST/api/jobs/markdownSubmeter job apenas de markdownAtivo
POST/api/jobs/process-jobEndpoint worker do Cloud TasksAtivo
POST/api/wraithWorkflow de crawling orientado por IAPlaceholder
MétodoCaminhoDescriçãoStatus
POST/api/cache/searchBusca difusa de conteúdo em cacheAtivo
GET/api/cache/listListar metadados de documentos em cacheAtivo
GET/api/cache/doc/{doc_id}Buscar um documento em cacheAtivo
POST/api/cache/upsertInserir/atualizar entradas de cacheAtivo
POST/api/cache/prunePodar entradas de cache por TTL/domínioAtivo
MétodoCaminhoDescriçãoStatus
GET/api/sessions/{session_id}/filesListar arquivos da sessãoAtivo
GET/api/sessions/{session_id}/fileObter arquivo específicoAtivo
GET/api/sessions/{session_id}/statusStatus de progresso da sessãoAtivo
GET/api/sessions/{session_id}/resultsTodos os resultados de crawlingAtivo
GET/api/sessions/{session_id}/screenshotsListar capturas de telaAtivo
MétodoCaminhoDescriçãoStatus
WS/stream/{session_id}Stream da viewport via WebSocketAtivo
GET/stream/{session_id}/mjpegStream fallback MJPEGAtivo
GET/stream/{session_id}/statusStatus da sessão de streamAtivo
GET/stream/pool/statusStatus do pool de navegadoresAtivo
MétodoCaminhoDescriçãoStatus
POST/mesh/joinEntrada de peer + descoberta gossipAtivo
POST/mesh/heartbeatHeartbeat de peer com métricas de cargaAtivo
POST/mesh/executeExecução de ferramenta entre nós (máx. 1 salto)Ativo
POST/mesh/leaveNotificação de saída de peerAtivo
GET/mesh/peersListar peers conhecidos + status de saúdeAtivo
GET/mesh/statusStatus da malha deste nó + cargaAtivo
MétodoCaminhoDescriçãoStatus
GET/healthVerificação de saúde + contagem de ferramentas + info da malhaAtivo
GET/toolsListar ferramentas AHP registradasAtivo
GET/sitePágina de destino embutidaAtivo
GET/{tool_name}Executar ferramenta AHP (catch-all)Ativo
FerramentaDescriçãoStatus
crawl_urlExtração de markdown de URL única com injeção JSAtiva
crawl_batchProcessamento em lote de até 50 URLs com compilaçãoAtiva
raw_htmlBusca de HTML bruto sem conversãoAtiva
download_fileDownload de arquivos (PDFs, etc.) através do crawlerAtiva
crawl_validateAvaliação de qualidade de conteúdoAtiva
crawl_searchBusca difusa no cache local de crawlingAtiva
crawl_cache_listListar arquivos em cache localAtiva
crawl_remote_searchBuscar no cache remoto do crawlerAtiva
crawl_remote_cache_listListar entradas do cache remotoAtiva
crawl_remote_cache_docBuscar documento em cache remotoAtiva
agent_runSubmeter tarefa ao agente autônomo (Modo B)Ativa
agent_statusVerificar status da execução do agenteAtiva
ghost_extractGhost Protocol: captura de tela + extração por IA de visãoAtiva
mesh_peersListar peers da malha e seu status de saúde/cargaAtiva
mesh_statusObter status da malha deste nó e métricas de cargaAtiva
set_auth_tokenSalvar token de autenticação em .wraithenvAtiva
crawl_statusReportar configuração e conexãoAtiva
ArquivoPropósitoStatus
types.pyEnum RunState, StopReason, ToolCall, ToolResult, AssistantAction, RunConfig, RunContext, StepTrace, RunResultConcluído
errors.pyErros tipados: validation_error, policy_denied, tool_timeout, tool_unavailable, execution_error, provider_error, stop_conditionConcluído
dispatcher.pyValidação de ferramenta, aplicação de timeout (30s), retry (1x), normalização de erro tipadoConcluído
engine.pyLoop limitado: plan -> execute -> observe -> stop. Integração com EventBus. Retorna (RunResult, RunSummary)Concluído
ghost.pyGhost Protocol: detecção de bloqueio, captura de tela, extração por visão, disparo automáticoConcluído
ArquivoPropósitoStatus
base.pyABC LLMAdapter, FallbackAdapter (rotacionar em falha), funções fábricaConcluído
openai_adapter.pyMapeamento tool_calls OpenAI, visão GPT-4oConcluído
anthropic_adapter.pyBlocos tool_use/tool_result Anthropic, visão Claude SonnetConcluído
ollama_adapter.pyHTTP /api/chat Ollama, visão llavaConcluído
ArquivoPropósitoStatus
domain.pyLista de permissão de domínios, negação RFC-1918/loopback/link-localConcluído
gate.pyVerificações de política pré-ferramenta e pré-busca com PolicyVerdictConcluído
redaction.pyRedação de padrões secretos (chaves de API, JWTs, chaves privadas)Concluído
ArquivoPropósitoStatus
events.pyEventBus + 7 eventos tipados: run_start, step_start, tool_dispatch, tool_result, policy_denied, step_end, run_endConcluído
trace.pyTraceCollector, serialização JSON RunSummary, persist_trace() / load_trace() via armazenamentoConcluído
ArquivoPropósitoStatus
agent_routes.pyPOST /api/agent/run, GET /api/agent/status/{run_id}. 503 quando desabilitadoConcluído
routes.pyEndpoints REST principais de crawl/markdown/batch/cacheConcluído
job_routes.pyCRUD de job, status de sessão, worker Cloud TasksConcluído
jobs.pyEnum JobType (incl. AGENT_RUN), JobManager, JobProcessorConcluído
models.pyTodos os modelos Pydantic incl. AgentRunRequest/ResponseConcluído
ArquivoPropósitoStatus
models.pyModelos de protocolo wire: NodeInfo, NodeLoad, MeshToolRequest/Response, PeerStateConcluído
auth.pyAssinatura/verificação de token HMAC-SHA256 com TTL de 60sConcluído
client.pyCliente assíncrono httpx para join, heartbeat, leave, execute_toolConcluído
coordinator.pyCiclo de vida, tabela de peers, loop de heartbeat com retry de seedConcluído
routes.pyEndpoints /mesh/* — join, heartbeat, execute, leave, peers, statusConcluído
router.pyPontuação de carga + seleção de alvo (lógica pura, sem I/O)Concluído
dispatcher.pyMeshDispatcher encapsulando Dispatcher local para roteamento transparenteConcluído
ArquivoPropósitoStatus
config.pyTodas as variáveis de ambiente incl. configuração de agente + provedor + ghost + proxy + stealthConcluído
storage.pyArmazenamento particionado por usuário (sistema de arquivos local / GCS)Concluído
crawler.pyMotor de crawling Playwright com suporte a proxyConcluído
markdown.pyConversão de HTML para markdownConcluído
browser.pyAutomação de navegador — motores Chromium + CamoufoxConcluído
browser_pool.pyPool persistente de navegadores com padrão de lease/returnConcluído
stream.pyScreencast CDP → relay WebSocket/MJPEG + comandos interativosConcluído
URLGrubCrawl4AIFirecrawlScrapyVencedor
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
LoteGrubCrawl4AIFirecrawlScrapyVencedor
10 URLs1940467032168680Grub
25 URLs408510479669225303Grub
50 URLs15604238701272936232Firecrawl