Skip to content
站长自营API 中转

代理和中转可以分开处理

网络代理解决连接问题,ZZSwitch 更适合统一 Base URL、Key、余额和多模型路由。

站长自营API 中转

正在配置代理或 API 中转?可以把模型接口统一到一个网关里

系统代理负责让客户端连得上,API 中转负责统一 Base URL、Key、余额和多模型路由。ZZSwitch 是我自己运营的统一 API 网关,适合 OpenCode / Claude Code / Codex 等工具接入。

web_fetch 是 OpenClaw 中默认启用的 HTTP GET 工具,无需配置即可直接调用,用于抓取 URL 并提取可读内容(Markdown 或纯文本)。关键配置包括缓存 TTL(默认 15 分钟)、最大输出字符数(上限 50000)、Firecrawl 备用方案(需单独配置插件)以及 SSRF 安全策略;如果 Readability 提取失败且已配置 Firecrawl,会自动回退。注意 web_fetch 不执行 JavaScript,JS 密集站点或需登录的页面请改用 Web Browser 工具。

OpenClaw web_fetch 配置与限制说明

web_fetch 工具执行普通 HTTP GET 请求并提取可读内容(HTML 转 Markdown 或纯文本)。它执行 JavaScript。

对于 JS 密集型站点或需要登录的页面,请改用 Web Browser 工具。

快速开始

web_fetch 默认启用——无需任何配置,智能体可立即调用:

javascript
await web_fetch({ url: "https://example.com/article" });

工具参数

参数类型必填默认值描述
urlstring要获取的 URL(仅 http/https
extractMode'markdown' | 'text''markdown'主内容提取后的输出格式
maxCharsnumber将输出截断至此字符数

工作原理

  1. 获取:发送带有 Chrome 风格 User-Agent 和 Accept-Language 头的 HTTP GET 请求,阻止私有/内部主机名,并在重定向时重新检查。
  2. 提取:对 HTML 响应运行 Readability(主内容提取)。
  3. 备用(可选):若 Readability 失败且已配置 Firecrawl,通过 Firecrawl API 以反爬模式重试。
  4. 缓存:结果缓存 15 分钟(可配置)以减少对同一 URL 的重复获取。

配置

json5
{
  tools: {
    web: {
      fetch: {
        enabled: true, // 默认:true
        provider: "firecrawl", // 可选;省略则自动检测可用凭证
        maxChars: 50000, // 最大输出字符数
        maxCharsCap: 50000, // maxChars 参数的硬性上限
        maxResponseBytes: 2000000, // 截断前的最大下载大小(字节)
        timeoutSeconds: 30,
        cacheTtlMinutes: 15,
        maxRedirects: 3,
        useTrustedEnvProxy: false, // 允许信任的 HTTP(S) 环境代理解析 DNS
        readability: true, // 使用 Readability 提取
        userAgent: "Mozilla/5.0 ...", // 覆盖 User-Agent
        ssrfPolicy: {
          allowRfc2544BenchmarkRange: true, // 选择启用:可信假 IP 代理使用 198.18.0.0/15
          allowIpv6UniqueLocalRange: true, // 选择启用:可信假 IP 代理使用 fc00::/7
        },
      },
    },
  },
}

Firecrawl 备用方案

如果 Readability 提取失败,web_fetch 可以回退到 Firecrawl 以进行反爬和更好的提取:

json5
{
  tools: {
    web: {
      fetch: {
        provider: "firecrawl", // 可选;省略则自动从可用凭证检测
      },
    },
  },
  plugins: {
    entries: {
      firecrawl: {
        enabled: true,
        config: {
          webFetch: {
            apiKey: "fc-...", // 若已设置 FIRECRAWL_API_KEY 可省略
            baseUrl: "https://api.firecrawl.dev",
            onlyMainContent: true,
            maxAgeMs: 86400000, // 缓存时长(1 天)
            timeoutSeconds: 60,
          },
        },
      },
    },
  },
}
  • plugins.entries.firecrawl.config.webFetch.apiKey 支持 SecretRef 对象。
  • 旧版 tools.web.fetch.firecrawl.* 配置会自动迁移(openclaw doctor --fix)。

注意:若 Firecrawl 已启用且其 SecretRef 未解析、也无 FIRECRAWL_API_KEY 环境变量回退,网关启动时会直接失败。

注意:Firecrawl baseUrl 覆盖有安全限制:托管流量只能使用 https://api.firecrawl.dev;自托管覆盖必须指向私有或内部端点,且仅对私有目标接受 http://

当前运行时行为:

  • tools.web.fetch.provider 显式选择抓取回退提供商。
  • 如果省略 provider,OpenClaw 自动从可用凭证中检测第一个就绪的 web-fetch 提供商。非沙箱的 web_fetch 可使用声明了 contracts.webFetchProviders 并在运行时注册匹配提供商的已安装插件。目前内置的提供商是 Firecrawl。
  • 沙箱化的 web_fetch 调用仅限于内置提供商。
  • 如果禁用了 Readability(readability: false),web_fetch 直接跳到所选提供商回退。如果没有可用的提供商,则失败关闭。

信任环境代理

如果您的部署要求 web_fetch 通过一个受信任的出站 HTTP(S) 代理,设置 tools.web.fetch.useTrustedEnvProxy: true

在此模式下,OpenClaw 在发送请求前仍会进行基于主机名的 SSRF 检查,但会由代理解析 DNS 而不是执行本地 DNS Pinning。仅当代理由操作者控制并在 DNS 解析后仍强制执行出站策略时,才启用此选项。

注意:如果未配置 HTTP(S) 代理环境变量,或目标主机被 NO_PROXY 排除,web_fetch 会回退到正常的严格路径(本地 DNS Pinning)。

限制与安全

  • maxChars 被钳制到 tools.web.fetch.maxCharsCap
  • 响应正文在解析前被限制为 maxResponseBytes;超大响应被截断并附带警告。
  • 私有/内部主机名被阻止。
  • tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRangetools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange 是面向可信假 IP 代理栈的窄范围选择启用;除非您的代理拥有这些合成范围并强制执行自身目标策略,否则保持未设置。
  • 重定向受 maxRedirects 检查和限制。
  • useTrustedEnvProxy 是显式选择启用,仅应在操作者控制的代理(DNS 解析后仍强制执行出站策略)上开启。
  • web_fetch 是尽力而为的——某些站点需要改用 Web Browser

工具配置文件

如果您使用工具配置文件或白名单,添加 web_fetchgroup:web

json5
{
  tools: {
    allow: ["web_fetch"],
    // 或:allow: ["group:web"](包含 web_fetch、web_search 和 x_search)
  },
}

相关链接

  • Web Search —— 多提供商网页搜索
  • Web Browser —— 完整浏览器自动化(支持 JS 密集型站点)
  • Firecrawl —— Firecrawl 搜索和爬取工具

常见问题

web_fetch 怎么配置 Firecrawl 备用?

plugins.entries.firecrawl 中启用 Firecrawl 插件,并在 config.webFetch 下设置 apiKey(支持 SecretRef)和 baseUrl。然后在 tools.web.fetch 中设置 provider: "firecrawl" 或省略以自动检测。若 Readability 提取失败,自动回退到 Firecrawl。

web_fetch 不支持 JavaScript,怎么办?

对于需要 JS 渲染的页面(如单页应用、登录后内容),web_fetch 无法工作。请改用 Web Browser 工具,它使用无头浏览器执行完整页面渲染。

web_fetch 缓存时间怎么调整?

tools.web.fetch 中设置 cacheTtlMinutes 值(默认 15 分钟)。Firecrawl 缓存单独由 plugins.entries.firecrawl.config.webFetch.maxAgeMs 控制(默认 86400000 毫秒,即 1 天)。注意 maxChars 会被 maxCharsCap 钳制,maxResponseBytes 限制响应体大小。

站长自营API 中转

ZZSwitch API 中转

统一 Base URL、Key 和余额。