📌 项目地址:jo-inc/camofox-browser | ⭐ 9,503 颗星 | 🔧 JavaScript | 📜 未标注
项目地址:jo-inc/camofox-browser | 9,503 星 | JavaScript
问题在哪
Agent 要访问真实网页,路由基本都走不通。Playwright 被拦,Headless Chrome 被指纹识别,stealth 插件自己反而成了新的指纹特征——检测方已经学会识别那些伪装层了。
camofox-browser 的底层是 Camoufox,一个 Firefox 分支。它在 C++ 实现层修改 navigator.hardwareConcurrency、WebGL 渲染器、AudioContext、屏幕几何参数、WebRTC。伪装在 JavaScript 执行之前就完成了,没有 shim,没有 wrapper,也就没有可被检测的痕迹。README 的说法是:能绕过 Google、Cloudflare 和大多数 bot 检测。
项目本身是对这个引擎的一层 REST API 封装,服务的对象是 Agent,不是写爬虫脚本的人。
跑起来
git clone https://github.com/jo-inc/camofox-browser && cd camofox-browser
npm install && npm start
# -> http://localhost:9377
启动后 /docs 有交互式文档,/openapi.json 是自动生成的 OpenAPI 规范。
真正值钱的设计
我觉得这个项目对 Agent 开发者最有用的地方有两个,一个省 token,一个解决登录。
省 token。 它返回给 LLM 的不是原始 HTML,而是 accessibility snapshot(无障碍树快照),体积比原始 HTML 小约 90%。按 token 计费的模型,这一项直接决定跑一个页面的成本。配套的元素引用机制给页面元素分配稳定的 e1、e2、e3 标识符,Agent 点击、填表时直接引用编号,不会因为 HTML 结构变化而失效。大页面还有自动截断加 offset 分页,不会撑爆上下文窗口。
解决登录。 反检测过了,登录时的验证码还是拦路虎。项目提供了 VNC 交互式登录:通过 noVNC 在浏览器里人工登录一次,然后导出 storage state 给 Agent 复用。也支持直接导入 Netscape 格式的 cookie 文件进入已登录状态。两条路都通。
其他能力列一下:
- 搜索宏:
@google_search、@youtube_search、@amazon_search、@reddit_subreddit等 15 个左右常见站点 - 结构化提取:
POST /tabs/:tabId/extract接受 JSON Schema,返回符合 schema 的数据 - YouTube 字幕:通过 yt-dlp 抓取,不需要 API key
- 代理 + GeoIP:走住宅代理时自动匹配对应的 locale 和时区
- Session 隔离:每个用户独立的 cookies 和 storage
- 文件上传(从配置目录取文件,不弹系统对话框)、下载捕获、DOM 图片提取、快照附带 base64 截图
部署成本
浏览器懒启动,空闲自动关闭,空闲时内存约 40MB。这个数字意味着它可以和你的其他服务共享一台机器——README 提到的部署环境包括树莓派、5 美元的 VPS。Docker、Fly.io、Railway 都支持。
日志是 JSON 格式,每行带请求 ID,生产环境排查问题够用。
和 Playwright 方案的区别
| 维度 | Playwright + stealth 插件 | camofox-browser |
|---|---|---|
| 指纹伪装层级 | JS 层注入,可被检测 | C++ 层,JS 执行前完成 |
| 返回给 LLM 的内容 | 原始 HTML | accessibility snapshot,小约 90% |
| 元素定位 | CSS 选择器,易碎 | 稳定的 e1/e2/e3 引用 |
| 定位 | 通用浏览器自动化 | Agent 服务化 |
如果你只是写传统爬虫,Playwright 顺手。但消费方是 LLM 时,快照、元素引用、extract schema 这套 API 设计明显更贴合。
两个提醒
一是合规。绕过 Cloudflare 这类防护属于反爬博弈的灰色地带,用之前看清楚目标站点的服务条款和当地法律。
二是项目背景。它是 jo 团队的产品衍生——jo 是一个个人 AI Agent,一半跑在用户的 Mac 上,一半跑在专属云机器上。这个浏览器服务是他们自用需求抽出来的,工程上的取舍(低内存、token 效率、登录流程)都来自真实 Agent 场景,不是拍脑袋加的功能。