Tools

Recupero dal web

Lo strumento web_fetch esegue un semplice HTTP GET ed estrae contenuto leggibile (da HTML a markdown o testo). Non esegue JavaScript.

Per siti con uso intensivo di JS o pagine protette da login, usa invece il Web Browser.

Avvio rapido

web_fetch è abilitato per impostazione predefinita: non serve alcuna configurazione. L'agente può chiamarlo subito:

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

Parametri dello strumento

urlstringrequired

URL da recuperare. Solo http(s).

extractMode'markdown' | 'text'

Formato di output dopo l'estrazione del contenuto principale.

maxCharsnumber

Tronca l'output a questo numero di caratteri.

Come funziona

  • Fetch

    Invia un HTTP GET con uno User-Agent simile a Chrome e un'intestazione Accept-Language. Blocca hostname privati/interni e ricontrolla i reindirizzamenti.

  • Extract

    Esegue Readability (estrazione del contenuto principale) sulla risposta HTML.

  • Fallback (optional)

    Se Readability non riesce e Firecrawl è configurato, riprova tramite l'API Firecrawl con modalità di aggiramento dei bot.

  • Cache

    I risultati vengono memorizzati nella cache per 15 minuti (configurabile) per ridurre i recuperi ripetuti dello stesso URL.

  • Configurazione

    {
      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
            },
          },
        },
      },
    }
    

    Fallback Firecrawl

    Se l'estrazione Readability non riesce, web_fetch può passare in fallback a Firecrawl per l'aggiramento dei bot e una migliore estrazione:

    {
      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 supporta oggetti SecretRef. La configurazione legacy tools.web.fetch.firecrawl.* viene migrata automaticamente da openclaw doctor --fix.

    Comportamento runtime attuale:

    • tools.web.fetch.provider seleziona esplicitamente il provider di fallback del recupero.
    • Se provider viene omesso, OpenClaw rileva automaticamente il primo provider web-fetch pronto dalle credenziali disponibili. web_fetch non in sandbox può usare Plugin installati che dichiarano contracts.webFetchProviders e registrano un provider corrispondente a runtime. Oggi il provider incluso è Firecrawl.
    • Le chiamate web_fetch in sandbox restano limitate ai provider inclusi.
    • Se Readability è disabilitato, web_fetch passa direttamente al fallback del provider selezionato. Se non è disponibile alcun provider, fallisce in modo chiuso.

    Proxy env attendibile

    Se il tuo deployment richiede che web_fetch passi attraverso un proxy outbound HTTP(S) attendibile, imposta tools.web.fetch.useTrustedEnvProxy: true.

    In questa modalità, OpenClaw applica comunque i controlli SSRF basati su hostname prima di inviare la richiesta, ma lascia che sia il proxy a risolvere il DNS invece di effettuare il pinning DNS locale. Abilitalo solo quando il proxy è controllato dall'operatore e applica la policy outbound dopo la risoluzione DNS.

    Limiti e sicurezza

    • maxChars viene limitato a tools.web.fetch.maxCharsCap
    • Il corpo della risposta è limitato a maxResponseBytes prima del parsing; le risposte troppo grandi vengono troncate con un avviso
    • Gli hostname privati/interni vengono bloccati
    • tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRange e tools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange sono opt-in limitati per stack di proxy fake-IP attendibili; lasciali non impostati a meno che il tuo proxy possieda quegli intervalli sintetici e applichi la propria policy di destinazione
    • I reindirizzamenti vengono controllati e limitati da maxRedirects
    • useTrustedEnvProxy è un opt-in esplicito e deve essere abilitato solo per proxy controllati dall'operatore che applicano comunque la policy outbound dopo la risoluzione DNS
    • web_fetch è best-effort: alcuni siti richiedono il Web Browser

    Profili degli strumenti

    Se usi profili degli strumenti o allowlist, aggiungi web_fetch o group:web:

    {
      tools: {
        allow: ["web_fetch"],
        // or: allow: ["group:web"]  (includes web_fetch, web_search, and x_search)
      },
    }
    

    Correlati

    • Web Search: cerca nel web con più provider
    • Web Browser: automazione completa del browser per siti con uso intensivo di JS
    • Firecrawl: strumenti di ricerca e scraping Firecrawl