Chromium em uma URL
Automação de Chrome headless como um endpoint HTTPS. Navegue, faça screenshots, extraia dados, preencha formulários — tudo via HTTP.
# Inicie um Chromium stealth com um fingerprint
$ curl "/start?browser_id=main&stealth=true&timezoneId=America/New_York&locale=en-US"
[ "browser_id": "main",
"webSocketDebuggerUrl": "ws://.../devtools/browser/...",
"stealth": true ]
# Navegue — ou passe a URL WS para o Puppeteer
$ curl "/browse?browser_id=main&url=https://hoody.com"
200 OK
# Capture; já funciona com seu cliente CDP existente
$ curl "/screenshot?browser_id=main&format=png" -o shot.png
1920x1080 PNG
Controle, observe e inspecione um browser de verdade via HTTP
Cada instância do Browser expõe os mesmos primitivos que Puppeteer e Playwright usam — navegação, eval de DOM, screenshots, DevTools Protocol — mas como endpoints HTTP simples. Escolha uma aba abaixo para ver qual endpoint roda por baixo.
Navegação via HTTP
Navegue para qualquer URL, espere pelo carregamento completo e receba metadados da página.
Extração de Dados
Extraia HTML, texto visível ou dados estruturados. Execute JavaScript personalizado para lógica de extração complexa.
Tire screenshot ou gere PDF da página atual
GET /screenshot retorna PNG, JPEG ou base64 — fullPage ou viewport. GET /pdf renderiza em A4/Carta com paisagem e margens. O binário é devolvido diretamente; sem flags de headless Chrome para manipular.
Obtenha as URLs do CDP e repasse para qualquer ferramenta
GET /devtools-url retorna três URLs: o WebSocket do CDP (para Puppeteer / Playwright / qualquer cliente CDP), a API HTTP do DevTools e a UI frontend do DevTools. Abra a URL do frontend em uma aba do navegador para ver o que a instância headless está vendo.
Screenshot → decidir → clicar, em loop
O formato que todo modelo de Computer-Use espera: um screenshot, um snapshot do DOM, uma forma de clicar em (x, y). O Browser expõe esses recursos via HTTP simples — conecte ao Claude Computer Use, ao Operator da OpenAI ou ao seu próprio agente.
docker run chromium + fonts + fingerprint patches
curl /start?stealth=true → ready
Inicie, controle e encerre o Chromium via HTTP
Cada endpoint retorna JSON determinístico ou binário. Sem scraping de stderr, sem arquivos em /tmp, sem race conditions com subprocessos que esqueceram de fazer flush.
# Full Browser flow — start, navigate, extract, shutdown
URL="https://proj-dev-browser-1.hoody.com"
ID="main"
# 1. Spawn a stealth Chromium
curl -s "$URL/start?browser_id=$ID&stealth=true"
# 2. Navigate
curl -s "$URL/browse?browser_id=$ID&url=https://hoody.com"
# 3. Extract structured data
curl -s -X POST "$URL/eval?browser_id=$ID" \
-H 'Content-Type: application/json' \
-d '["script":"document.title"]'
# > "Example Domain"
# 4. Release the slot
curl -s "$URL/shutdown?browser_id=$ID"
// Full Browser flow — start, navigate, extract, shutdown
const BASE = 'https://proj-dev-browser-1.hoody.com';
const id = 'main';
// 1. Spawn a stealth Chromium
const start = await fetch(`$[BASE]/start?browser_id=$[id]&stealth=true`);
const [ webSocketDebuggerUrl ] = await start.json();
// 2. Navigate
await fetch(`$[BASE]/browse?browser_id=$[id]&url=https://hoody.com`);
// 3. Extract structured data
const r = await fetch(`$[BASE]/eval?browser_id=$[id]`, [
method: 'POST',
headers: [ 'Content-Type': 'application/json' ],
body: JSON.stringify([ script: 'document.title' ])
]);
const title = await r.json();
// => "Example Domain"
// 4. Release the slot
await fetch(`$[BASE]/shutdown?browser_id=$[id]`);
# Full Browser flow — start, navigate, extract, shutdown
import requests
BASE = 'https://proj-dev-browser-1.hoody.com'
id = 'main'
# 1. Spawn a stealth Chromium
start = requests.get(f'[BASE]/start', params=['browser_id': id, 'stealth': 'true'])
ws = start.json()['webSocketDebuggerUrl']
# 2. Navigate
requests.get(f'[BASE]/browse', params=['browser_id': id, 'url': 'https://hoody.com'])
# 3. Extract structured data
r = requests.post(f'[BASE]/eval',
params=['browser_id': id],
json=['script': 'document.title'])
title = r.json()
# => "Example Domain"
# 4. Release the slot
requests.get(f'[BASE]/shutdown', params=['browser_id': id])
Construído para automação web real
Uma camada HTTP simples sobre o Chromium abre pontos de integração que um navegador headless instalado localmente não cobre. Seis formatos de implantação que vemos com mais frequência.
Pipelines de dados
Ingira HTML renderizado e JSON no seu data warehouse. Agende as chamadas /eval via cron e envie os resultados para Snowflake, BigQuery ou Postgres. Sem instalação de Chromium por worker, sem divergência de versões no cluster.
Frameworks de agentes
Conecte ao Claude Computer Use, ao OpenAI Operator ou às ferramentas de browser do LangChain. Screenshot + eval é o formato que eles já esperam — Browser é um endpoint HTTP plug-and-play para qualquer runtime de agente.
Fluxos autenticados
Opere dashboards logados — painéis de admin de SaaS, portais bancários, ferramentas internas. POST /cookies persiste a sessão, para que chamadas subsequentes mantenham a identidade sem re-autenticar a cada execução.
Aplicativos de revisão
Pré-visualizações de browser por PR. Seu CI sobe uma instância do Browser contra o build em staging, retorna o link frontend do /devtools-url no comentário do PR e os revisores clicam uma vez para ver o app ao vivo.
Monitoramento agendado
Capturas de /screenshot e /network via cron em dashboards de uptime, SLO e performance. Armazene em buffer circular as últimas 500 entradas de console e rede de cada sonda — detecte regressões antes dos usuários.
Snapshots de conformidade
Capturas com carimbo de tempo e fingerprint fixado de páginas de terceiros para fluxos jurídicos, de auditoria ou de evidência. Fixe o canal do Chromium, o viewport e a geolocalização — reproduza o render exato meses depois.
21 endpoints, controle total do browser
Toda capacidade do Browser é uma chamada HTTP simples. Variantes de método no mesmo caminho são listadas separadamente porque se comportam de forma diferente — GET /eval executa um script pontual, POST /eval aceita um body completo.
Interação
[count, plural, one [# endpoint] other [# endpoints]]'curl -X POST /eval -d '["script":"document.title"]' → "Example"
Estado da sessão
[count, plural, one [# endpoint] other [# endpoints]]'curl -X POST /cookies -d '[[name,value,domain,...]]' → [ added: 4 ]
Introspecção
[count, plural, one [# endpoint] other [# endpoints]]'curl /devtools-url?browser_id=main → [ ws, http, frontend ]
Ciclo de vida
[count, plural, one [# endpoint] other [# endpoints]]'curl /start?browser_id=main&stealth=true → [ ws, stealth: true ]
Além de GET /health e GET /metrics herdados da plataforma em todo serviço do Hoody Kit.
Stealth, fingerprinting e CDP — sem o custo de configuração
Browser é uma camada fina sobre o Chromium — tudo que você instalaria, patchearia e monitoraria fica a um parâmetro de distância. Seis capacidades que importam quando você realmente coloca em produção.
Spoofing de fingerprint
Configure UA, viewport, fuso horário, idioma e geolocalização no /start — ou aponte para um fingerprintId para carregar um JSON predefinido. Canvas e WebGL seguem o perfil automaticamente.
Modo stealth
O anti-detecção do Patchright está ativo por padrão no Chromium. Não é infalível contra todos os provedores de detecção — combine com um serviço de resolução de CAPTCHA para sites adversariais.
CDP pass-through
GET /devtools-url retorna a URL do WebSocket, a API HTTP do DevTools e a UI frontend. O código existente em Puppeteer ou Playwright continua funcionando — conecte, não reescreva.
Proxy & DoH
Proxies SOCKS5, SOCKS5h, HTTP e HTTPS com autenticação e listas de bypass. DNS-over-HTTPS via Cloudflare ativado por padrão. QUIC/HTTP3 disponível por instância.
Canais do Chromium
Fixe qualquer build do Chromium — string de versão completa, versão principal ou canal (stable / beta / dev / canary). Firefox também suportado via browser=firefox.
Buffers circulares de depuração
Últimas 500 entradas de console e 500 entradas de rede por instância, além de histórico de navegação persistente com endpoints de consulta e exclusão. Sem necessidade de conectar uma camada de log externa.
Adicione um browser de verdade ao seu stack
Browser é um dos serviços do Hoody Kit incluídos em todo contêiner. Sem instalação de driver, sem scaffolding do Puppeteer, sem patches de fingerprint. Comece com uma URL.