Camofox Browser
Camofox 入门:创建测试标签、读取快照并核验结果
以明确身份、认证和快照检查完成最小本地 REST 工作流,再考虑操作页面或导入凭据。
你将学会
- userId 与 sessionKey 标识状态,不提供授权。
- 操作前检查 URL、快照和引用。
- 分段读取捕获快照,页面变化后重新获取。
开始前需要
- 基础 HTTP 与 JSON 知识
- 隔离服务与自有或获准测试页面
解释本章真实服务边界,并核验建议的观察或生命周期样例。
先看结论
- userId 与 sessionKey 标识状态,不提供授权。
- 操作前检查 URL、快照和引用。
- 分段读取捕获快照,页面变化后重新获取。
从受保护的本地服务开始
使用经过审查、绑定回环地址的安装,通过自己的秘密管理机制提供全局访问密钥。包与浏览器要求见部署章节。本练习不需要导入 cookie、代理、跟踪或公共监听器。先用 example.com 或自有页面,不提交表单,也不登录第三方账户。
所查 POST /tabs 处理器要求 userId 和 sessionKey。sessionKey 是标签组的首选名称,listItemId 作为旧版替代保留。为实验设置独特用户与组标签,保存返回的标签 ID,不要把这些状态路由标识与 Bearer 认证混为一谈。标签指明状态,不证明谁有权控制它。
读取浏览器实际观察到的内容
使用同一个 userId 请求 GET /tabs/:tabId/snapshot,规划交互前先检查返回 URL、快照文本与引用数量。对于已知样例,应核对标题和字段标签。没有引用时,先区分页面没有相关控件还是快照生成失败,不要编造选择器或点击记忆中的坐标。
大观察结果需要检查 truncated、hasMore 和 nextOffset,按照返回偏移继续,而不是假设第一段含所有控件。所查正偏移路径可以复用 lastSnapshot,因此是在分页读取已捕获观察,不保证重新读取页面。页面变化后,应先请求新的初始快照,再解释后续分段。
结束实验时避免大范围清理
只有从当前状态识别目标并确认操作属于授权范围后,才执行动作。导航或动态更新让引用过期时,应重新观察并评估预期动作。不能因为 HTTP 响应延迟就盲目重复提交表单;先检查可见结果是否已经改变,再决定是否需要重试。
完成后关闭具体测试标签,并确认它已从测试用户的标签列表消失。删除整个用户会话或持久存储影响更广,不是首次观察练习的必要步骤。下面只是建议 REST 请求体,不代表本次审查已经启动浏览器或执行在线页面操作。
实施步骤
- 1
启动绑定回环地址并配置访问密钥的隔离服务。
- 2
向 /tabs 提交样例并保存返回的标签 ID。
- 3
携带同一 Bearer 令牌请求 /tabs/:tabId/snapshot?userId=fixture-reader。
- 4
核对预期标题,然后仅关闭本次创建的测试标签。
可复制示例
{"userId":"fixture-reader","sessionKey":"read-only-20260908","url":"https://example.com","trace":false}常见问题
sessionKey 是另一个 API key 吗?
不是,它命名会话中的标签组。认证通过 Authorization 请求头单独传递。
请求后续偏移会刷新页面吗?
不一定。所查处理器在 lastSnapshot 存在时,使用它返回正偏移分段。
资料来源
- README.md来源核查 2026-09-08
- package.json来源核查 2026-09-08
- Dockerfile来源核查 2026-09-08
- lib/auth.js来源核查 2026-09-08
- lib/snapshot.js来源核查 2026-09-08
- lib/extract.js来源核查 2026-09-08
- lib/config.js来源核查 2026-09-08
- lib/reporter.js来源核查 2026-09-08
- lib/page-lease.js来源核查 2026-09-08
- server.js来源核查 2026-09-08
- tests/unit/snapshot.test.js来源核查 2026-09-08
- tests/unit/auth.test.js来源核查 2026-09-08