概述

web_fetch 工具执行 HTTP GET 请求并提取可读内容(HTML 转 Markdown 或纯文本)。默认启用,无需配置。不执行 JavaScript,JS 密集型站点需使用 Web Browser 工具。

核心功能

  • 使用 Chrome-like User-Agent 发送 HTTP GET 请求
  • 通过 Readability 提取主要内容
  • 可选 Firecrawl 回退(用于反爬虫和更好的提取)
  • 结果缓存 15 分钟(可配置)
  • 阻止私有/内部主机名(SSRF 防护)
  • 支持 extractMode(markdown/text)和 maxChars 参数

工作流程

  1. 发送 HTTP GET(Chrome-like UA,检查重定向)
  2. 运行 Readability 提取主要内容
  3. 若 Readability 失败且配置了 Firecrawl,通过 Firecrawl API 重试
  4. 缓存结果 15 分钟

配置/使用

{
  tools: {
    web: {
      fetch: {
        enabled: true,
        provider: "firecrawl",  // 可选,省略则自动检测
        maxChars: 50000,
        maxCharsCap: 50000,
        maxResponseBytes: 2000000,
        timeoutSeconds: 30,
        cacheTtlMinutes: 15,
        maxRedirects: 3,
        readability: true,
      },
    },
  },
}

Firecrawl 回退配置:

{
  plugins: {
    entries: {
      firecrawl: {
        enabled: true,
        config: {
          webFetch: {
            apiKey: "fc-...",
            onlyMainContent: true,
            maxAgeMs: 86400000,
          },
        },
      },
    },
  },
}

安全限制

  • maxChars 受 maxCharsCap 硬上限约束
  • 响应体超过 maxResponseBytes 时截断并警告
  • 私有/内部主机名被阻止
  • 重定向次数受 maxRedirects 限制
  • useTrustedEnvProxy 需显式启用

相关页面

  • concepts/tool-web — Web 搜索工具总览
  • concepts/tool-firecrawl — Firecrawl 搜索与抓取工具
  • concepts/tool-browser — 全浏览器自动化(JS 密集型站点)