ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

camofox-browser /snapshot端点深度解析:includeScreenshot与offset分页

camofox-browser /snapshot端点深度解析:includeScreenshot与offset分页 camofox-browser /snapshot端点深度解析includeScreenshot与offset分页【免费下载链接】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 反检测引擎它的/snapshot端点是整个 API 的核心一次请求即可拿到页面的无障碍快照 可点击元素引用还支持includeScreenshot附带截图、offset对超大页面自动分页是智能体看懂网页的关键入口。一、/snapshot 端点是什么传统爬虫把整页 HTML 喂给模型又长又贵camofox-browser 的做法是返回无障碍树Accessibility Tree——只保留页面里有意义的东西标题、链接、按钮、输入框……体积比原始 HTML 小约 90%。更妙的是每个可交互元素都会被标注一个稳定引用如e1、e2后续点击、输入只需引用编号即可- heading Product Search Results - link Next [e42] - button Submit [e1]端点路径为GET /tabs/:tabId/snapshot实现见 server.js另有一个旧版 OpenClaw 格式GET /snapshot见 server.js两者参数与行为一致。二、请求参数一览参数类型说明userId字符串必填用于定位会话与标签页formattext/json输出格式默认textoffset整数分页读取大快照的字符偏移量默认 0includeScreenshottrue/false是否附带 base64 编码的 PNG 截图三、includeScreenshot让智能体既读得到、又看得见加上includeScreenshottrue后响应里会多出一个screenshot字段{ data: base64 字符串, mimeType: image/png }截图是实时拍摄的 PNG可直接交给多模态模型或保存归档不加该参数时响应中不会出现screenshot字段请求更轻量行为由 tests/e2e/snapshotScreenshot.test.js 完整覆盖对纯文本任务如提取链接、填表单建议保持默认关闭省流量也省 token 。 小贴士camofox_snapshot等 MCP 工具内部默认开启截图参数源码可参考 mcp/lib/tool-contracts.mjs。四、offset 分页超大页面如何分片读取网页内容可能非常庞大一次性全返回会撑爆上下文窗口。camofox-browser 在 lib/snapshot.js 中实现了精巧的**快照窗口化windowing**机制总预算 80000 字符约 20K token每片尾部固定保留约 5000 字符——专门留给分页导航链接保证智能体在任何一片里都能找到 Next / Previousoffset0返回头部片段 尾部导航offsetN返回第 N 到 N预算 之间的内容且仍追加导航尾部被截断时会在快照中嵌入提示标记[... truncated at char X of Y. Call snapshot with offsetX to see more. ...]。读取循环非常简单靠hasMore/nextOffset两个字段驱动首次请求不传offset得到第一片 nextOffset若hasMore为true用offsetnextOffset取下一片直到hasMore为false整页内容即被完整遍历e2e 测试见 tests/e2e/snapshot-truncation.test.js。⚡性能细节offset0的请求直接命中上一次快照的缓存tabState.lastSnapshot不需要重新截图、重新解析 DOM翻页几乎零成本。而页面发生导航或点击后缓存会自动失效保证你读到的永远是最新页面。五、响应字段速查字段含义url当前页面地址snapshot本片的无障碍快照文本含元素引用refsCount页面中可交互元素引用总数truncated本响应是否被截断totalChars完整快照的总字符数hasMore是否还有后续片段nextOffset下一片的 offset 值没有则为nullscreenshot仅当includeScreenshottrue时存在完整接口契约可参考自动生成的 openapi.json。六、快速上手两条 curl 搞定# 1) 基础快照纯文本无障碍树 curl http://localhost:9377/tabs/TAB_ID/snapshot?userIdagent1 # 2) 附带截图 读取第二片 curl http://localhost:9377/tabs/TAB_ID/snapshot?userIdagent1includeScreenshottrueoffset74800七、最佳实践常规浏览只调/snapshot用返回的元素引用去click/type电商列表、长文聚合页检查hasMore用nextOffset循环翻页别一次吞下整页️需要视觉判断时验证码、布局异常再加includeScreenshottrue点击分页链接后重新调用 snapshot 获取新页面的引用旧引用会因导航而失效。关键文件导航窗口化算法lib/snapshot.js主端点实现server.js旧版 OpenClaw 格式端点server.js接口文档docs/openapi.json分页 e2e 测试tests/e2e/snapshot-truncation.test.js截图 e2e 测试tests/e2e/snapshotScreenshot.test.js总结/snapshot端点用三个参数就解决了两件大事includeScreenshot让智能体看得见offset分页让它读得完。配合稳定的元素引用和无障碍树的高压缩率camofox-browser 把浏览网页变成了一项 token 成本可控、行为可靠的标准化操作——这正是 AI 智能体真正落地浏览任务的基石。【免费下载链接】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),仅供参考
返回列表