Skip to content

網頁擷取

web_fetch 工具執行一般的 HTTP GET 並提取可讀內容 (HTML 轉 markdown 或文字)。它不會執行 JavaScript。

對於重度使用 JS 的網站或需要登入的頁面,請改用 網頁瀏覽器

web_fetch 預設為啟用 — 無需設定。代理程式可以 立即呼叫它:

await web_fetch({ url: "https://example.com/article" });
要擷取的 URL。僅限 `http(s)`。 主要內容提取後的輸出格式。 將輸出截斷為這麼多字元。
  1. 擷取

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

  2. 提取

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

  3. 後備 (可選)

    如果 Readability 失敗且已設定 Firecrawl,則透過 具有規避機器人模式的 Firecrawl API 重試。

  4. 快取

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

web_fetch 僅在擷取作業逾過五秒鐘仍處於擱置狀態時, 才會發出公開進度行:

Fetching page content...

快速快取命中和快速網路回應會在計時器觸發前完成,因此 它們不會顯示進度列。如果呼叫被取消,計時器會被清除。 當擷取最終完成時,代理會收到正常的工具結果; 進度列僅僅是通道 UI 狀態,絕不包含已擷取的頁面 內容。

{
tools: {
web: {
fetch: {
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,
useTrustedEnvProxy: false, // let a trusted HTTP(S) env proxy resolve DNS
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
},
},
},
},
}

如果 Readability 擷取失敗,web_fetch 可以回退至 Firecrawl 以規避機器人偵測並進行更好的擷取:

{
tools: {
web: {
fetch: {
provider: "firecrawl", // optional; omit for auto-detect from available credentials
},
},
},
plugins: {
entries: {
firecrawl: {
enabled: true,
config: {
webFetch: {
apiKey: "fc-...", // optional if FIRECRAWL_API_KEY is set
baseUrl: "https://api.firecrawl.dev",
onlyMainContent: true,
maxAgeMs: 86400000, // cache duration (1 day)
timeoutSeconds: 60,
},
},
},
},
},
}

plugins.entries.firecrawl.config.webFetch.apiKey 支援 SecretRef 物件。 舊版 tools.web.fetch.firecrawl.* 設定會由 openclaw doctor --fix 自動遷移。

當前執行時行為:

  • tools.web.fetch.provider 會明確選擇擷取後備提供者。
  • 如果省略 provider,OpenClaw 會從可用的憑證中自動偵測第一個就緒的 web-fetch 提供者。非沙盒化的 web_fetch 可以使用 宣告 contracts.webFetchProviders 並在執行時註冊 匹配提供者的已安裝外掛。目前內建的提供者是 Firecrawl。
  • 沙盒化的 web_fetch 呼叫僅限於使用內建的提供者。
  • 如果停用 Readability,web_fetch 會直接跳至選定的 提供者後備。如果沒有可用的提供者,它將以封閉模式失敗(失敗關閉)。

如果您的部署需要 web_fetch 透過受信任的出境 HTTP(S) 代理伺服器,請設定 tools.web.fetch.useTrustedEnvProxy: true

在此模式下,OpenClaw 在發送請求前仍會套用基於主機名的 SSRF 檢查, 但它會讓代理伺服器解析 DNS,而不是進行本地 DNS 鎖定。僅在代理伺服器由操作員控制並在 DNS 解析後執行 出境政策時才啟用此功能。

  • 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

{
tools: {
allow: ["web_fetch"],
// or: allow: ["group:web"] (includes web_fetch, web_search, and x_search)
},
}
  • Web Search — 使用多個供應商搜尋網路
  • Web Browser — 針對重度 JS 網站的完整瀏覽器自動化
  • Firecrawl — Firecrawl 搜尋和爬取工具