Zum Inhalt springen
Home / Kit / Browser
BrowserKit-Dienst

Chromium als URL

Headless oder sichtbares Chromium, steuerbar über eine flache HTTP-API. Standardmäßig Stealth aktiv, CDP WebSocket, Screenshot, Eval, Cookies und mehr.

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

# Stealthes Chromium mit Fingerprint starten

$ curl "/start?browser_id=main&stealth=true&timezoneId=America/New_York&locale=en-US"

[ "browser_id": "main",

"webSocketDebuggerUrl": "ws://.../devtools/browser/...",

"stealth": true ]

 

# Navigieren – oder WS-URL an Puppeteer übergeben

$ curl "/browse?browser_id=main&url=https://hoody.com"

200 OK

 

# Aufzeichnen; funktioniert bereits mit deinem vorhandenen CDP-Client

$ curl "/screenshot?browser_id=main&format=png" -o shot.png

1920x1080 PNG

Home / Kit / Browser / Demo
Drei Endpoint-Klassen, eine URL

Einen echten Browser über HTTP steuern, beobachten und inspizieren

Jede Browser-Instanz stellt dieselben Primitive bereit, auf die Puppeteer und Playwright setzen – Navigation, DOM-Extraktion, Screenshots, JS-Ausführung – als einfache HTTP-Endpunkte.

01 / 05

Eine Instanz starten, auf eine URL zeigen

GET /start startet ein stealth Chromium mit deinem Fingerprint. GET /browse?url=… lädt eine Seite. Ein HTTP-Roundtrip, kein Treiber-Install, kein Docker-Image zu pflegen.

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

JS auf der Seite ausführen, strukturierte Daten zurückgeben

POST /eval führt beliebiges JavaScript im Seitenkontext aus. GET /html und GET /text liefern den gerenderten DOM und sichtbaren Text. Keine Selector-Bibliothek, kein Headless-Browser-SDK.

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

Screenshot oder PDF der aktuellen Seite

GET /screenshot liefert PNG, JPEG oder Base64 — vollständige Seite oder Viewport. GET /pdf rendert auf A4/Letter mit Querformat und Rändern. Binär kommt direkt zurück, keine Headless-Chrome-Flags nötig.

GET /screenshot?fullPage=true → PNG-Binär
04 / 05

CDP-URLs holen, an alles weitergeben

GET /devtools-url liefert drei URLs: den CDP-WebSocket (für Puppeteer / Playwright / jeden CDP-Client), die DevTools-HTTP-API und die DevTools-Frontend-UI. Die Frontend-URL in einem Browser-Tab öffnen, um zu sehen, was die Headless-Instanz sieht.

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

Screenshot → entscheiden → klicken, in einer Schleife

Die Form, die jedes Computer-Use-Modell erwartet: ein Screenshot, ein DOM-Snapshot, eine Möglichkeit, bei (x, y) zu klicken.

Schleife: Screenshot → eval('click(x,y)')
Vorher· Traditionelles Headless

docker run chromium + Fonts + Fingerprint-Patches

Nachher· Hoody Browser

curl /start?stealth=true → bereit

Home / Kit / Browser / API
API

Chromium über HTTP starten, steuern und herunterfahren

Jeder Endpunkt liefert deterministisches JSON oder Binary. Kein stderr-Scraping, keine /tmp-Dateien, keine Race-Conditions.

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

Home / Kit / Browser / Einsatzbereiche
Einsatzbereiche

Wo Teams Browser einsetzen

Eine flache HTTP-Schicht über Chromium eröffnet Integrationspunkte, die ein lokal installierter Headless-Browser nicht kann.

{01}

Datenpipelines

Gerendertes HTML und JSON in dein Warehouse aufnehmen. Die /eval-Aufrufe mit Cron triggern, Ergebnisse in Snowflake/BigQuery pipen.

{02}

Agent-Frameworks

An Claude Computer Use, OpenAI Operator oder LangChain Browser-Tools anschließen. Screenshot + eval ist die primitive Schnittstelle.

{03}

Authentifizierte Workflows

Eingeloggte Dashboards steuern – SaaS-Admin-Panels, Bank-Portale, interne Tools. POST /cookies persistiert Sitzungen.

{04}

Review-Apps

Browser-Vorschauen pro PR. CI startet eine Browser-Instanz gegen den gestuften Build, gibt /screenshot zurück.

{05}

Geplantes Monitoring

Cron-getriggerte /screenshot und /network Erfassungen für Uptime-, SLO- und Perf-Dashboards.

{06}

Compliance-Snapshots

Zeitgestempelte, Fingerprint-gesperrte Erfassungen einer Drittanbieter-Seite für rechtliche, Audit- oder Beweisworkflows.

Home / Kit / Browser / Endpoints
API

23 Operationen, 4 Endpoint-Gruppen

Jede Browser-Fähigkeit ist ein flacher HTTP-Aufruf. Methoden-Varianten auf dem gleichen Pfad werden separat aufgelistet.

Interaktion

[count, plural, one [# Endpoint] other [# Endpoints]]'

curl -X POST /eval -d '["script":"document.title"]' → "Example"

POST
/browseMit einem JSON-Body navigieren – waitUntil, Timeout, Referer, Header.
GET
/browse?url=Kurzform-Navigation für Shell-curl-Ergonomie.
POST
/evalJavaScript (plain oder base64) im Seitenkontext ausführen, Ergebnis zurückgeben.
GET
/eval?script=Inline-Skript-Eval für One-Shot-Lesevorgänge wie document.title.
GET
/htmldocument.documentElement.outerHTML zurückgeben – gerendert, nicht roh.
GET
/textdocument.body.innerText zurückgeben – was ein Mensch liest.
GET
/screenshotPNG / JPEG / base64 – fullPage unterstützt, JPEG-Qualität 0–100.
GET
/pdfAls PDF rendern – A4/Letter, Querformat, Ränder, printBackground.

Sitzungszustand

[count, plural, one [# Endpoint] other [# Endpoints]]'

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

GET
/cookiesCookies auflisten, optional nach URL gefiltert.
POST
/cookiesCookies hinzufügen – name, value, domain, path, httpOnly, secure, sameSite.
DELETE
/cookiesAlle Cookies für die Instanz löschen.
GET
/metadataVollständige Instanz-Metadaten – Sitzung, Viewport, DevTools-URLs, Tab-Liste.
GET
/tabsOffene Tabs mit id, url, title, isActive auflisten.
POST
/tab/closeTab nach id schließen – oder den aktiven Tab, wenn keiner angegeben.

Introspektion

[count, plural, one [# Endpoint] other [# Endpoints]]'

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

GET
/devtools-urlCDP-WebSocket + DevTools HTTP + Frontend-UI-URLs zurückgeben.
GET
/consoleLetzte 500 Konsoleneinträge – log, error, warn, info.
GET
/networkLetzte 500 Netzwerkeinträge – Methode, URL, Status, resourceType.
GET
/historyPaginierter persistenter Browserverlauf mit Domain- und Zeitfiltern.
DELETE
/historyVerlaufseinträge, die dem Filter entsprechen, löschen.

Lebenszyklus

[count, plural, one [# Endpoint] other [# Endpoints]]'

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

GET
/startInstanz erstellen oder fortsetzen mit browser_id, Fingerprint, Stealth, Proxy, Viewport.
GET
/stopEine Instanz pausieren – Zustand bleibt erhalten. /restart zum Fortsetzen verwenden.
GET
/restartStoppen und mit optional aktualisierter Konfiguration neu starten.
GET
/shutdownInstanz beenden und Slot freigeben. ?force=true tötet feststeckende Instanzen.

Plus plattformvererbtes GET /health und GET /metrics auf jedem Hoody-Kit-Dienst.

Home / Kit / Browser / Fähigkeiten
Fähigkeiten

Stealth, Fingerprinting und CDP – ohne Einrichtungskosten

Browser ist eine duenne Schicht über Chromium — alles, was du sonst installieren, patchen und betreuen würdest, ist ein Query-Parameter.

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

Fingerprint-Spoofing

UA, Viewport, Zeitzone, Locale und Geolocation bei /start konfigurieren — oder auf eine fingerprintId zeigen für konsistentes Profil.

Stealth-Modus

Patchright Anti-Erkennung ist standardmäßig für Chromium aktiviert. Nicht kugelsicher gegen jeden Erkennungsanbieter, aber solide für die meisten Faelle.

CDP-Durchleitung

GET /devtools-url liefert die WebSocket-URL, DevTools-HTTP-API und Frontend-UI. Bestehender Puppeteer- oder Playwright-Code läuft weiter — verbinden, nicht neu schreiben.

Proxy & DoH

SOCKS5, SOCKS5h, HTTP, HTTPS-Proxies mit Auth und Bypass-Listen. DNS-over-HTTPS per Cloudflare standardmäßig aktiviert.

Chromium-Kanäle

Jeden Chromium-Build anpinnen — vollständiger Versions-String, Haupt-Version oder Kanal (stable / beta / dev / canary).

Debug-Ringpuffer

Letzte 500 Konsolen-Einträge und 500 Netzwerk-Einträge pro Instanz, plus persistenter Browser-Verlauf mit Suchfunktion.

Home / Kit / Browser / Start

Einen echten Browser zu deinem Stack hinzufügen

Browser ist einer der Hoody-Kit-Services, die mit jedem Container mitgeliefert werden. Kein Treiber-Install, kein Puppeteer-Setup.

Docs lesen