Pular para o conteúdo
início / kit / browser
BrowserServiço Kit

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.

PROJECT-CONTAINER-browser-1.SERVER.containers.hoody.com
GET /start?browser_id=main&stealth=true&timezoneId=America/New_York
200 OK

# 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

início / kit / browser / demo
Três classes de endpoint, uma URL

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.

01 / 05

Navegação via HTTP

Navegue para qualquer URL, espere pelo carregamento completo e receba metadados da página.

curl /start?stealth=true → ready
02 / 05

Extração de Dados

Extraia HTML, texto visível ou dados estruturados. Execute JavaScript personalizado para lógica de extração complexa.

POST /eval → [ "Headline 1", "Headline 2", … ]
03 / 05

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.

GET /screenshot?fullPage=true → PNG binary
04 / 05

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.

GET /devtools-url → [ ws, http, frontend ]
05 / 05

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.

loop: screenshot → eval('click(x,y)')
Antes· Headless tradicional

docker run chromium + fonts + fingerprint patches

Depois· Hoody Browser

curl /start?stealth=true → ready

início / kit / browser / api
API

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.

browser-api.sh

# 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"

browser-api.js

// 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]`);

browser_api.py

# 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])

início / kit / browser / usado-para
Casos de Uso

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.

{01}

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.

{02}

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.

{03}

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.

{04}

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.

{05}

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.

{06}

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.

início / kit / browser / endpoints
API

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"

POST
/browseNavega com um body JSON — waitUntil, timeout, referer, headers.
GET
/browse?url=Navegação rápida para ergonomia de curl na linha de comando.
POST
/evalExecuta JavaScript (simples ou base64) no contexto da página e retorna o resultado.
GET
/eval?script=Eval de script inline para leituras pontuais como document.title.
GET
/htmlRetorna document.documentElement.outerHTML — renderizado, não o HTML bruto.
GET
/textRetorna document.body.innerText — o que um humano lê.
GET
/screenshotPNG / JPEG / base64 — fullPage suportado, qualidade JPEG 0-100.
GET
/pdfRenderiza em PDF — A4/Letter, paisagem, margens, printBackground.

Estado da sessão

[count, plural, one [# endpoint] other [# endpoints]]'

curl -X POST /cookies -d '[[name,value,domain,...]]' → [ added: 4 ]

GET
/cookiesLista cookies, opcionalmente filtrados por URL.
POST
/cookiesAdiciona cookies — name, value, domain, path, httpOnly, secure, sameSite.
DELETE
/cookiesLimpa todos os cookies da instância.
GET
/metadataMetadados completos da instância — sessão, viewport, URLs do DevTools, lista de abas.
GET
/tabsLista abas abertas com id, url, title, isActive.
POST
/tab/closeFecha uma aba pelo id — ou a aba ativa se nenhum for especificado.

Introspecção

[count, plural, one [# endpoint] other [# endpoints]]'

curl /devtools-url?browser_id=main → [ ws, http, frontend ]

GET
/devtools-urlRetorna URLs do CDP WebSocket + DevTools HTTP + interface frontend.
GET
/consoleÚltimas 500 entradas do console — log, error, warn, info.
GET
/networkÚltimas 500 entradas de rede — método, URL, status, resourceType.
GET
/historyHistórico de navegação persistente paginado com filtros de domínio e tempo.
DELETE
/historyExcluir entradas do histórico que correspondem ao filtro.

Ciclo de vida

[count, plural, one [# endpoint] other [# endpoints]]'

curl /start?browser_id=main&stealth=true → [ ws, stealth: true ]

GET
/startCria ou retoma uma instância com browser_id, fingerprint, stealth, proxy, viewport.
GET
/stopPausa uma instância — estado persiste. Use /restart para retomar.
GET
/restartPara e recria a instância com config opcionalmente atualizada.
GET
/shutdownEncerra a instância e libera o slot. ?force=true mata instâncias travadas.

Além de GET /health e GET /metrics herdados da plataforma em todo serviço do Hoody Kit.

início / kit / browser / capacidades
Capacidades

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.

Fingerprint spoofing
Patchright stealth
CDP WebSocket
Proxy (SOCKS5/HTTP)
DNS-over-HTTPS
Chromium channels
Firefox backend
500-entry console ring
500-entry network ring
Persistent history
Fingerprint spoofing
Patchright stealth
CDP WebSocket
Proxy (SOCKS5/HTTP)
DNS-over-HTTPS
Chromium channels
Firefox backend
500-entry console ring
500-entry network ring
Persistent history
Fingerprint spoofing
Patchright stealth
CDP WebSocket
Proxy (SOCKS5/HTTP)
DNS-over-HTTPS
Chromium channels
Firefox backend
500-entry console ring
500-entry network ring
Persistent history
Fingerprint spoofing
Patchright stealth
CDP WebSocket
Proxy (SOCKS5/HTTP)
DNS-over-HTTPS
Chromium channels
Firefox backend
500-entry console ring
500-entry network ring
Persistent history
POST /cookies auth
JS eval in page
PNG / JPEG / PDF capture
Mobile fingerprints
Tablet viewports
Custom UA strings
Geolocation override
QUIC / HTTP3 opt-in
Persistent browser_id
POST /cookies auth
JS eval in page
PNG / JPEG / PDF capture
Mobile fingerprints
Tablet viewports
Custom UA strings
Geolocation override
QUIC / HTTP3 opt-in
Persistent browser_id
POST /cookies auth
JS eval in page
PNG / JPEG / PDF capture
Mobile fingerprints
Tablet viewports
Custom UA strings
Geolocation override
QUIC / HTTP3 opt-in
Persistent browser_id
POST /cookies auth
JS eval in page
PNG / JPEG / PDF capture
Mobile fingerprints
Tablet viewports
Custom UA strings
Geolocation override
QUIC / HTTP3 opt-in
Persistent browser_id

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.

início / kit / browser / começar

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.

Ler a Documentação