Tools

網頁擷取

web_fetch 會執行一般的 HTTP GET,並擷取可讀內容(將 HTML 轉換為 Markdown 或文字)。它不會執行 JavaScript。對於大量使用 JS 的網站或 受登入保護的頁面,請改用網頁瀏覽器

快速開始

預設啟用,無須設定:

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

工具參數

urlstringrequired

要擷取的 URL。僅支援 http(s)

extractMode'markdown' | 'text'default: markdown

擷取主要內容後的輸出格式。

maxCharsnumber

將輸出截斷至此字元數。上限受 tools.web.fetch.maxCharsCap 限制。

運作方式

  • 擷取

    使用類似 Chrome 的 User-Agent 和 Accept-Language 標頭傳送 HTTP GET。封鎖私人/內部主機名稱,並重新檢查重新導向。

  • 提取

    對 HTML 回應執行 Readability(主要內容提取)。

  • 備援(選用)

    如果 Readability 失敗且有可用的擷取提供者,則透過該提供者重試 (例如 Firecrawl 的機器人規避模式)。

  • 快取

    結果會快取 15 分鐘(可設定),以減少對相同 URL 的重複 擷取。

  • 進度更新

    只有在擷取作業經過五秒後仍未完成時,web_fetch 才會發出公開的進度訊息:

    text
    正在擷取頁面內容...

    快速的快取命中和網路回應會在計時器觸發前完成,因此 不會顯示進度訊息。取消呼叫會清除計時器。此進度訊息僅代表頻道介面狀態, 絕不包含擷取到的頁面內容。

    設定

    json5
    {  tools: {    web: {      fetch: {        enabled: true, // 預設值:true        provider: "firecrawl", // 選用;省略則自動偵測        maxChars: 20000, // 預設輸出字元數;上限為 maxCharsCap        maxCharsCap: 20000, // maxChars 參數的硬性上限        maxResponseBytes: 750000, // 截斷前的最大下載大小(32000-10000000)        timeoutSeconds: 30,        cacheTtlMinutes: 15,        maxRedirects: 3,        useTrustedEnvProxy: false, // 讓受信任的 HTTP(S) 環境代理伺服器解析 DNS        readability: true, // 使用 Readability 提取        userAgent: "Mozilla/5.0 ...", // 覆寫 User-Agent        ssrfPolicy: {          allowRfc2544BenchmarkRange: true, // 選擇性啟用:供使用 198.18.0.0/15 的受信任假 IP 代理伺服器使用          allowIpv6UniqueLocalRange: true, // 選擇性啟用:供使用 fc00::/7 的受信任假 IP 代理伺服器使用        },      },    },  },}

    Firecrawl 備援

    如果 Readability 提取失敗,web_fetch 可改用 Firecrawl 來規避機器人限制並改善提取效果:

    json5
    {  tools: {    web: {      fetch: {        provider: "firecrawl", // 選用;省略則根據可用憑證自動偵測      },    },  },  plugins: {    entries: {      firecrawl: {        enabled: true,        config: {          webFetch: {            // apiKey: "fc-...", // 選用;省略則使用免金鑰的入門存取            baseUrl: "https://api.firecrawl.dev",            onlyMainContent: true,            maxAgeMs: 172800000, // 快取時間(2 天)            timeoutSeconds: 60,          },        },      },    },  },}

    plugins.entries.firecrawl.config.webFetch.apiKey 為選用,並支援 SecretRef 物件。 舊版 tools.web.fetch.firecrawl.* 設定可透過 openclaw doctor --fix 自動遷移至 plugins.entries.firecrawl.config.webFetch

    目前的執行階段行為:

    • tools.web.fetch.provider 會明確選取擷取備援提供者。
    • 如果省略 provider,OpenClaw 會根據已設定的憑證,自動偵測第一個就緒的網頁擷取 提供者。非沙箱環境中的 web_fetch 可以使用已安裝的外掛;這些外掛必須宣告 contracts.webFetchProviders,並在執行階段註冊相符的提供者。目前官方 Firecrawl 外掛 提供此備援功能。
    • 沙箱環境中的 web_fetch 呼叫允許使用內建提供者,以及官方 npm 或 ClawHub 來源已驗證的已安裝提供者。目前這允許使用官方 Firecrawl 外掛;第三方外部擷取外掛 仍會被排除。
    • 如果停用 Readability,web_fetch 會直接使用所選的 提供者備援。如果沒有可用的提供者,則會採取封閉式失敗。

    受信任的環境代理伺服器

    如果您的部署需要讓 web_fetch 經由受信任的對外 HTTP(S) 代理伺服器,請設定 tools.web.fetch.useTrustedEnvProxy: true

    在此模式下,OpenClaw 仍會在傳送要求前套用基於主機名稱的 SSRF 檢查, 但會讓代理伺服器解析 DNS,而不在本機固定 DNS。只有在代理伺服器由操作人員控制, 且會在 DNS 解析後強制執行對外連線政策時,才應啟用此功能。

    限制與安全性

    • maxChars 的上限受 tools.web.fetch.maxCharsCap 限制(預設為 20000
    • 回應本文在解析前的上限為 maxResponseBytes(預設為 750000,限制於 32000-10000000);過大的回應會遭截斷並顯示警告
    • 私人/內部主機名稱會遭封鎖
    • tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRangetools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange 是專供 受信任假 IP 代理伺服器堆疊使用的有限選擇性設定;除非您的代理伺服器擁有 這些合成範圍並強制執行自己的目的地政策,否則請勿設定
    • 重新導向會經過檢查,且數量受 maxRedirects 限制(預設為 3
    • useTrustedEnvProxy 必須明確選擇啟用,且僅應用於由操作人員控制、 並會在 DNS 解析後持續強制執行對外連線政策的代理伺服器
    • web_fetch 僅提供盡力而為的支援——部分網站需要使用網頁瀏覽器

    工具設定檔

    如果您使用工具設定檔或允許清單,請加入 web_fetchgroup:web

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

    相關內容

    • 網頁搜尋——使用多個提供者搜尋網路
    • 網頁瀏覽器——適用於大量使用 JS 之網站的完整瀏覽器自動化
    • Firecrawl——Firecrawl 搜尋與擷取工具
    Was this useful?
    On this page

    On this page