开发与工程 browser-automationcamoufoxplaywrightpuppeteercloudflare-bypassweb-scrapingdocker

Camofox Browser

面向智能体的反检测浏览器 REST 服务,提供可引用的页面操作与会话隔离。

FollowAgents 评估 · FARS-2.1
不推荐
52/ 100 五分制 2.6 / 5
1 2 3 4 5 6
按维度查看评分与理由
1信任安全10 / 29 · 1.7/5

证据显示:API密钥用于cookie导入,但其他端点未强制认证;cookie导入默认禁用,需显式设置密钥;数据流透明性较好,有日志和遥测说明;敏感数据处理有匿名化措施;依赖有安全审计(CI中npm audit);外部影响包括自动创建GitHub Issue,但可禁用;无回滚机制;来源归属有作者和仓库信息。扣分:权限最小化不足(API密钥仅保护部分端点),用户确认缺失(自动遥测默认开启),回滚缺失,来源归属仅基于自述。

2可靠稳定8 / 14 · 2.9/5

证据显示:自述与package.json一致,功能描述与代码结构相符;依赖版本固定(camoufox-js 0.11.5),但未提供依赖可用性保证;失败消息有结构化错误码(如navigation_race)。扣分:依赖可用性未验证,失败消息覆盖不全。

3适用触发12 / 18 · 3.3/5

证据显示:明确面向AI代理,提供多种部署方式(Docker、Fly.io、Railway);能力边界清晰(列出功能列表);触发精度高(API端点明确);环境适配好(支持多种平台)。扣分:无重大缺陷,但未提供详细场景示例。

4规范维护10 / 18 · 2.8/5

证据显示:信息架构清晰(README有目录);安装说明详细(npm、Docker、源码);命名稳定(版本号明确);有示例和FAQ(README中有使用示例);已知限制提及较少;MIT许可证明确;版本号存在但无changelog;维护责任有作者信息但未明确。扣分:已知限制不足,无changelog,维护责任不明确。

5有效结果9 / 13 · 3.5/5

证据显示:输出可用性高(提供API和插件);边际价值高(解决反检测需求);成本效益合理(轻量级)。扣分:无重大缺陷,但未提供性能基准。

6证据核验3 / 8 · 1.9/5

证据显示:部分声明可追溯(如遥测端点可验证);跨来源佐证有限(仅自述);事实与推断分离不明确。扣分:缺乏独立验证,声明多为自述。

证据充分度: 评估于 2026年8月9日 审查版本 af3a2505fc38
上游仓库在本次评估后已有新提交;当前评分仍对应所示审查版本,可能尚未覆盖最新改动。
源码中未见的安全控制:执行前用户确认、回滚或恢复路径
使用前请注意
  • API密钥仅保护cookie导入端点,其他端点可能未认证,存在未授权访问风险。
  • 遥测默认开启,自动创建GitHub Issue,可能泄露匿名化后的站点信息,需确认隐私政策。
  • 依赖camoufox-js和playwright-core,需关注其安全更新。
查看完整评分方法 →

这个 Agent 能做什么,适合哪些场景?

Camofox Browser 是一个运行在 Node.js 上的自托管浏览器服务器,以 Camoufox 的 Firefox 引擎为基础,并通过 REST API 供自动化客户端调用。它把页面转为带 e1、e2 等稳定元素引用的无障碍快照,而非直接返回大量 HTML,并提供点击、输入、导航、滚动、截图与下载读取等接口。每位用户使用独立 BrowserContext,项目可持久化 cookies 和 localStorage,并可按 sessionKey 组织标签页。服务按需启动浏览器、在空闲时关闭,支持 Docker、Railway 和 Fly.io 等部署路径。它还包含代理与 GeoIP 配置、Netscape 格式 Cookie 导入、可选 VNC 登录、会话 Trace、YouTube 字幕提取及匿名化故障遥测。

客户端通过 POST /tabs 创建带 userId、sessionKey 和 URL 的标签页;服务启动 Camoufox,并在该用户的 BrowserContext 中打开页面。随后可调用 GET /tabs/:id/snapshot 获取带元素 ref 的无障碍快照,可选 includeScreenshot=true 返回 base64 PNG;POST /tabs/:id/click、/type、/press、/scroll、/navigate 分别执行交互,navigate 可使用 @google_search、@reddit_search 等宏。GET /tabs/:id/links、/images、/downloads 和 /screenshot 分别提取链接、img 信息、已捕获下载和截图;POST /tabs/:tabId/extract 支持以 JSON Schema 和 x-ref 做结构化提取。它可通过 POST /sessions/:userId/cookies 注入 Playwright cookie 对象,使用 GET /sessions/:userId/storage_state 导出存储状态,并在首个标签创建时传入 trace:true 来生成 Playwright trace zip。POST /youtube/transcript 优先调用 yt-dlp 提取字幕,缺少 yt-dlp 时回退到浏览器拦截方式。

  1. 正在构建网页研究助手的开发者,需要让后端服务创建标签页、读取无障碍快照,并按 e1 这类引用完成点击和输入。
  2. 运行多用户自动化任务的团队,需要让不同 userId 的 cookies、localStorage 和标签页互相隔离,并在重启后恢复会话。
  3. 需要通过住宅代理访问地区相关网页的采集系统,可配置 PROXY_HOST 或 backconnect 代理,并让 Camoufox 根据出口 IP 设置语言、时区和地理位置。
  4. 需要复用人工登录状态的运营人员,可先通过 VNC 完成站点登录,或导入 Netscape 格式 cookie 文件供后续会话使用。
  5. 需要排查浏览器任务失败的工程团队,可对指定会话开启 Playwright trace,并通过 trace zip 查看截图、DOM 快照、网络请求和控制台输出。
  6. 需要获得 YouTube 视频字幕的自动化流程,可向 /youtube/transcript 提交视频 URL,并在本机安装 yt-dlp 以走更快的提取路径。

这个 Agent 有哪些优点和局限?

优点
  • 以 Camoufox 为底层引擎;项目说明其指纹修改发生在 Firefox 的 C++ 实现层,而不是依赖 JavaScript shim 或 stealth wrapper。
  • 无障碍快照配合稳定元素 ref,适合以 API 驱动的浏览器循环;快照还支持分页和可选截图。
  • 会话以 BrowserContext 隔离,支持 Cookie 导入、持久化存储状态、每会话 Trace,以及按 sessionKey 分组标签页。
  • 部署选择较完整:可从 npm 或源码启动,也提供 Docker、Railway、Fly.io 与 Windows PowerShell 流程。
  • 代理配置可配合 Camoufox GeoIP,使 locale、timezone 和 geolocation 与代理出口匹配。
局限
  • 首次安装需要下载约 300MB 的 Camoufox;使用外部二进制时必须提供包含 properties.json、version.json 与 fontconfig 的 Camoufox bundle。
  • Cookie 导入默认关闭,必须设置 CAMOFOX_API_KEY;若服务对外暴露,项目建议额外配置 CAMOFOX_ACCESS_KEY。
  • YouTube 字幕的快速路径依赖额外安装 yt-dlp;未安装时会使用较慢且较不可靠的浏览器回退方案。
  • 会话和标签页存在默认上限与超时,例如 MAX_SESSIONS 默认为 50、MAX_TABS_PER_SESSION 默认为 10、会话空闲 30 分钟后过期。
  • 默认开启匿名化崩溃与卡顿遥测;不需要时必须显式设置 CAMOFOX_CRASH_REPORT_ENABLED=false。

如何安装或部署这个 Agent?

独立运行:

git clone https://github.com/jo-inc/camofox-browser && cd camofox-browser
npm install
npm start

服务默认监听 http://localhost:9377;首次运行会下载约 300MB 的 Camoufox。也可直接运行:

npx @askjo/camofox-browser

Docker 部署请使用项目提供的流程:

make up

如需导入 Cookie,先生成并设置密钥:

export CAMOFOX_API_KEY="your-generated-key"
npm start

如需更快的 YouTube 字幕提取,在本地额外安装:

pip install yt-dlp

如何使用这个 Agent?

创建第一个标签页:

curl -X POST http://localhost:9377/tabs \
-H 'Content-Type: application/json' \
-d '{"userId":"agent1","sessionKey":"task1","url":"https://example.com"}'

使用响应中的 TAB_ID 获取快照:

curl "http://localhost:9377/tabs/TAB_ID/snapshot?userId=agent1"

按快照中的元素引用点击:

curl -X POST http://localhost:9377/tabs/TAB_ID/click \
-H 'Content-Type: application/json' \
-d '{"userId":"agent1","ref":"e1"}'

若将服务暴露到非本地网络,可设置 CAMOFOX_ACCESS_KEY,并在请求中发送 Authorization: Bearer <key>。

这个 Agent 与同类方案有什么区别?

项目将自身定位为 Playwright/Puppeteer 的替代式浏览器服务:Playwright 或 headless Chrome 的常规使用可能被指纹识别,而该服务改用 Camoufox 的 Firefox 引擎,并通过 REST API、无障碍快照和元素 ref 暴露自动化能力。它不是 Playwright 的普通库内替换,而是需要调用其 HTTP 接口的独立服务器。

常见问题

是否必须使用 OpenClaw?
不必须。项目提供 OpenClaw 插件安装命令,但也明确提供 npx、源码和 REST API 的独立运行方式。
Cookie 导入如何受保护?
POST /sessions/:userId/cookies 只有在设置 CAMOFOX_API_KEY 后才启用;项目还说明 cookie 文件限于配置目录、会阻止路径穿越,并限制单次最多 500 个 cookie 与 5MB 文件。
能否在远程服务器上运行?
可以使用 Docker、Railway 或 Fly.io 路径。服务默认可绑定所有接口;部署到非本地网络时,应配置 CAMOFOX_ACCESS_KEY 保护路由。
浏览器失败后如何诊断?
在创建会话的第一个标签时传 trace:true,关闭会话后即可列出和下载 Playwright trace zip;其中包含截图、DOM 快照、网络与控制台信息。

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents