跳转到内容
主页 / 套件 / 浏览器
Browser套件服务

Chromium 通过 URL

无头或可见的 Chromium,通过简洁 HTTP API 全面控制。默认开启隐身模式,/start 返回 CDP WebSocket——将 Puppeteer、Playwright 或任意 CDP 客户端直接接入。

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

# 启动带指纹的隐身 Chromium

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

[ "browser_id": "main",

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

"stealth": true ]

 

# 导航——或将 WS URL 传给 Puppeteer

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

200 OK

 

# 截图;已与现有 CDP 客户端兼容

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

1920x1080 PNG

主页 / 套件 / 浏览器 / 演示
三类接口,一个 URL

通过 HTTP 驱动、观察和检视真实浏览器

每个 Browser 实例都暴露 Puppeteer 和 Playwright 所依赖的相同原语——导航、DOM 执行、截图、DevTools 协议——但以简洁的 HTTP 接口呈现。选择下方标签页,查看底层运行的具体接口。

01 / 05

启动实例,指向目标 URL

GET /start 启动带指纹的隐身 Chromium;GET /browse?url=… 加载页面。一次 HTTP 往返,无需安装驱动,无需维护 Docker 镜像。

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

在页面中执行 JS,返回结构化数据

POST /eval 在页面上下文中运行任意 JavaScript;GET /html 和 GET /text 返回渲染后的 DOM 与可见文本。无需选择器库,无需无头浏览器 SDK。

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

对当前页面截图或生成 PDF

GET /screenshot 返回 PNG、JPEG 或 base64——支持整页或视口截图;GET /pdf 渲染为 A4/Letter,支持横向与边距设置。二进制直接返回,无需处理无头 Chrome 标志。

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

获取 CDP URL,接入任意工具

GET /devtools-url 返回三个 URL:CDP WebSocket(供 Puppeteer / Playwright / 任意 CDP 客户端使用)、DevTools HTTP API 和 DevTools 前端界面。在浏览器标签页打开前端 URL,即可实时查看无头实例的状态。

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

截图 → 决策 → 点击,循环执行

每个 Computer-Use 模型都期望的结构:截图、DOM 快照、在 (x, y) 点击的方式。Browser 通过简单 HTTP 接口暴露这些原语——可直接对接 Claude Computer Use、OpenAI Operator 或自定义智能体。

loop: screenshot → eval('click(x,y)')
之前· 传统无头方式

docker run chromium + fonts + fingerprint patches

之后· Hoody Browser

curl /start?stealth=true → ready

主页 / 套件 / 浏览器 / API
API

通过 HTTP 启动、驱动和销毁 Chromium

每个接口返回确定性 JSON 或二进制数据。无需解析 stderr,无需 /tmp 文件,无需与未刷新输出的子进程竞争。

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

主页 / 套件 / 浏览器 / 使用场景
使用场景

团队部署 Browser 的场景

在 Chromium 之上构建简洁 HTTP 层,开放了本地无头浏览器无法覆盖的集成点。以下是最常见的六种部署形态。

{01}

数据管道

将渲染后的 HTML 和 JSON 注入数据仓库。定时调用 /eval,将结果导入 Snowflake、BigQuery 或 Postgres。无需在每台工作节点安装 Chromium,无需担心集群版本漂移。

{02}

智能体框架

直接接入 Claude Computer Use、OpenAI Operator 或 LangChain 浏览器工具。截图加执行正是这些框架期望的形态——Browser 是适配任何智能体运行时的 HTTP 直接插件。

{03}

已认证工作流

驱动已登录的仪表盘——SaaS 管理面板、银行门户、内部工具。POST /cookies 持久化会话,后续调用无需每次重新认证。

{04}

Review App

针对每个 PR 的浏览器预览。CI 向暂存构建启动一个 Browser 实例,在 PR 评论中返回 /devtools-url 前端链接,审查者一键即可实时查看应用。

{05}

定时监控

通过定时任务触发 /screenshot 和 /network 采集,接入正常运行时间、SLO 和性能仪表盘。为每个探针环形缓冲最近 500 条控制台和网络记录——在用户发现问题前提前捕获回归。

{06}

合规快照

对第三方页面进行加盖时间戳、锁定指纹的截图,用于法律、审计或取证场景。锁定 Chromium 渠道、视口和地理位置——数月后仍可精确复现。

主页 / 套件 / 浏览器 / 接口
API

23 个操作,4 个接口组

每项 Browser 能力都是一次简单 HTTP 调用。同一路径的不同 HTTP 方法单独列出,因为行为有所不同——GET /eval 执行单次脚本,POST /eval 接受完整请求体。

交互

[count, plural, one [# 个接口] other [# 个接口]]'

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

POST
/browse通过 JSON 请求体导航——支持 waitUntil、timeout、referer、headers。
GET
/browse?url=面向命令行的简洁导航方式。
POST
/eval在页面上下文中执行 JavaScript(纯文本或 base64),返回结果。
GET
/eval?script=单次读取的内联脚本执行,如 document.title。
GET
/html返回 document.documentElement.outerHTML——渲染后的结果,非原始 HTML。
GET
/text返回 document.body.innerText——用户实际可见的文本。
GET
/screenshotPNG / JPEG / base64——支持整页截图,JPEG 质量 0-100。
GET
/pdf渲染为 PDF——支持 A4/Letter、横向、边距、打印背景。

会话状态

[count, plural, one [# 个接口] other [# 个接口]]'

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

GET
/cookies列出 Cookie,可按 URL 过滤。
POST
/cookies添加 Cookie——name、value、domain、path、httpOnly、secure、sameSite。
DELETE
/cookies清除实例的所有 Cookie。
GET
/metadata完整实例元数据——会话、视口、DevTools URL、标签页列表。
GET
/tabs列出已打开的标签页,含 id、url、title、isActive。
POST
/tab/close按 id 关闭标签页——未指定时关闭当前激活的标签页。

自省

[count, plural, one [# 个接口] other [# 个接口]]'

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

GET
/devtools-url返回 CDP WebSocket + DevTools HTTP + 前端界面 URL。
GET
/console最近 500 条控制台记录——log、error、warn、info。
GET
/network最近 500 条网络记录——method、URL、status、resourceType。
GET
/history分页持久化浏览历史,支持域名与时间过滤。
DELETE
/history删除符合过滤条件的历史记录。

生命周期

[count, plural, one [# 个接口] other [# 个接口]]'

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

GET
/start通过 browser_id、指纹、隐身、代理、视口创建或恢复实例。
GET
/stop暂停实例——状态保留。使用 /restart 恢复。
GET
/restart停止并以可选的更新配置重新启动。
GET
/shutdown终止实例并释放槽位。?force=true 强制终止卡住的实例。

每个 Hoody 套件服务还继承平台级 GET /health 和 GET /metrics 接口。

主页 / 套件 / 浏览器 / 能力
能力

隐身模式、指纹伪装与 CDP——零配置负担

Browser 是 Chromium 之上的薄层——所有需要安装、打补丁和维护的内容都只是一个查询参数。六项关键能力,真正面向生产环境。

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

指纹伪装

在 /start 配置 UA、视口、时区、语言和地理位置——或指向 fingerprintId 加载预设 JSON。Canvas 和 WebGL 自动跟随配置文件。

隐身模式

Patchright 反检测默认对 Chromium 开启。并非对所有检测厂商都无懈可击——如需对抗强防护站点,建议配合验证码解决方案使用。

CDP 直通

GET /devtools-url 返回 WebSocket URL、DevTools HTTP API 和前端界面。现有 Puppeteer 或 Playwright 代码无需改写,直接连接即可。

代理与 DoH

支持 SOCKS5、SOCKS5h、HTTP、HTTPS 代理,含认证与白名单配置。默认通过 Cloudflare 开启 DNS over HTTPS;QUIC/HTTP3 可按实例选择性开启。

Chromium 渠道

精确指定任意 Chromium 构建版本——完整版本字符串、主版本号或渠道(stable / beta / dev / canary)。也可通过 browser=firefox 支持 Firefox。

调试环形缓冲区

每个实例保留最近 500 条控制台记录和 500 条网络记录,并提供可查询和删除的持久化浏览历史接口。无需额外接入外部日志层。

主页 / 套件 / 浏览器 / 开始

为你的技术栈添加真实浏览器

Browser 是随每个 Hoody 容器预装的套件服务之一。无需安装驱动,无需 Puppeteer 脚手架,无需手动修补指纹。从一个 URL 开始。

阅读文档