diff --git a/docs/zh-CN/tools/web-fetch.md b/docs/zh-CN/tools/web-fetch.md index 1bc982e32..cf73b0c76 100644 --- a/docs/zh-CN/tools/web-fetch.md +++ b/docs/zh-CN/tools/web-fetch.md @@ -1,29 +1,29 @@ --- read_when: - - 你想要获取一个 URL 并提取可读内容 - - 你需要配置 `web_fetch` 或其 Firecrawl 回退机制 - - 你想了解 `web_fetch` 的限制和缓存机制 + - 你想获取一个 URL 并提取可读内容 + - 你需要配置 web_fetch 或其 Firecrawl 回退方案 + - 你想了解 web_fetch 的限制和缓存 sidebarTitle: Web Fetch -summary: '`web_fetch` 工具——带有可读内容提取功能的 HTTP 获取工具' -title: Web 获取 +summary: web_fetch 工具 -- 带可读内容提取的 HTTP 获取 +title: 网页获取 x-i18n: - generated_at: "2026-04-24T02:52:01Z" - model: gpt-5.4 + generated_at: "2026-04-29T19:35:13Z" + model: gpt-5.5 provider: openai - source_hash: 56113bf358194d364a61f0e3f52b8f8437afc55565ab8dda5b5069671bc35735 + source_hash: 430ff19fe477cff22bb88bc69f1fdd53185cb61c935f2b64481e98b2e5f4aff9 source_path: tools/web-fetch.md - workflow: 15 + workflow: 16 --- -`web_fetch` 工具会执行普通的 HTTP GET,并提取可读内容 -(将 HTML 转为 markdown 或文本)。它**不会**执行 JavaScript。 +`web_fetch` 工具执行普通的 HTTP GET,并提取可读内容 +(HTML 转为 markdown 或文本)。它**不会**执行 JavaScript。 -对于重度依赖 JS 的网站或受登录保护的页面,请改用 +对于大量依赖 JS 的站点或受登录保护的页面,请改用 [Web Browser](/zh-CN/tools/browser)。 ## 快速开始 -`web_fetch` **默认启用**——无需任何配置。智能体可以 +`web_fetch` **默认启用** -- 不需要配置。智能体可以 立即调用它: ```javascript @@ -33,15 +33,15 @@ await web_fetch({ url: "https://example.com/article" }); ## 工具参数 -要获取的 URL。仅支持 `http(s)`。 +要获取的 URL。仅限 `http(s)`。 -提取主体内容后的输出格式。 +主内容提取后的输出格式。 -将输出截断为最多这么多字符。 +将输出截断到这个字符数。 ## 工作原理 @@ -49,14 +49,14 @@ await web_fetch({ url: "https://example.com/article" }); 发送带有类似 Chrome 的 User-Agent 和 `Accept-Language` - 标头的 HTTP GET 请求。会阻止私有/内部主机名,并在重定向后再次检查。 + 标头的 HTTP GET。阻止私有/内部主机名,并重新检查重定向。 - 对 HTML 响应运行 Readability(主体内容提取)。 + 在 HTML 响应上运行 Readability(主内容提取)。 - 如果 Readability 失败,且已配置 Firecrawl,则会通过 - Firecrawl API 以 bot-circumvention 模式重试。 + 如果 Readability 失败且已配置 Firecrawl,则通过启用机器人规避模式的 + Firecrawl API 重试。 结果会缓存 15 分钟(可配置),以减少对同一 URL 的重复 @@ -71,16 +71,20 @@ await web_fetch({ url: "https://example.com/article" }); tools: { web: { fetch: { - enabled: true, // 默认值:true - provider: "firecrawl", // 可选;省略则自动检测 - maxChars: 50000, // 输出字符数上限 - maxCharsCap: 50000, // maxChars 参数的硬上限 - maxResponseBytes: 2000000, // 截断前的最大下载大小 + enabled: true, // default: true + provider: "firecrawl", // optional; omit for auto-detect + maxChars: 50000, // max output chars + maxCharsCap: 50000, // hard cap for maxChars param + maxResponseBytes: 2000000, // max download size before truncation timeoutSeconds: 30, cacheTtlMinutes: 15, maxRedirects: 3, - readability: true, // 使用 Readability 提取 - userAgent: "Mozilla/5.0 ...", // 覆盖 User-Agent + readability: true, // use Readability extraction + userAgent: "Mozilla/5.0 ...", // override User-Agent + ssrfPolicy: { + allowRfc2544BenchmarkRange: true, // opt-in for trusted fake-IP proxies using 198.18.0.0/15 + allowIpv6UniqueLocalRange: true, // opt-in for trusted fake-IP proxies using fc00::/7 + }, }, }, }, @@ -90,14 +94,14 @@ await web_fetch({ url: "https://example.com/article" }); ## Firecrawl 回退 如果 Readability 提取失败,`web_fetch` 可以回退到 -[Firecrawl](/zh-CN/tools/firecrawl),以实现 bot-circumvention 和更好的提取效果: +[Firecrawl](/zh-CN/tools/firecrawl),用于机器人规避和更好的提取效果: ```json5 { tools: { web: { fetch: { - provider: "firecrawl", // 可选;省略则根据可用凭证自动检测 + provider: "firecrawl", // optional; omit for auto-detect from available credentials }, }, }, @@ -107,10 +111,10 @@ await web_fetch({ url: "https://example.com/article" }); enabled: true, config: { webFetch: { - apiKey: "fc-...", // 如果已设置 FIRECRAWL_API_KEY,则为可选 + apiKey: "fc-...", // optional if FIRECRAWL_API_KEY is set baseUrl: "https://api.firecrawl.dev", onlyMainContent: true, - maxAgeMs: 86400000, // 缓存时长(1 天) + maxAgeMs: 86400000, // cache duration (1 day) timeoutSeconds: 60, }, }, @@ -124,47 +128,51 @@ await web_fetch({ url: "https://example.com/article" }); 旧版 `tools.web.fetch.firecrawl.*` 配置会由 `openclaw doctor --fix` 自动迁移。 - 如果已启用 Firecrawl,且其 SecretRef 未解析,同时也没有 + 如果 Firecrawl 已启用,且其 SecretRef 未解析,也没有 `FIRECRAWL_API_KEY` 环境变量回退,Gateway 网关启动会快速失败。 - Firecrawl 的 `baseUrl` 覆盖受到严格限制:必须使用 `https://`,并且 + Firecrawl `baseUrl` 覆盖受到锁定:它们必须使用 `https://`,并且 必须是官方 Firecrawl 主机(`api.firecrawl.dev`)。 当前运行时行为: -- `tools.web.fetch.provider` 会显式选择获取回退提供商。 -- 如果省略 `provider`,OpenClaw 会从可用凭证中自动检测第一个可用的 web-fetch - 提供商。目前内置的提供商是 Firecrawl。 -- 如果禁用了 Readability,`web_fetch` 会直接跳到所选 - 提供商回退。如果没有可用提供商,它会以封闭失败的方式结束。 +- `tools.web.fetch.provider` 显式选择获取回退提供商。 +- 如果省略 `provider`,OpenClaw 会从可用凭证中自动检测第一个就绪的网页获取 + 提供商。目前内置提供商是 Firecrawl。 +- 如果禁用 Readability,`web_fetch` 会直接跳到选定的 + 提供商回退。如果没有可用提供商,它会失败关闭。 -## 限制与安全性 +## 限制与安全 -- `maxChars` 会被限制到 `tools.web.fetch.maxCharsCap` -- 在解析前,响应体会受 `maxResponseBytes` 限制;过大的 - 响应会被截断,并附带警告 +- `maxChars` 会被限制在 `tools.web.fetch.maxCharsCap` +- 响应正文会在解析前被限制在 `maxResponseBytes`;超大的 + 响应会被截断并给出警告 - 私有/内部主机名会被阻止 +- `tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRange` 和 + `tools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange` 是面向 + 受信任的 fake-IP 代理栈的狭窄选择启用项;除非你的代理拥有 + 这些合成范围并强制执行自己的目标策略,否则请保持未设置 - 重定向会被检查,并受 `maxRedirects` 限制 -- `web_fetch` 采用尽力而为模式——某些网站需要使用 [Web Browser](/zh-CN/tools/browser) +- `web_fetch` 是尽力而为 -- 某些站点需要 [Web Browser](/zh-CN/tools/browser) -## 工具配置档 +## 工具配置文件 -如果你使用工具配置档或 allowlist,请添加 `web_fetch` 或 `group:web`: +如果你使用工具配置文件或允许列表,请添加 `web_fetch` 或 `group:web`: ```json5 { tools: { allow: ["web_fetch"], - // 或:allow: ["group:web"] (包含 web_fetch、web_search 和 x_search) + // or: allow: ["group:web"] (includes web_fetch, web_search, and x_search) }, } ``` ## 相关内容 -- [Web Search](/zh-CN/tools/web) —— 使用多个提供商搜索网页 -- [Web Browser](/zh-CN/tools/browser) —— 用于重度依赖 JS 网站的完整浏览器自动化 -- [Firecrawl](/zh-CN/tools/firecrawl) —— Firecrawl 搜索和抓取工具 +- [Web Search](/zh-CN/tools/web) -- 使用多个提供商搜索网络 +- [Web Browser](/zh-CN/tools/browser) -- 用于大量依赖 JS 的站点的完整浏览器自动化 +- [Firecrawl](/zh-CN/tools/firecrawl) -- Firecrawl 搜索和抓取工具