ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

camofox-browser 存储状态导出 API 完整指南:GET/DELETE storage_state 详解

camofox-browser 存储状态导出 API 完整指南:GET/DELETE storage_state 详解 camofox-browser 存储状态导出 API 完整指南GET/DELETE storage_state 详解【免费下载链接】camofox-browserStealth headless browser for AI agents — bypass Cloudflare, bot detection, and anti-scraping. Drop-in Puppeteer/Playwright replacement.项目地址: https://gitcode.com/GitHub_Trending/ca/camofox-browsercamofox-browser 是一个专为 AI 智能体打造的隐身无头浏览器服务器基于 Camoufox 在 C 层面伪造浏览器指纹可绕过 Cloudflare 和各类机器人检测。本文详解它的存储状态storage_state导出 APIGET /sessions/:userId/storage_state可一键导出浏览器的 Cookie 与 localStorageDELETE /sessions/:userId/storage_state则能彻底重置会话让你把登录一次的成果安全地交给 AI 智能体反复复用。为什么 AI 智能体需要存储状态导出AI 智能体在真实网页上工作时几乎不可避免地要面对登录页、验证码和 OAuth 弹窗。Playwright 的无头模式很容易被指纹识别拦截而手动登录一次后再反复登录既耗时又脆弱。camofox-browser 的解法是把浏览器的全部存储状态——Cookie localStorage可选 IndexedDB——序列化成标准的 PlaywrightstorageStateJSON登录一次永久复用通过 VNC 可视化登录或导入 Cookie 后状态自动落盘浏览器重启后自动恢复跨服务共享导出的 JSON 可直接喂给任何 Playwright 脚本无需再与 camofox 绑定干净重置一条 DELETE 请求即可清空会话下一个智能体从全新状态开始 storage_state 是 Playwright 生态的标准格式不是 camofox 私有协议因此导出物具有完全的互操作性。导出存储状态GET /sessions/:userId/storage_state该端点由 VNC 插件 提供实现位于 plugins/vnc/index.js会导出该用户当前活跃浏览器上下文的完整存储状态。调用方式curl http://localhost:9377/sessions/my-agent/storage_state \ -H Authorization: Bearer YOUR_CAMOFOX_API_KEY \ -o storage_state.json响应结构返回标准 Playwright storageState 对象{ cookies: [ { name: session_id, value: abc123, domain: .example.com, path: /, expires: 1700000000, httpOnly: true, secure: true, sameSite: Lax } ], origins: [ { origin: https://example.com, localStorage: [ { name: theme, value: dark } ] } ] }错误码速查状态码含义排查建议404该 userId 没有活跃会话先POST /tabs创建标签页403缺少或无效的 API Key设置CAMOFOX_API_KEY并携带 Bearer Token500上下文已失效或导出失败检查会话健康状态后重试重置会话存储DELETE /sessions/:userId/storage_state该端点由 持久化插件 提供实现位于 plugins/persistence/index.js行为比想象中更温柔——它按三步安全清理关闭活跃上下文且不做检查点写入避免旧状态复活等待正在进行的写盘完成防止竞态删除磁盘上已持久化的 storage_state.jsoncurl -X DELETE http://localhost:9377/sessions/my-agent/storage_state \ -H Authorization: Bearer YOUR_CAMOFOX_API_KEY响应示例{ ok: true, userId: my-agent, clearedLive: true, removedPersisted: true }两个值得注意的细节幂等即使没有活跃会话、没有持久化文件也返回成功可以放心重试并发保护同一用户重复触发重置时返回409reset already in progress防止双写竞争典型工作流VNC 可视化登录 → 智能体复用这是 GET 端点最经典的场景完整流程见 plugins/vnc/README.md 的 Workflow 章节创建会话 → 打开登录页 → 通过 noVNC (http://localhost:6080/vnc.html) 人工登录 → GET /storage_state 导出 → persistence 插件自动落盘 → 智能体长期免登录启用方式只需在 camofox.config.json 中开启两个插件{ plugins: { vnc: { enabled: true }, persistence: { enabled: true, profileDir: /data/profiles } } }两者配合时的妙处在于GET 导出会触发session:storage:export事件persistence 插件会直接复用这份内存中的快照写盘见 plugins/persistence/index.js浏览器只被序列化一次导出的内容与落盘的内容保证一致。鉴权与存储细节关注点说明鉴权GET/DELETE 均需CAMOFOX_API_KEY对应的 Bearer Token非回环地址访问时强制存储路径~/.camofox/profiles/SHA256(userId)/storage_state.jsonuserId 哈希化防路径穿越写盘方式原子 tmp 写入 rename崩溃也不会产生半截文件IndexedDB默认不采集在 persistence 配置中设indexedDB: true可捕获快照会明显变大目录覆盖环境变量CAMOFOX_PROFILE_DIR优先级最高常见问题Q导出的是实时状态还是磁盘状态AGET 导出的是活跃会话的实时内存状态若会话已关闭会返回404。磁盘上的快照在会话关闭/关闭服务器时自动刷新。QDELETE 和DELETE /sessions/:userId有什么区别A后者只关闭标签页和会话DELETE storage_state 额外删除持久化文件且关闭时跳过检查点确保下一个会话从零开始。Q导出的 JSON 能直接给 Playwright 用吗A可以。它完全符合 PlaywrightstorageState格式browser.newContext({ storageState: storage_state.json })即可恢复同样的登录态。相关资料完整 REST API 表README.md自动生成的 OpenAPI 规范docs/openapi.json持久化插件设计说明plugins/persistence/AGENTS.mdVNC 插件设计与安全建议plugins/vnc/AGENTS.md服务端入口server.js【免费下载链接】camofox-browserStealth headless browser for AI agents — bypass Cloudflare, bot detection, and anti-scraping. Drop-in Puppeteer/Playwright replacement.项目地址: https://gitcode.com/GitHub_Trending/ca/camofox-browser创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表