Loading...
Loading...
Compare original and translation side by side
browserbrowsebrowserbrowsebrowserbrowsernode --version # require Node 18+
which browse || npm install -g browse
which jq || true # optional — used only for ad-hoc queryingbrowse cdpbrowse --help | grep -q "^\s*cdp " || echo "browse cdp not available — update browse"node --version # 需要Node 18+版本
which browse || npm install -g browse
which jq || true # 可选——仅用于临时查询browse cdpbrowse --help | grep -q "^\s*cdp " || echo "browse cdp不可用——请更新browse"browse cdp <target>cdp/raw.ndjsonbrowse screenshot --cdp <target> --path <file>browse get html body --cdp <target>--cdp--cdpbisect-cdp.mjsraw.ndjsonPage.frameNavigatedbrowse cdp <target>cdp/raw.ndjsonbrowse screenshot --cdp <target> --path <file>browse get html body --cdp <target>--cdp--cdpbisect-cdp.mjsraw.ndjsonPage.frameNavigatedundefinedundefinedundefinedundefinedbb-capture.mjsbb-finalize.mjsBrowserbase ends a session as soon as its last CDP client disconnects. Create with, then attach automation to the session's--keep-alivebefore or together with the tracer.connectUrlhandles the keep-alive session and tracer setup; your automation still needs to attach.bb-capture.mjs --new
export BROWSERBASE_API_KEY=...bb-capture.mjsbb-finalize.mjs当最后一个CDP客户端断开连接时,Browserbase会立即结束会话。创建会话时使用参数,然后在启动跟踪器之前或同时将自动化程序附加到会话的--keep-alive。connectUrl会处理保活会话和跟踪器设置;你的自动化程序仍需附加到会话。bb-capture.mjs --new
export BROWSERBASE_API_KEY=...
Attaching to a session that's *already running* (e.g. one your production worker created) — `bb-capture.mjs` accepts a session id instead of `--new`:
```bash
附加到**已在运行**的会话(例如生产worker创建的会话)——`bb-capture.mjs`接受会话ID而非`--new`参数:
```bashundefinedundefinedbb-capture.mjsbrowserbasemanifest.jsonbb-finalize.mjs<run>/browserbase/session.jsonbrowse cloud sessions get<run>/browserbase/logs.jsonbrowse cloud sessions logscdp/raw.ndjson<run>/browserbase/downloads.zipscreenshots/dom/debugger_urlbb-capture.mjsmanifest.jsonbrowserbasebb-finalize.mjs<run>/browserbase/session.jsonbrowse cloud sessions get<run>/browserbase/logs.jsonbrowse cloud sessions logscdp/raw.ndjson<run>/browserbase/downloads.zipscreenshots/dom/debugger_url.o11y/<run-id>/
manifest.json run metadata: target, domains, started_at, stopped_at
index.jsonl one line per sample: {ts, screenshot, dom, url}
cdp/
raw.ndjson full CDP firehose (one JSON object per line)
summary.json {sessionId, duration, totalEvents, pages[]} — see shape below
network/{requests,responses,finished,failed,websocket}.jsonl session-wide buckets (always written)
console/{logs,exceptions}.jsonl
runtime/all.jsonl
log/entries.jsonl
page/{navigations,lifecycle,frames,dialogs,all}.jsonl
dom/all.jsonl (only if O11Y_DOMAINS includes DOM)
target/{attached,detached}.jsonl
pages/ per-page slices, indexed by top-level frameNavigated boundaries
000/ first concrete page
url.txt the URL for this page
summary.json this page's domains/network/timing block (same shape as a pages[] entry)
raw.jsonl firehose scoped to this page
network/, console/, page/, runtime/, log/, target/, dom/ same buckets, only non-empty files
screenshots/<iso-ts>.png one PNG per sample interval
dom/<iso-ts>.html one HTML dump per sample interval
browserbase/ added by bb-finalize.mjs (Browserbase runs only)
session.json final `browse cloud sessions get` snapshot (proxyBytes, status, ended_at, …)
logs.json `browse cloud sessions logs` output (often [])
downloads.zip `browse cloud sessions downloads get` output (only if the session downloaded files)bb-capture.mjsmanifest.jsonbrowserbasesession_idproject_idregionstarted_atexpires_atkeep_alivedebugger_url.o11y/<run-id>/
manifest.json 运行元数据:目标、域、启动时间、停止时间
index.jsonl 每个采样对应一行:{ts, screenshot, dom, url}
cdp/
raw.ndjson 完整CDP事件流(每行一个JSON对象)
summary.json {sessionId, duration, totalEvents, pages[]} —— 结构如下
network/{requests,responses,finished,failed,websocket}.jsonl 会话级分组(始终生成)
console/{logs,exceptions}.jsonl
runtime/all.jsonl
log/entries.jsonl
page/{navigations,lifecycle,frames,dialogs,all}.jsonl
dom/all.jsonl (仅当O11Y_DOMAINS包含DOM时生成)
target/{attached,detached}.jsonl
pages/ 按页面分割的内容,以顶层frameNavigated事件为边界索引
000/ 第一个具体页面
url.txt 此页面的URL
summary.json 此页面的域/网络/计时块(结构与pages[]条目相同)
raw.jsonl 限定于此页面的事件流
network/, console/, page/, runtime/, log/, target/, dom/ 相同分组,仅生成非空文件
screenshots/<iso-ts>.png 每个采样间隔对应一张PNG截图
dom/<iso-ts>.html 每个采样间隔对应一份HTML转储
browserbase/ 仅在Browserbase运行时由bb-finalize.mjs添加
session.json `browse cloud sessions get`的最终快照(proxyBytes、状态、结束时间等)
logs.json `browse cloud sessions logs`的输出(通常为[])
downloads.zip `browse cloud sessions downloads get`的输出(仅当会话有下载文件时生成)bb-capture.mjsmanifest.jsonbrowserbasesession_idproject_idregionstarted_atexpires_atkeep_alivedebugger_urlcdp/summary.jsonpages[]Page.frameNavigated{
"sessionId": "45f28023-…",
"duration": { "startMs": 1777312533000, "endMs": 1777312609000, "totalMs": 76000 },
"totalEvents": 420,
"pages": [
{
"pageId": 0,
"url": "https://example.com/",
"startMs": 1777312533000, "endMs": 1777312538886, "durationMs": 5886,
"eventCount": 60,
"domains": {
"Network": { "count": 18, "errors": 1 },
"Console": { "count": 2 },
"Page": { "count": 24 },
"Runtime": { "count": 13 }
},
"network": { "requests": 4, "failed": 1, "byType": { "Document": 2, "Script": 1, "Other": 1 } }
}
]
}startMsendMsdurationMsmanifest.started_atdomains[*]errorswarningscdp/summary.jsonPage.frameNavigatedpages[]{
"sessionId": "45f28023-…",
"duration": { "startMs": 1777312533000, "endMs": 1777312609000, "totalMs": 76000 },
"totalEvents": 420,
"pages": [
{
"pageId": 0,
"url": "https://example.com/",
"startMs": 1777312533000, "endMs": 1777312538886, "durationMs": 5886,
"eventCount": 60,
"domains": {
"Network": { "count": 18, "errors": 1 },
"Console": { "count": 2 },
"Page": { "count": 24 },
"Runtime": { "count": 13 }
},
"network": { "requests": 4, "failed": 1, "byType": { "Document": 2, "Script": 1, "Other": 1 } }
}
]
}startMsendMsdurationMsmanifest.started_aterrorswarningsdomains[*]query.mjsquery.mjsscripts/query.mjs <run-id> <command>node scripts/query.mjs my-run list # one-line table of pages
node scripts/query.mjs my-run page 1 # full summary for page 1
node scripts/query.mjs my-run page 1 network/failed # cat failed.jsonl for page 1
node scripts/query.mjs my-run errors # all errors across pages, attributed by pid
node scripts/query.mjs my-run errors 2 # errors from page 2 only
node scripts/query.mjs my-run hosts # top hosts by request count
node scripts/query.mjs my-run host api.example.com # all requests/responses for a host
node scripts/query.mjs my-run summary # full summary.jsoncdp/summary.jsoncdp/pages/<pid>/jqrgscripts/query.mjs <run-id> <command>node scripts/query.mjs my-run list 页面的单行表格
node scripts/query.mjs my-run page 1 页面1的完整摘要
node scripts/query.mjs my-run page 1 network/failed 页面1的failed.jsonl内容
node scripts/query.mjs my-run errors 所有页面的错误,按页面ID归类
node scripts/query.mjs my-run errors 2 仅页面2的错误
node scripts/query.mjs my-run hosts 按请求数排序的顶级主机
node scripts/query.mjs my-run host api.example.com 某主机的所有请求/响应
node scripts/query.mjs my-run summary 完整的summary.json内容cdp/summary.jsoncdp/pages/<pid>/jqrgundefinedundefined
See **REFERENCE.md** for the full jq recipe library and a method-by-method bisect map. See **EXAMPLES.md** for end-to-end debug scenarios.
完整的jq示例库和按方法分割的映射请参见**REFERENCE.md**。端到端调试场景请参见**EXAMPLES.md**。bb-capture.mjs--keep-alive--releasebb-finalize.mjs --release--newbb-capture.mjs <session-id>bb-finalize.mjs--release--keep-aliveNetwork Console Runtime Log PageDOMO11Y_DOMAINS="$O11Y_DOMAINS DOM"connectUrlbrowse open ... --cdp "$CONNECT_URL" --session <name>--sessionstop-capture.mjsstopped_atbisect-cdp.mjsraw.ndjsonbb-capture.mjs--keep-alive--releasebb-finalize.mjs --release--newbb-capture.mjs <session-id>bb-finalize.mjs--release--keep-aliveO11Y_DOMAINS="$O11Y_DOMAINS DOM"DOMbrowse open ... --cdp "$CONNECT_URL" --session <name>connectUrl--sessionstop-capture.mjsstopped_atbisect-cdp.mjsraw.ndjsonbrowse cdp exited immediatelybrowse cloud sessions get <id>statusCOMPLETED--keep-aliveraw.ndjsonindex.jsonlurl--timeoutBB_SESSION_TIMEOUT=1800 node scripts/bb-capture.mjs --new ...bb-capture.mjs <id>browse cloud sessions list | jq '.[] | select(.status == "RUNNING")'browserbase/logs.json[]browse cloud sessions logscdp/raw.ndjsonscreenshots/dom/browse cdp exited immediatelybrowse cloud sessions get <id>statusCOMPLETED--keep-aliveraw.ndjsonindex.jsonlurl--timeoutBB_SESSION_TIMEOUT=1800 node scripts/bb-capture.mjs --new ...bb-capture.mjs <id>browse cloud sessions list | jq '.[] | select(.status == "RUNNING")'browserbase/logs.json[]browse cloud sessions logscdp/raw.ndjsonscreenshots/dom/