camofox-browser 2.1.1 → 2.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +150 -0
- package/README.md +310 -34
- package/dist/src/cli/commands/content.d.ts.map +1 -1
- package/dist/src/cli/commands/content.js +37 -0
- package/dist/src/cli/commands/content.js.map +1 -1
- package/dist/src/cli/commands/core.d.ts.map +1 -1
- package/dist/src/cli/commands/core.js +21 -4
- package/dist/src/cli/commands/core.js.map +1 -1
- package/dist/src/cli/commands/interaction.d.ts.map +1 -1
- package/dist/src/cli/commands/interaction.js +5 -14
- package/dist/src/cli/commands/interaction.js.map +1 -1
- package/dist/src/cli/commands/navigation.d.ts.map +1 -1
- package/dist/src/cli/commands/navigation.js +12 -6
- package/dist/src/cli/commands/navigation.js.map +1 -1
- package/dist/src/cli/commands/server.d.ts.map +1 -1
- package/dist/src/cli/commands/server.js +9 -3
- package/dist/src/cli/commands/server.js.map +1 -1
- package/dist/src/cli/commands/session.d.ts.map +1 -1
- package/dist/src/cli/commands/session.js +23 -5
- package/dist/src/cli/commands/session.js.map +1 -1
- package/dist/src/cli/server/manager.d.ts +1 -0
- package/dist/src/cli/server/manager.d.ts.map +1 -1
- package/dist/src/cli/server/manager.js +7 -12
- package/dist/src/cli/server/manager.js.map +1 -1
- package/dist/src/middleware/lifecycle-activity.d.ts +9 -0
- package/dist/src/middleware/lifecycle-activity.d.ts.map +1 -0
- package/dist/src/middleware/lifecycle-activity.js +21 -0
- package/dist/src/middleware/lifecycle-activity.js.map +1 -0
- package/dist/src/openapi/spec.d.ts +4 -0
- package/dist/src/openapi/spec.d.ts.map +1 -0
- package/dist/src/openapi/spec.js +730 -0
- package/dist/src/openapi/spec.js.map +1 -0
- package/dist/src/routes/core.d.ts.map +1 -1
- package/dist/src/routes/core.js +545 -58
- package/dist/src/routes/core.js.map +1 -1
- package/dist/src/routes/docs.d.ts +3 -0
- package/dist/src/routes/docs.d.ts.map +1 -0
- package/dist/src/routes/docs.js +23 -0
- package/dist/src/routes/docs.js.map +1 -0
- package/dist/src/routes/openclaw.d.ts.map +1 -1
- package/dist/src/routes/openclaw.js +317 -90
- package/dist/src/routes/openclaw.js.map +1 -1
- package/dist/src/server.js +55 -4
- package/dist/src/server.js.map +1 -1
- package/dist/src/services/context-pool.d.ts +21 -4
- package/dist/src/services/context-pool.d.ts.map +1 -1
- package/dist/src/services/context-pool.js +290 -71
- package/dist/src/services/context-pool.js.map +1 -1
- package/dist/src/services/download.d.ts +2 -0
- package/dist/src/services/download.d.ts.map +1 -1
- package/dist/src/services/download.js +110 -80
- package/dist/src/services/download.js.map +1 -1
- package/dist/src/services/lifecycle-controller.d.ts +40 -0
- package/dist/src/services/lifecycle-controller.d.ts.map +1 -0
- package/dist/src/services/lifecycle-controller.js +106 -0
- package/dist/src/services/lifecycle-controller.js.map +1 -0
- package/dist/src/services/resource-extractor.d.ts +1 -0
- package/dist/src/services/resource-extractor.d.ts.map +1 -1
- package/dist/src/services/resource-extractor.js +7 -0
- package/dist/src/services/resource-extractor.js.map +1 -1
- package/dist/src/services/session.d.ts +109 -4
- package/dist/src/services/session.d.ts.map +1 -1
- package/dist/src/services/session.js +622 -64
- package/dist/src/services/session.js.map +1 -1
- package/dist/src/services/structured-extractor.d.ts +39 -0
- package/dist/src/services/structured-extractor.d.ts.map +1 -0
- package/dist/src/services/structured-extractor.js +487 -0
- package/dist/src/services/structured-extractor.js.map +1 -0
- package/dist/src/services/tab.d.ts +30 -3
- package/dist/src/services/tab.d.ts.map +1 -1
- package/dist/src/services/tab.js +872 -124
- package/dist/src/services/tab.js.map +1 -1
- package/dist/src/services/tracing.d.ts +7 -0
- package/dist/src/services/tracing.d.ts.map +1 -1
- package/dist/src/services/tracing.js +200 -19
- package/dist/src/services/tracing.js.map +1 -1
- package/dist/src/services/vnc.d.ts.map +1 -1
- package/dist/src/services/vnc.js +5 -3
- package/dist/src/services/vnc.js.map +1 -1
- package/dist/src/services/youtube.js +1 -1
- package/dist/src/services/youtube.js.map +1 -1
- package/dist/src/types.d.ts +71 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/config.d.ts +79 -3
- package/dist/src/utils/config.d.ts.map +1 -1
- package/dist/src/utils/config.js +145 -3
- package/dist/src/utils/config.js.map +1 -1
- package/dist/src/utils/presets.d.ts.map +1 -1
- package/dist/src/utils/presets.js +3 -1
- package/dist/src/utils/presets.js.map +1 -1
- package/dist/src/utils/proxy-profiles.d.ts +18 -0
- package/dist/src/utils/proxy-profiles.d.ts.map +1 -0
- package/dist/src/utils/proxy-profiles.js +197 -0
- package/dist/src/utils/proxy-profiles.js.map +1 -0
- package/dist/src/utils/sidecar-version.d.ts +12 -0
- package/dist/src/utils/sidecar-version.d.ts.map +1 -0
- package/dist/src/utils/sidecar-version.js +63 -0
- package/dist/src/utils/sidecar-version.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/openclaw.plugin.json +39 -0
- package/package.json +16 -4
- package/plugin.ts +949 -0
package/README.md
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
- [Why CamoFox?](#why-camofox)
|
|
13
13
|
- [Features](#features)
|
|
14
|
+
- [Preview Status](#preview-status)
|
|
14
15
|
- [Quick Start](#quick-start)
|
|
15
16
|
- [CLI](#cli)
|
|
16
17
|
- [Console Capture](#console-capture)
|
|
@@ -19,6 +20,7 @@
|
|
|
19
20
|
- [Usage with AI Agents](#usage-with-ai-agents)
|
|
20
21
|
- [Architecture](#architecture)
|
|
21
22
|
- [API Reference](#api-reference)
|
|
23
|
+
- [Structured Extract](#structured-extract)
|
|
22
24
|
- [Search Macros](#search-macros)
|
|
23
25
|
- [Geo Presets](#geo-presets)
|
|
24
26
|
- [Environment Variables](#environment-variables)
|
|
@@ -50,19 +52,53 @@
|
|
|
50
52
|
- **Multi-Session** — concurrent isolated browser contexts per `userId` (defaults: max 50 sessions, max 10 tabs/session)
|
|
51
53
|
- **Persistent Browser Profiles** — Each user gets a dedicated Firefox profile. Cookies, localStorage, IndexedDB, and all browser storage persist across sessions automatically.
|
|
52
54
|
- **Geo Presets** — 8 built-in region presets (locale/timezone/geolocation) + custom presets file
|
|
55
|
+
- **Session-Level Proxy/Geo Overrides** — per-session proxy configuration via named profiles or raw credentials, with hybrid geo modes (`explicit-wins` or `proxy-locked`)
|
|
53
56
|
- **14 Search Macros** — Google, YouTube, Amazon, Reddit (search + subreddit JSON), Wikipedia, Twitter, Yelp, Spotify, Netflix, LinkedIn, Instagram, TikTok, Twitch
|
|
54
57
|
- **Element Refs** — accessibility snapshots annotated with stable `eN` element references for precise interaction
|
|
55
|
-
- **Cookie Persistence** — import Netscape/Playwright-style cookies into a session (
|
|
58
|
+
- **Cookie Persistence** — import Netscape/Playwright-style cookies into a session (bearer auth required only when `CAMOFOX_API_KEY` is set)
|
|
56
59
|
- **OpenClaw Plugin** — OpenClaw-compatible endpoints (`/start`, `/tabs/open`, `/act`, etc.)
|
|
57
60
|
- **TypeScript** — strict mode, typed request shapes, modular Express routes
|
|
58
|
-
- **YouTube Transcript Extraction** — yt-dlp
|
|
61
|
+
- **YouTube Transcript Extraction** — yt-dlp + browser fallback (service-level; no public API route currently exposed)
|
|
59
62
|
- **Snapshot Pagination** — offset-based windowing for large page snapshots
|
|
63
|
+
- **Image Listing Route** — image-only extraction over the shared resource extractor with selector, extension, lazy-load, and blob-resolution controls
|
|
64
|
+
- **Structured Extract** — deterministic schema-driven JSON extraction across core API, CLI, and OpenClaw without arbitrary JavaScript
|
|
60
65
|
- **Browser Health Monitoring** — health probe with recovery/degraded state tracking
|
|
61
66
|
- 🖥️ **CLI Mode** — 50+ commands for terminal-based browser automation
|
|
62
67
|
- 🔐 **Auth Vault** — AES-256-GCM encrypted credential storage (LLM-safe)
|
|
63
68
|
- 📜 **Pipeline Scripting** — Execute command scripts from files
|
|
64
69
|
- 🔍 **Console Capture** — capture and filter browser console messages and uncaught errors
|
|
65
70
|
- 📼 **Playwright Tracing** — record and export Playwright traces for debugging
|
|
71
|
+
- 🗂️ **Trace Artifact Management** — list, download, and delete managed trace ZIPs per user session
|
|
72
|
+
|
|
73
|
+
## Preview Status
|
|
74
|
+
|
|
75
|
+
CamoFox Browser Server is in **Preview** (Phase 1). Preview releases are functional for browser automation and agent integration, but carry specific compatibility commitments and explicit non-goals.
|
|
76
|
+
|
|
77
|
+
### What Preview Means
|
|
78
|
+
- The REST API and CLI are usable for agent workflows today; [CamoFox MCP](https://github.com/redf0x1/camofox-mcp) is available as an external companion integration
|
|
79
|
+
- New features may be added between minor versions
|
|
80
|
+
- Backward-compatible aliases are maintained for renamed or moved endpoints (see [Compatibility Policy](#compatibility-policy))
|
|
81
|
+
- Local state (profiles, registries, sessions) uses versioned formats with fail-closed integrity checks
|
|
82
|
+
|
|
83
|
+
### What Preview Does NOT Guarantee
|
|
84
|
+
- **Frozen API surface** — endpoint behavior, request shapes, or response formats may change between minor versions
|
|
85
|
+
- **Automatic local-state migration** — browser profiles, download registries, and session files use versioned sidecar formats; incompatible upgrades require manual reset (see [Local State Recovery](#local-state-recovery))
|
|
86
|
+
- **Downgrade safety** — rolling back to an older version may require clearing local state
|
|
87
|
+
- **Fixed GA timeline** — promotion to GA requires meeting evidence-based exit criteria, not a calendar date
|
|
88
|
+
|
|
89
|
+
### Compatibility Policy
|
|
90
|
+
During Preview, CamoFox follows an **additive-only deprecation model**:
|
|
91
|
+
- **Legacy aliases** (e.g., `listItemId` accepted alongside `sessionKey`, OpenClaw `/act` routing to core endpoints) continue to work alongside their replacements
|
|
92
|
+
- **Deprecated fields** are accepted silently; no removal until GA or a documented migration window with advance notice in CHANGELOG
|
|
93
|
+
- **No existing endpoint** is removed in a minor version — removals happen only in major versions with prior CHANGELOG notice
|
|
94
|
+
|
|
95
|
+
### Local State Recovery
|
|
96
|
+
Browser profiles, download registries, and CLI session files use versioned sidecar formats. When upgrading CamoFox:
|
|
97
|
+
- **Compatible versions**: State loads normally
|
|
98
|
+
- **Incompatible or corrupt state**: The server refuses to load incompatible profiles and download registries; the CLI rejects incompatible saved-session files. Both log an actionable error with the specific recovery path.
|
|
99
|
+
- **Recovery**: Delete the affected profile directory, session file, or download registry as indicated in the error message. Clean state is recreated on next use.
|
|
100
|
+
|
|
101
|
+
Supported sidecars include limited forward-migration paths (e.g., fingerprint v0 → v1); when no migration path exists for a given version, the server refuses to load the file and logs an actionable recovery message. There is no silent repair or downgrade path — this fail-closed default prevents data corruption at the cost of manual intervention on unsupported version jumps.
|
|
66
102
|
|
|
67
103
|
## Quick Start
|
|
68
104
|
|
|
@@ -102,6 +138,8 @@ docker run -d \
|
|
|
102
138
|
--name camofox-browser \
|
|
103
139
|
-p 9377:9377 \
|
|
104
140
|
-p 6080:6080 \
|
|
141
|
+
-e CAMOFOX_HOST=0.0.0.0 \
|
|
142
|
+
-e CAMOFOX_API_KEY=change-me \
|
|
105
143
|
-v ~/.camofox:/home/node/.camofox \
|
|
106
144
|
camofox-browser
|
|
107
145
|
```
|
|
@@ -117,9 +155,10 @@ services:
|
|
|
117
155
|
ports:
|
|
118
156
|
- "9377:9377"
|
|
119
157
|
environment:
|
|
158
|
+
CAMOFOX_HOST: "0.0.0.0"
|
|
120
159
|
CAMOFOX_PORT: "9377"
|
|
121
|
-
#
|
|
122
|
-
|
|
160
|
+
# Required when CAMOFOX_HOST is non-loopback
|
|
161
|
+
CAMOFOX_API_KEY: "change-me"
|
|
123
162
|
# CAMOFOX_ADMIN_KEY: "change-me"
|
|
124
163
|
# Optional: proxy routing (also enables Camoufox geoip mode)
|
|
125
164
|
# PROXY_HOST: ""
|
|
@@ -146,7 +185,7 @@ CamoFox Browser includes a powerful CLI for browser automation directly from the
|
|
|
146
185
|
npm install -g camofox-browser
|
|
147
186
|
|
|
148
187
|
# Or use npx (no install needed)
|
|
149
|
-
npx camofox open https://example.com
|
|
188
|
+
npx camofox-browser open https://example.com
|
|
150
189
|
```
|
|
151
190
|
|
|
152
191
|
### Quick Start
|
|
@@ -176,6 +215,7 @@ camofox get-url # Get current page URL
|
|
|
176
215
|
camofox get-text # Get page text content
|
|
177
216
|
camofox get-links # Get all links on page
|
|
178
217
|
camofox get-tabs # List open tabs
|
|
218
|
+
camofox extract-structured @schema.json # Extract deterministic JSON from a schema
|
|
179
219
|
|
|
180
220
|
# Interaction
|
|
181
221
|
camofox click <ref> # Click element by ref
|
|
@@ -353,7 +393,7 @@ This works with **Claude Code**, **Codex**, **Cursor**, **Gemini CLI**, **GitHub
|
|
|
353
393
|
| Skill | Focus | Best For |
|
|
354
394
|
|-------|-------|----------|
|
|
355
395
|
| `camofox-browser` | Full coverage (CLI + API + OpenClaw) | Complete reference |
|
|
356
|
-
| `camofox-cli` | CLI-only (50 commands) | Terminal-first workflows |
|
|
396
|
+
| `camofox-cli` | CLI-only (50+ commands) | Terminal-first workflows |
|
|
357
397
|
| `dogfood` | QA testing workflow | Systematic web app testing |
|
|
358
398
|
| `gemini-image` | Gemini image generation | AI image automation |
|
|
359
399
|
| `reddit` | Reddit automation | Reddit posting/commenting |
|
|
@@ -426,57 +466,75 @@ AI Agent (MCP / OpenClaw / REST Client)
|
|
|
426
466
|
|
|
427
467
|
Base URL: `http://localhost:9377`
|
|
428
468
|
|
|
469
|
+
> **Security defaults:** `CAMOFOX_HOST` now defaults to `127.0.0.1`. If you bind beyond loopback (for example `0.0.0.0` in Docker or PaaS), `CAMOFOX_API_KEY` becomes required at startup. On non-loopback binds, navigation targets on loopback/private/link-local/metadata hosts are blocked by default unless you explicitly set `CAMOFOX_ALLOW_PRIVATE_NETWORK=true`. If you also configure `PROXY_HOST`/`PROXY_PORT`, exposed deployments must opt into `CAMOFOX_ALLOW_PRIVATE_NETWORK=true` until proxy-side private-target validation exists.
|
|
470
|
+
|
|
471
|
+
### API Documentation
|
|
472
|
+
|
|
473
|
+
The Camofox Browser API includes OpenAPI 3.1.0 docs for a representative subset of the shipped route surface:
|
|
474
|
+
|
|
475
|
+
- **Interactive API Explorer**: [http://localhost:9377/api/docs](http://localhost:9377/api/docs) — Swagger UI with live request testing
|
|
476
|
+
- **OpenAPI Specification**: [http://localhost:9377/openapi.json](http://localhost:9377/openapi.json) — Machine-readable OpenAPI 3.1.0 spec
|
|
477
|
+
|
|
478
|
+
The OpenAPI spec covers a representative subset of core and OpenClaw endpoints, including request schemas, response shapes, authentication requirements, and validation rules.
|
|
479
|
+
|
|
429
480
|
### Core Endpoints
|
|
430
481
|
|
|
431
482
|
Note: For any endpoint that targets an existing tab (`/tabs/:tabId/...`), the server resolves `tabId` **within a `userId` scope**. If you omit `userId`, you will typically get `404 Tab not found`.
|
|
432
483
|
|
|
433
484
|
| Method | Endpoint | Description | Required | Auth |
|
|
434
485
|
|--------|----------|-------------|----------|------|
|
|
435
|
-
| POST | `/sessions/:userId/cookies` | Import cookies into a user session (Playwright cookie objects) | Path: `userId`; Body: `{ "cookies": Cookie[] }` | `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
486
|
+
| POST | `/sessions/:userId/cookies` | Import cookies into a user session (Playwright cookie objects) | Path: `userId`; Body: `{ "cookies": Cookie[] }` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
436
487
|
| GET | `/health` | Health check (also pre-launches the browser) | None | None |
|
|
437
488
|
| GET | `/presets` | List available geo presets (built-in + custom) | None | None |
|
|
438
|
-
| POST | `/tabs` | Create a new tab (supports `preset` + per-field overrides) | Body: `userId` + (`sessionKey` or `listItemId`) |
|
|
489
|
+
| POST | `/tabs` | Create a new tab (supports `preset` + per-field overrides) | Body: `userId` + (`sessionKey` or `listItemId`) | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
439
490
|
| GET | `/tabs?userId=...` | List all tabs for a user (OpenClaw-compatible response shape) | Query: `userId` | None |
|
|
440
|
-
| POST | `/tabs/:tabId/navigate` | Navigate to a URL, or expand a search `macro` + `query` | Body: `userId` + (`url` or `macro`) |
|
|
491
|
+
| POST | `/tabs/:tabId/navigate` | Navigate to a URL, or expand a search `macro` + `query` | Body: `userId` + (`url` or `macro`) | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
441
492
|
| GET | `/tabs/:tabId/snapshot?userId=...` | Accessibility snapshot annotated with `eN` element refs | Query: `userId` | None |
|
|
442
|
-
| POST | `/tabs/:tabId/wait` | Wait for page readiness (DOM + optional network idle) | Body: `userId` |
|
|
443
|
-
| POST | `/tabs/:tabId/click` | Click by `ref` (e.g. `e12`) or CSS `selector` | Body: `userId` + (`ref` or `selector`) |
|
|
444
|
-
| POST | `/tabs/:tabId/type` | Type into an element by `ref` or CSS `selector` | Body: `userId` + (`ref` or `selector`) + `text` |
|
|
445
|
-
| POST | `/tabs/:tabId/press` | Press a key (e.g. `Enter`, `Escape`) | Body: `userId` + `key` |
|
|
446
|
-
| POST | `/tabs/:tabId/scroll` | Scroll up/down by pixels | Body: `userId` |
|
|
447
|
-
| POST | `/tabs/:tabId/scroll-element` | Scroll specific element into view | Body: userId, ref/selector |
|
|
448
|
-
| POST | `/tabs/:tabId/back` | Go back | Body: `userId` |
|
|
449
|
-
| POST | `/tabs/:tabId/forward` | Go forward | Body: `userId` |
|
|
450
|
-
| POST | `/tabs/:tabId/refresh` | Refresh | Body: `userId` |
|
|
493
|
+
| POST | `/tabs/:tabId/wait` | Wait for page readiness (DOM + optional network idle) | Body: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
494
|
+
| POST | `/tabs/:tabId/click` | Click by `ref` (e.g. `e12`) or CSS `selector` | Body: `userId` + (`ref` or `selector`) | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
495
|
+
| POST | `/tabs/:tabId/type` | Type into an element by `ref` or CSS `selector` | Body: `userId` + (`ref` or `selector`) + `text` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
496
|
+
| POST | `/tabs/:tabId/press` | Press a key (e.g. `Enter`, `Escape`) | Body: `userId` + `key` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
497
|
+
| POST | `/tabs/:tabId/scroll` | Scroll up/down/left/right by pixels | Body: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
498
|
+
| POST | `/tabs/:tabId/scroll-element` | Scroll specific element into view | Body: userId, ref/selector | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
499
|
+
| POST | `/tabs/:tabId/back` | Go back | Body: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
500
|
+
| POST | `/tabs/:tabId/forward` | Go forward | Body: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
501
|
+
| POST | `/tabs/:tabId/refresh` | Refresh | Body: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
451
502
|
| GET | `/tabs/:tabId/links?userId=...&limit=50&offset=0` | Extract links (paginated) | Query: `userId` | None |
|
|
503
|
+
| GET | `/tabs/:tabId/images?userId=...` | List extracted images | Query: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
452
504
|
| GET | `/tabs/:tabId/screenshot?userId=...&fullPage=true` | Screenshot (PNG bytes) | Query: `userId` | None |
|
|
453
505
|
| GET | `/tabs/:tabId/stats?userId=...` | Tab stats + visited URLs | Query: `userId` | None |
|
|
454
|
-
| DELETE | `/tabs/:tabId` | Close a tab (expects JSON body: `{ "userId": "..." }`) | Body: `userId` |
|
|
455
|
-
| DELETE | `/tabs/group/:listItemId` | Close a tab group (expects JSON body: `{ "userId": "..." }`) | Body: `userId` |
|
|
456
|
-
| DELETE | `/sessions/:userId` | Close all sessions for a user | Path: `userId` |
|
|
506
|
+
| DELETE | `/tabs/:tabId` | Close a tab (expects JSON body: `{ "userId": "..." }`) | Body: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
507
|
+
| DELETE | `/tabs/group/:listItemId` | Close a tab group (expects JSON body: `{ "userId": "..." }`) | Body: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
508
|
+
| DELETE | `/sessions/:userId` | Close all sessions for a user | Path: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
509
|
+
| POST | `/sessions/:userId/toggle-display` | Toggle display mode (headless/headed/virtual) | Path: `userId`; Body: `{ "headless": true\|false\|"virtual" }` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
457
510
|
| GET | `/tabs/:tabId/cookies` | Export tab cookies | Query: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
458
511
|
| GET | `/tabs/:tabId/downloads` | List tab downloads | Query: `userId` | None |
|
|
459
512
|
| GET | `/users/:userId/downloads` | List user downloads | Path: `userId` | None |
|
|
460
513
|
| GET | `/downloads/:downloadId` | Download metadata | Query: `userId` | None |
|
|
461
514
|
| GET | `/downloads/:downloadId/content` | Stream download content | Query: `userId` | None |
|
|
462
|
-
| DELETE | `/downloads/:downloadId` | Delete tracked download | Body or Query: `userId` |
|
|
463
|
-
| POST | `/tabs/:tabId/extract-resources` | Extract downloadable resources | Body: `userId` |
|
|
464
|
-
| POST | `/tabs/:tabId/batch-download` | Batch download resources | Body: `userId` |
|
|
515
|
+
| DELETE | `/downloads/:downloadId` | Delete tracked download | Body or Query: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
516
|
+
| POST | `/tabs/:tabId/extract-resources` | Extract downloadable resources | Body: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
517
|
+
| POST | `/tabs/:tabId/batch-download` | Batch download resources | Body: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
465
518
|
| POST | `/tabs/:tabId/resolve-blobs` | Resolve blob URLs to base64 | Body: `userId` + `urls[]` | None |
|
|
466
519
|
| POST | `/tabs/:tabId/trace/start` | Start trace recording | Body: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
467
520
|
| POST | `/tabs/:tabId/trace/stop` | Stop and save trace ZIP | Body: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
468
521
|
| POST | `/tabs/:tabId/trace/chunk/start` | Start trace chunk | Body: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
469
522
|
| POST | `/tabs/:tabId/trace/chunk/stop` | Stop chunk and save ZIP | Body: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
470
523
|
| GET | `/tabs/:tabId/trace/status` | Check trace status | Query: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
524
|
+
| GET | `/sessions/:userId/traces` | List managed trace ZIPs for a user | Path: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
525
|
+
| GET | `/sessions/:userId/traces/:filename` | Download a managed trace ZIP | Path: `userId`, `filename` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
526
|
+
| DELETE | `/sessions/:userId/traces/:filename` | Delete a managed trace ZIP | Path: `userId`, `filename` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
471
527
|
| GET | `/tabs/:tabId/console` | Get console messages | Query: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
472
528
|
| GET | `/tabs/:tabId/errors` | Get uncaught JS errors | Query: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
473
529
|
| POST | `/tabs/:tabId/console/clear` | Clear console + errors | Body or Query: `userId` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
530
|
+
| POST | `/tabs/:tabId/extract-structured` | Extract deterministic JSON from a structured schema | Body: `userId` + `schema` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
474
531
|
|
|
475
532
|
### Toggle Display Mode
|
|
476
533
|
```bash
|
|
477
534
|
POST /sessions/:userId/toggle-display
|
|
478
535
|
{"headless": "virtual"}
|
|
479
536
|
```
|
|
537
|
+
**Auth:** Conditional — requires `Authorization: Bearer $CAMOFOX_API_KEY` when `CAMOFOX_API_KEY` is set.
|
|
480
538
|
Switch browser between headless and headed mode. When encountering CAPTCHAs or issues requiring visual interaction, switch to headed mode to show the browser window.
|
|
481
539
|
|
|
482
540
|
Returns:
|
|
@@ -538,12 +596,75 @@ OpenClaw-compatible aliases (used by the OpenClaw plugin).
|
|
|
538
596
|
| Method | Endpoint | Description | Required | Auth |
|
|
539
597
|
|--------|----------|-------------|----------|------|
|
|
540
598
|
| GET | `/` | Status (alias of `/health`) | None | None |
|
|
541
|
-
| POST | `/tabs/open` | Open tab (OpenClaw request/response shape) | Body: `userId` + `url` |
|
|
599
|
+
| POST | `/tabs/open` | Open tab (OpenClaw request/response shape) | Body: `userId` + `url` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
542
600
|
| POST | `/start` | Start browser engine | None | None |
|
|
543
601
|
| POST | `/stop` | Stop browser engine | None | `x-admin-key: $CAMOFOX_ADMIN_KEY` |
|
|
544
|
-
| POST | `/navigate` | Navigate (OpenClaw request shape: `targetId` in body) | Body: `userId` + `targetId` + `url` |
|
|
602
|
+
| POST | `/navigate` | Navigate (OpenClaw request shape: `targetId` in body) | Body: `userId` + `targetId` + `url` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
545
603
|
| GET | `/snapshot?userId=...&targetId=...` | Snapshot (OpenClaw response shape) | Query: `userId` + `targetId` | None |
|
|
546
|
-
| POST | `/act` | Combined actions (`click`, `type`, `press`, `scroll`, `scrollIntoView`, `hover`, `wait`, `close`) | Body: `userId` + `targetId` + `kind` |
|
|
604
|
+
| POST | `/act` | Combined actions (`click`, `type`, `press`, `scroll`, `scrollIntoView`, `hover`, `wait`, `close`, `extractStructured`) | Body: `userId` + `targetId` + `kind` | Conditional: `Authorization: Bearer $CAMOFOX_API_KEY` |
|
|
605
|
+
|
|
606
|
+
### Structured Extract
|
|
607
|
+
|
|
608
|
+
Structured extract returns deterministic JSON from a DOM schema without arbitrary JavaScript. Use it when you want stable data contracts instead of ad-hoc `evaluate()` calls.
|
|
609
|
+
|
|
610
|
+
Core API:
|
|
611
|
+
|
|
612
|
+
```bash
|
|
613
|
+
curl -X POST "$CAMOFOX_URL/tabs/$TAB_ID/extract-structured" \
|
|
614
|
+
-H 'Content-Type: application/json' \
|
|
615
|
+
-d '{
|
|
616
|
+
"userId": "agent1",
|
|
617
|
+
"schema": {
|
|
618
|
+
"kind": "object",
|
|
619
|
+
"fields": {
|
|
620
|
+
"title": { "kind": "text", "selector": "h1", "required": true, "trim": true },
|
|
621
|
+
"products": {
|
|
622
|
+
"kind": "list",
|
|
623
|
+
"selector": ".product",
|
|
624
|
+
"item": {
|
|
625
|
+
"kind": "object",
|
|
626
|
+
"fields": {
|
|
627
|
+
"name": { "kind": "text", "selector": ".name", "required": true, "trim": true },
|
|
628
|
+
"href": { "kind": "url", "selector": "a.product-link", "attr": "href", "required": true }
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
}'
|
|
635
|
+
```
|
|
636
|
+
|
|
637
|
+
CLI:
|
|
638
|
+
|
|
639
|
+
```bash
|
|
640
|
+
camofox extract-structured @schema.json <tabId> --user <userId> --format json
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
OpenClaw:
|
|
644
|
+
|
|
645
|
+
```bash
|
|
646
|
+
curl -X POST "$CAMOFOX_URL/act" \
|
|
647
|
+
-H 'Content-Type: application/json' \
|
|
648
|
+
-d '{
|
|
649
|
+
"kind": "extractStructured",
|
|
650
|
+
"targetId": "tab-123",
|
|
651
|
+
"userId": "agent1",
|
|
652
|
+
"schema": {
|
|
653
|
+
"kind": "object",
|
|
654
|
+
"fields": {
|
|
655
|
+
"title": { "kind": "text", "selector": "h1", "required": true }
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
}'
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
Notes:
|
|
662
|
+
|
|
663
|
+
- invalid schemas fail with HTTP 400
|
|
664
|
+
- required runtime misses fail the whole request with HTTP 422 and `fieldPath`
|
|
665
|
+
- optional scalar/object/list nodes normalize to `null` / `null` / `[]`
|
|
666
|
+
- selectors must be CSS; no XPath, arbitrary JavaScript, or AI extraction
|
|
667
|
+
- raw resource extraction and structured extraction stay separate on purpose
|
|
547
668
|
|
|
548
669
|
## Search Macros
|
|
549
670
|
|
|
@@ -591,6 +712,119 @@ curl -X POST http://localhost:9377/tabs \
|
|
|
591
712
|
|
|
592
713
|
Custom presets: set `CAMOFOX_PRESETS_FILE=/path/to/presets.json` (JSON object; keys become preset names).
|
|
593
714
|
|
|
715
|
+
## Session-Level Proxy and Geo Overrides
|
|
716
|
+
|
|
717
|
+
CamoFox supports session-level proxy and geolocation configuration with a hybrid model that combines server defaults with per-session overrides.
|
|
718
|
+
|
|
719
|
+
### Proxy Configuration Model
|
|
720
|
+
|
|
721
|
+
**Server-level baseline** (via environment variables):
|
|
722
|
+
- `PROXY_HOST`, `PROXY_PORT`, `PROXY_USERNAME`, `PROXY_PASSWORD` — applied as the default for all sessions
|
|
723
|
+
- Enables Camoufox geoip mode when configured
|
|
724
|
+
|
|
725
|
+
**Session-level overrides** (via `POST /tabs` or CLI):
|
|
726
|
+
- `proxyProfile` — select a named proxy profile from `CAMOFOX_PROXY_PROFILES_FILE`
|
|
727
|
+
- `proxy` — provide raw proxy fields (`host`, `port`, `username`, `password`) directly
|
|
728
|
+
- Session-level proxy overrides the server baseline for that specific `userId + sessionKey` combination
|
|
729
|
+
|
|
730
|
+
**Session identity rules**:
|
|
731
|
+
- The same `userId` may run different `sessionKey` profiles in parallel with different proxy/geo configurations
|
|
732
|
+
- The same `userId + sessionKey` combination maintains a stable proxy/geo identity — requests with conflicting proxy/geo fields are rejected
|
|
733
|
+
- Session reuse and cleanup scope proxy/geo identity by `userId + sessionKey`, not just `userId`
|
|
734
|
+
|
|
735
|
+
### Geo Mode Behavior
|
|
736
|
+
|
|
737
|
+
CamoFox offers two geo modes that control how explicit geo fields (locale, timezone, geolocation) interact with proxy-derived geo:
|
|
738
|
+
|
|
739
|
+
**`geoMode=explicit-wins`** (default):
|
|
740
|
+
- Explicit geo fields (locale, timezone, geolocation) remain authoritative
|
|
741
|
+
- Proxy-derived geo suggestions are ignored
|
|
742
|
+
- Use this mode when you want precise geo control regardless of proxy location
|
|
743
|
+
|
|
744
|
+
**`geoMode=proxy-locked`**:
|
|
745
|
+
- Explicit geo fields that conflict with proxy-derived geo are rejected
|
|
746
|
+
- Proxy-derived geo is authoritative
|
|
747
|
+
- Use this mode to ensure geo consistency with proxy exit location
|
|
748
|
+
|
|
749
|
+
### CLI Examples
|
|
750
|
+
|
|
751
|
+
Session-level proxy with named profile:
|
|
752
|
+
```bash
|
|
753
|
+
camofox open https://example.com --proxy-profile tokyo-exit --user agent1
|
|
754
|
+
```
|
|
755
|
+
|
|
756
|
+
Session-level proxy with raw fields:
|
|
757
|
+
```bash
|
|
758
|
+
camofox open https://example.com \
|
|
759
|
+
--proxy-host proxy.example.com \
|
|
760
|
+
--proxy-port 8080 \
|
|
761
|
+
--proxy-username user \
|
|
762
|
+
--proxy-password pass \
|
|
763
|
+
--user agent1
|
|
764
|
+
```
|
|
765
|
+
|
|
766
|
+
Combine proxy with geo mode:
|
|
767
|
+
```bash
|
|
768
|
+
camofox open https://example.com \
|
|
769
|
+
--proxy-profile london-exit \
|
|
770
|
+
--geo uk \
|
|
771
|
+
--geo-mode proxy-locked \
|
|
772
|
+
--user agent1
|
|
773
|
+
```
|
|
774
|
+
|
|
775
|
+
### API Examples
|
|
776
|
+
|
|
777
|
+
Using a named proxy profile with explicit geo:
|
|
778
|
+
```bash
|
|
779
|
+
curl -X POST http://localhost:9377/tabs \
|
|
780
|
+
-H 'Content-Type: application/json' \
|
|
781
|
+
-d '{
|
|
782
|
+
"userId": "agent1",
|
|
783
|
+
"sessionKey": "task1",
|
|
784
|
+
"url": "https://example.com",
|
|
785
|
+
"proxyProfile": "tokyo-exit",
|
|
786
|
+
"preset": "japan",
|
|
787
|
+
"geoMode": "explicit-wins"
|
|
788
|
+
}'
|
|
789
|
+
```
|
|
790
|
+
|
|
791
|
+
Using raw proxy fields with proxy-locked geo:
|
|
792
|
+
```bash
|
|
793
|
+
curl -X POST http://localhost:9377/tabs \
|
|
794
|
+
-H 'Content-Type: application/json' \
|
|
795
|
+
-d '{
|
|
796
|
+
"userId": "agent1",
|
|
797
|
+
"sessionKey": "task2",
|
|
798
|
+
"url": "https://example.com",
|
|
799
|
+
"proxy": {
|
|
800
|
+
"host": "proxy.example.com",
|
|
801
|
+
"port": 8080,
|
|
802
|
+
"username": "user",
|
|
803
|
+
"password": "pass"
|
|
804
|
+
},
|
|
805
|
+
"geoMode": "proxy-locked"
|
|
806
|
+
}'
|
|
807
|
+
```
|
|
808
|
+
|
|
809
|
+
### Named Proxy Profiles
|
|
810
|
+
|
|
811
|
+
Define proxy profiles in a JSON file and point `CAMOFOX_PROXY_PROFILES_FILE` to it:
|
|
812
|
+
|
|
813
|
+
```json
|
|
814
|
+
{
|
|
815
|
+
"tokyo-exit": {
|
|
816
|
+
"server": "http://tokyo.proxy.example.com:8080",
|
|
817
|
+
"username": "user",
|
|
818
|
+
"password": "pass"
|
|
819
|
+
},
|
|
820
|
+
"london-exit": {
|
|
821
|
+
"server": "http://london.proxy.example.com:8080"
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
```
|
|
825
|
+
|
|
826
|
+
Then use profiles by name in API requests or CLI commands.
|
|
827
|
+
|
|
594
828
|
## Environment Variables
|
|
595
829
|
|
|
596
830
|
| Variable | Default | Description |
|
|
@@ -598,8 +832,10 @@ Custom presets: set `CAMOFOX_PRESETS_FILE=/path/to/presets.json` (JSON object; k
|
|
|
598
832
|
| `CAMOFOX_PORT` | `9377` | Server port |
|
|
599
833
|
| `PORT` | (optional) | Alternative port env var (common in PaaS) |
|
|
600
834
|
| `NODE_ENV` | `development` | Node environment |
|
|
835
|
+
| `CAMOFOX_HOST` | `127.0.0.1` | Server bind host. Set `0.0.0.0` for Docker/PaaS/network exposure. Non-loopback binds require `CAMOFOX_API_KEY`. |
|
|
601
836
|
| `CAMOFOX_ADMIN_KEY` | (empty) | Required for `POST /stop` (sent via `x-admin-key`) |
|
|
602
|
-
| `CAMOFOX_API_KEY` | (empty) |
|
|
837
|
+
| `CAMOFOX_API_KEY` | (empty) | Guards protected endpoints (tab creation, navigation, interaction, session management, downloads, image extraction, tracing, console) via `Authorization: Bearer` header when set. Required whenever `CAMOFOX_HOST` exposes the server beyond loopback. |
|
|
838
|
+
| `CAMOFOX_ALLOW_PRIVATE_NETWORK` | `true` on loopback binds, `false` otherwise | Allows navigation to loopback/private/link-local/metadata targets. Leave unset for the safe default; enable only for trusted deployments that intentionally need internal-network reachability. |
|
|
603
839
|
| `CAMOFOX_HEADLESS` | `true` | Display mode: `true` (headless), `false` (headed), `virtual` (Xvfb) |
|
|
604
840
|
| `CAMOFOX_VNC_RESOLUTION` | `1920x1080x24` | Virtual Xvfb display resolution (`WIDTHxHEIGHTxDEPTH`) |
|
|
605
841
|
| `CAMOFOX_VNC_TIMEOUT_MS` | `120000` | Max VNC session duration in ms before auto-stop |
|
|
@@ -613,28 +849,63 @@ Custom presets: set `CAMOFOX_PRESETS_FILE=/path/to/presets.json` (JSON object; k
|
|
|
613
849
|
| `CAMOFOX_MAX_BATCH_CONCURRENCY` | `5` | Batch download concurrency cap |
|
|
614
850
|
| `CAMOFOX_MAX_BLOB_SIZE_MB` | `5` | Max blob payload size |
|
|
615
851
|
| `CAMOFOX_MAX_DOWNLOADS_PER_USER` | `500` | Per-user download record cap |
|
|
852
|
+
| `CAMOFOX_CONSOLE_BUFFER_SIZE` | `1000` | Per-tab console/error message buffer size (minimum `100`) |
|
|
616
853
|
| `HANDLER_TIMEOUT_MS` | `30000` | Handler timeout fallback |
|
|
617
854
|
| `MAX_CONCURRENT_PER_USER` | `3` | Concurrent operations per user |
|
|
618
855
|
| `CAMOFOX_VNC_BASE_PORT` | `6080` | noVNC/websockify base port |
|
|
619
856
|
| `CAMOFOX_VNC_HOST` | `localhost` | noVNC host in returned URL |
|
|
620
857
|
| `CAMOFOX_CLI_USER` | `cli-default` | Default CLI user id |
|
|
621
|
-
| `
|
|
858
|
+
| `CAMOFOX_SERVER_PID_FILE` | (unset) | Optional daemon PID file path used by the CLI server manager |
|
|
859
|
+
| `CAMOFOX_IDLE_TIMEOUT_MS` | `1800000` | Stage 1 idle cleanup threshold (ms) |
|
|
860
|
+
| `CAMOFOX_IDLE_EXIT_TIMEOUT_MS` | `1800000` | Stage 2 daemon exit quiet window (ms, defaults to match Stage 1) |
|
|
622
861
|
| `CAMOFOX_PRESETS_FILE` | (unset) | Optional JSON file defining/overriding geo presets |
|
|
862
|
+
| `CAMOFOX_PROXY_PROFILES_FILE` | (unset) | Optional JSON file defining named proxy profiles for session-level overrides |
|
|
623
863
|
| `CAMOFOX_SESSION_TIMEOUT` | `1800000` | Session idle timeout in ms (min `60000`) |
|
|
624
864
|
| `CAMOFOX_MAX_SESSIONS` | `50` | Maximum concurrent sessions |
|
|
625
865
|
| `CAMOFOX_MAX_TABS` | `10` | Maximum tabs per session |
|
|
626
|
-
| `PROXY_HOST` | (empty) | Proxy host (enables proxy routing) |
|
|
627
|
-
| `PROXY_PORT` | (empty) | Proxy port |
|
|
628
|
-
| `PROXY_USERNAME` | (empty) | Proxy username |
|
|
629
|
-
| `PROXY_PASSWORD` | (empty) | Proxy password |
|
|
866
|
+
| `PROXY_HOST` | (empty) | Proxy host (server-level default; enables proxy routing) |
|
|
867
|
+
| `PROXY_PORT` | (empty) | Proxy port (server-level default) |
|
|
868
|
+
| `PROXY_USERNAME` | (empty) | Proxy username (server-level default) |
|
|
869
|
+
| `PROXY_PASSWORD` | (empty) | Proxy password (server-level default) |
|
|
630
870
|
| `CAMOFOX_MAX_SNAPSHOT_CHARS` | `80000` | Max characters in snapshot before truncation |
|
|
871
|
+
| `CAMOFOX_MAX_SNAPSHOT_NODES` | `2000` | Max accessibility snapshot nodes before truncation |
|
|
631
872
|
| `CAMOFOX_SNAPSHOT_TAIL_CHARS` | `5000` | Characters preserved at end of truncated snapshot |
|
|
632
873
|
| `CAMOFOX_BUILDREFS_TIMEOUT_MS` | `12000` | Timeout for building element refs |
|
|
633
874
|
| `CAMOFOX_TAB_LOCK_TIMEOUT_MS` | `30000` | Timeout for acquiring tab lock |
|
|
875
|
+
| `CAMOFOX_TRACES_DIR` | `~/.camofox/traces` | Managed Playwright trace artifact directory |
|
|
876
|
+
| `CAMOFOX_TRACE_MAX_DURATION_MS` | `300000` | Maximum trace recording duration before automatic stop |
|
|
634
877
|
| `CAMOFOX_HEALTH_PROBE_INTERVAL_MS` | `60000` | Health probe check interval |
|
|
635
878
|
| `CAMOFOX_FAILURE_THRESHOLD` | `3` | Consecutive failures before health degradation |
|
|
636
879
|
| `CAMOFOX_YT_DLP_TIMEOUT_MS` | `30000` | Timeout for yt-dlp subtitle extraction |
|
|
637
880
|
| `CAMOFOX_YT_BROWSER_TIMEOUT_MS` | `25000` | Timeout for browser transcript fallback |
|
|
881
|
+
| `CAMOFOX_OS` | (unset) | Optional server-wide Camoufox OS override (`windows`, `macos`, `linux`, or comma-separated list for randomization) |
|
|
882
|
+
| `CAMOFOX_ALLOW_WEBGL` | (unset) | Optional server-wide WebGL override; malformed values fail startup |
|
|
883
|
+
| `CAMOFOX_SCREEN_WIDTH` | (unset) | Optional screen width override; applied only with `CAMOFOX_SCREEN_HEIGHT` |
|
|
884
|
+
| `CAMOFOX_SCREEN_HEIGHT` | (unset) | Optional screen height override; applied only with `CAMOFOX_SCREEN_WIDTH` |
|
|
885
|
+
| `CAMOFOX_HUMANIZE` | (unset) | Optional server-wide humanization override |
|
|
886
|
+
|
|
887
|
+
> `CAMOFOX_OS` and `CAMOFOX_SCREEN_*` are **generation-time** controls: they affect only newly generated fingerprints and have no effect while an existing `fingerprint.json` sidecar is in use. Reset the profile or delete `fingerprint.json` to force regeneration under the new defaults. `CAMOFOX_ALLOW_WEBGL` and `CAMOFOX_HUMANIZE` are **launch-time** overrides and apply on every browser launch regardless of whether a sidecar is reused.
|
|
888
|
+
|
|
889
|
+
### Idle Lifecycle Policy
|
|
890
|
+
|
|
891
|
+
CamoFox implements a two-stage idle lifecycle for graceful cleanup and daemon exit:
|
|
892
|
+
|
|
893
|
+
**Stage 1 — Idle Cleanup**
|
|
894
|
+
- After `CAMOFOX_IDLE_TIMEOUT_MS` of idle time (default: 30 minutes), the server runs cleanup to close idle sessions and tabs
|
|
895
|
+
- Cleanup is delayed if browser contexts are launching or sessions are being created
|
|
896
|
+
- New interactive activity (tab creation, navigation, interaction) cancels any pending cleanup
|
|
897
|
+
|
|
898
|
+
**Stage 2 — Daemon Exit**
|
|
899
|
+
- After Stage 1 cleanup completes, the server waits for `CAMOFOX_IDLE_EXIT_TIMEOUT_MS` (default: matches Stage 1 timeout)
|
|
900
|
+
- If no new activity occurs during this quiet window, the daemon process exits gracefully
|
|
901
|
+
- Any new request activity cancels the pending exit timer
|
|
902
|
+
|
|
903
|
+
**Activity detection**:
|
|
904
|
+
- Live tabs, launching browser contexts, or staged session creation count as active work and prevent cleanup
|
|
905
|
+
- Empty sessions (sessions with no tabs) do not block cleanup but do disarm pending daemon exit
|
|
906
|
+
- New interactive activity resets both cleanup and exit timers
|
|
907
|
+
|
|
908
|
+
This two-stage model ensures cleanup runs before daemon exit, preventing resource leaks while allowing the server to shut down cleanly when fully idle.
|
|
638
909
|
|
|
639
910
|
## Deployment
|
|
640
911
|
|
|
@@ -644,7 +915,9 @@ Custom presets: set `CAMOFOX_PRESETS_FILE=/path/to/presets.json` (JSON object; k
|
|
|
644
915
|
docker build -t camofox-browser .
|
|
645
916
|
docker run -p 9377:9377 -p 6080:6080 \
|
|
646
917
|
-v ~/.camofox:/home/node/.camofox \
|
|
918
|
+
-e CAMOFOX_HOST=0.0.0.0 \
|
|
647
919
|
-e CAMOFOX_PORT=9377 \
|
|
920
|
+
-e CAMOFOX_API_KEY=change-me \
|
|
648
921
|
camofox-browser
|
|
649
922
|
```
|
|
650
923
|
|
|
@@ -660,6 +933,8 @@ fly deploy
|
|
|
660
933
|
### Railway
|
|
661
934
|
|
|
662
935
|
- Create a new project → deploy from this GitHub repo
|
|
936
|
+
- Set `CAMOFOX_HOST=0.0.0.0`
|
|
937
|
+
- Set `CAMOFOX_API_KEY` to a strong secret
|
|
663
938
|
- Set `CAMOFOX_PORT=9377` (Railway will also provide `PORT`, which is supported)
|
|
664
939
|
- Ensure the service exposes port `9377`
|
|
665
940
|
|
|
@@ -667,6 +942,8 @@ fly deploy
|
|
|
667
942
|
|
|
668
943
|
- Create a new Web Service → deploy from this GitHub repo
|
|
669
944
|
- Use Docker (recommended) and expose port `9377`
|
|
945
|
+
- Set `CAMOFOX_HOST=0.0.0.0`
|
|
946
|
+
- Set `CAMOFOX_API_KEY` to a strong secret
|
|
670
947
|
- Set `CAMOFOX_PORT=9377` (or rely on Render `PORT`)
|
|
671
948
|
|
|
672
949
|
### System Requirements
|
|
@@ -747,4 +1024,3 @@ This project is based on [camofox-browser](https://github.com/jo-inc/camofox-bro
|
|
|
747
1024
|
## Crypto Scam Warning
|
|
748
1025
|
|
|
749
1026
|
Sketchy people are doing sketchy things with crypto tokens named "Camofox" now that this project is getting attention. **Camofox is not a crypto project and will never be one.** Any token, coin, or NFT using the Camofox name has nothing to do with us.
|
|
750
|
-
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/content.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/content.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAkF3C,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAoTnF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.registerContentCommands = registerContentCommands;
|
|
4
|
+
const node_fs_1 = require("node:fs");
|
|
4
5
|
const command_helpers_1 = require("../utils/command-helpers");
|
|
5
6
|
const session_resolver_1 = require("../utils/session-resolver");
|
|
6
7
|
const http_1 = require("../transport/http");
|
|
@@ -53,7 +54,43 @@ function toSearchUrl(engine, query) {
|
|
|
53
54
|
return `https://www.google.com/search?q=${encoded}`;
|
|
54
55
|
}
|
|
55
56
|
}
|
|
57
|
+
function parseStructuredSchemaArg(input) {
|
|
58
|
+
let raw = input;
|
|
59
|
+
if (input.startsWith('@')) {
|
|
60
|
+
try {
|
|
61
|
+
raw = (0, node_fs_1.readFileSync)(input.slice(1), 'utf8');
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
throw new Error(`Cannot load structured schema from file: ${error instanceof Error ? error.message : String(error)}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
return JSON.parse(raw);
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
throw new Error(`Invalid structured schema JSON: ${error instanceof Error ? error.message : String(error)}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
56
74
|
function registerContentCommands(program, context) {
|
|
75
|
+
program
|
|
76
|
+
.command('extract-structured')
|
|
77
|
+
.argument('<schemaOrFile>', 'JSON schema string or @path/to/schema.json')
|
|
78
|
+
.argument('[tabId]', 'tab id (defaults to active tab)')
|
|
79
|
+
.option('--user <user>', 'user id')
|
|
80
|
+
.action(async (schemaOrFile, tabIdArg, options, command) => {
|
|
81
|
+
try {
|
|
82
|
+
const userId = (0, command_helpers_1.resolveCommandUser)({ command, user: options.user });
|
|
83
|
+
const tabId = (0, command_helpers_1.requireTabId)((0, session_resolver_1.resolveTabId)({ tabId: tabIdArg }), options);
|
|
84
|
+
const schema = parseStructuredSchemaArg(schemaOrFile);
|
|
85
|
+
const response = await context
|
|
86
|
+
.getTransport()
|
|
87
|
+
.post(`/tabs/${encodeURIComponent(tabId)}/extract-structured`, { userId, schema });
|
|
88
|
+
context.print(command, response.data);
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
context.handleError(error);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
57
94
|
program
|
|
58
95
|
.command('get-text')
|
|
59
96
|
.argument('[tabId]', 'tab id (defaults to active tab)')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../../../src/cli/commands/content.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../../../src/cli/commands/content.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAW3C,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAW3C,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAiJhF"}
|