用途
web-access 是一个联网与网页操作的统一入口技能。它通过内部决策矩阵,在 WebSearch、WebFetch、curl、Jina 和浏览器 CDP 等工具中选择最合适的执行方式,帮助完成信息获取、页面操作和内容提取任务。适合需要登录态的站点、动态 JS 渲染页面,以及抓取小红书、微博等有反爬限制的平台。
主要能力
- 联网工具选择:根据场景选择 WebSearch(搜索摘要或关键词结果)、WebFetch(URL 已知时定向提取特定信息)、curl(获取原始 HTML 源码,如 meta、JSON-LD 等结构化字段)、浏览器 CDP(需要登录态、交互操作或静态层无效的平台)。
- Jina 预处理:可选预处理层,可与 WebFetch/curl 组合使用,将网页转为 Markdown,节省 token,调用方式为 r.jina.ai/example.com,限 20 RPM。
- 浏览器 CDP 模式:通过 CDP Proxy 直连用户日常浏览器(Chrome/Edge 等 Chromium 系),天然携带登录态,无需启动独立浏览器。提供 /targets、/new、/info、/eval、/screenshot、/navigate、/back、/click、/clickAt、/setFiles、/scroll、/close 等 HTTP API。
- 页面内导航:支持 /click 在当前 tab 内点击,或 /new + 完整 URL 在新 tab 中打开。
- 媒体资源提取:通过 /eval 从 DOM 直接获取图片 URL,或对视频进行离散采样分析(操控 <video> 元素配合 /screenshot 采帧)。
- 本地浏览器资源检索:通过 find-url.mjs 脚本检索 Chrome/Edge 的书签/历史,支持关键词、时间范围、排序等参数。
- 并行调研:支持子 Agent 分治策略,多个独立调研目标可并行执行,共享一个浏览器和 Proxy,通过不同 targetId 操作不同 tab。
- 站点经验积累:按域名存储在 references/site-patterns/ 下,记录平台特征、有效模式、已知陷阱。
使用方式
- 前置检查:运行
node "${CLAUDE_SKILL_DIR}/scripts/check-deps.mjs",需 Node.js 22+(使用原生 WebSocket)。根据脚本输出处理:exit 0 继续;exit 2 需询问用户偏好并写入 config.env 的 WEB_ACCESS_BROWSER;exit 1 按 stdout 错误信息处理。支持--browser <chrome|edge>临时覆盖。切换浏览器时需先pkill -f cdp-proxy.mjs再重跑 check-deps。 - 展示须知:检查通过后,必须在回复中向用户直接展示温馨提示(部分站点对浏览器自动化操作检测严格,存在账号封禁风险),再启动 CDP Proxy 执行操作。
- 启动 Proxy:运行 check-deps.mjs 脚本,会依次检查 Node.js、浏览器调试端口,并确保 Proxy 已连接(未运行则自动启动并等待)。Proxy 启动后持续运行。
- 执行操作:通过 curl 调用 HTTP API 完成列出 tab、创建新后台 tab、执行 JS、截图、导航、点击、滚动、关闭 tab 等操作。
- 任务结束:用 /close 关闭自己创建的 tab,保留用户原有 tab 不受影响。Proxy 持续运行,不建议主动停止。
适用场景
- 需要登录态才能访问的站点内容获取。
- 动态 JS 渲染页面的内容提取。
- 抓取小红书、微博、微信公众号等有反爬限制的平台。
- 需要像人一样在浏览器内自由导航探索的任务。
- 用户指向本人访问过的页面或组织内部系统时,检索本地浏览器书签/历史。
- 多个独立调研目标的并行执行。
- 视频内容的离散采样分析。
限制
- 需 Node.js 22+。
- 部分站点对浏览器自动化操作检测严格,存在账号封禁风险,已内置防护措施但无法完全避免。
- Jina 限 20 RPM,且对数据面板、商品页等非文章结构页面可能提取到错误区块。
- 短时间内密集打开大量页面可能触发网站的反爬风控。
- 平台返回的“内容不存在”“页面不见了”等提示不一定反映真实状态,也可能是访问方式的问题。
- 浏览器 CDP 不处理登录态以外的 WebSearch、WebFetch、curl 场景。
- 登录判断的核心是目标内容是否拿到,只有确认无法获取且判断登录可解决时才告知用户登录。
- 站点经验内容标注发现日期,当作可能有效的提示而非保证。
- 子 Agent prompt 中必须写明“必须加载 web-access skill 并遵循指引”。
- 若引用的站点经验文件或其它脚本中仍含 GET /new?url=... 或 /navigate?target=...&url=... 的旧写法,需按 references/migration-2.5.3.md 就地改写为 POST body。