Saltar al contenido principal
web_fetch realiza un GET HTTP simple y extrae contenido legible (HTML a markdown o texto). No ejecuta JavaScript. Para sitios con mucho JS o páginas protegidas por inicio de sesión, usa el Navegador web.

Inicio rápido

Habilitado de forma predeterminada, no se necesita configuración:
await web_fetch({ url: "https://example.com/article" });

Parámetros de la herramienta

url
string
requerido
URL que se va a recuperar. Solo http(s).
extractMode
'markdown' | 'text'
predeterminado:"markdown"
Formato de salida después de la extracción del contenido principal.
maxChars
number
Trunca la salida a esta cantidad de caracteres. Se limita a tools.web.fetch.maxCharsCap.

Cómo funciona

1

Fetch

Envía un GET HTTP con un User-Agent similar a Chrome y el encabezado Accept-Language. Bloquea nombres de host privados/internos y vuelve a comprobar las redirecciones.
2

Extract

Ejecuta Readability (extracción de contenido principal) en la respuesta HTML.
3

Fallback (optional)

Si Readability falla y hay un proveedor de recuperación disponible, reintenta a través de ese proveedor (por ejemplo, el modo de elusión de bots de Firecrawl).
4

Cache

Los resultados se almacenan en caché durante 15 minutos (configurable) para reducir recuperaciones repetidas de la misma URL.

Actualizaciones de progreso

web_fetch emite una línea de progreso pública solo cuando la recuperación sigue pendiente después de cinco segundos:
Fetching page content...
Los aciertos rápidos de caché y las respuestas rápidas de red terminan antes de que se active el temporizador, por lo que nunca muestran una línea de progreso. Cancelar la llamada borra el temporizador. La línea de progreso es solo estado de la interfaz de usuario del canal y nunca contiene contenido recuperado de la página.

Configuración

{
  tools: {
    web: {
      fetch: {
        enabled: true, // default: true
        provider: "firecrawl", // optional; omit for auto-detect
        maxChars: 20000, // default output chars; capped by maxCharsCap
        maxCharsCap: 20000, // hard cap for maxChars param
        maxResponseBytes: 750000, // max download size before truncation (32000-10000000)
        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 de Firecrawl

Si la extracción de Readability falla, web_fetch puede recurrir a Firecrawl para eludir bots y obtener una mejor extracción:
{
  tools: {
    web: {
      fetch: {
        provider: "firecrawl", // optional; omit for auto-detect from available credentials
      },
    },
  },
  plugins: {
    entries: {
      firecrawl: {
        enabled: true,
        config: {
          webFetch: {
            // apiKey: "fc-...", // optional; omit for keyless starter access
            baseUrl: "https://api.firecrawl.dev",
            onlyMainContent: true,
            maxAgeMs: 172800000, // cache duration (2 days)
            timeoutSeconds: 60,
          },
        },
      },
    },
  },
}
plugins.entries.firecrawl.config.webFetch.apiKey es opcional y admite objetos SecretRef. La configuración heredada tools.web.fetch.firecrawl.* se migra automáticamente a plugins.entries.firecrawl.config.webFetch mediante openclaw doctor --fix.
Si configuras un SecretRef de clave de API de Firecrawl y no se puede resolver sin una alternativa de entorno FIRECRAWL_API_KEY, el inicio del Gateway falla rápidamente.
Las sobrescrituras de baseUrl de Firecrawl están restringidas: el tráfico alojado usa https://api.firecrawl.dev; las sobrescrituras autoalojadas deben apuntar a endpoints privados o internos, y http:// se acepta solo para esos destinos privados.
Comportamiento actual en tiempo de ejecución:
  • tools.web.fetch.provider selecciona explícitamente el proveedor alternativo de recuperación.
  • Si se omite provider, OpenClaw detecta automáticamente el primer proveedor de web-fetch listo a partir de las credenciales configuradas. web_fetch sin sandbox puede usar Plugins instalados que declaran contracts.webFetchProviders y registran un proveedor coincidente en tiempo de ejecución. El Plugin oficial de Firecrawl proporciona esta alternativa actualmente.
  • Las llamadas web_fetch con sandbox permiten proveedores incluidos más proveedores instalados cuya procedencia oficial de npm o ClawHub está verificada. Actualmente eso permite el Plugin oficial de Firecrawl; los Plugins externos de recuperación de terceros permanecen excluidos.
  • Si Readability está deshabilitado, web_fetch salta directamente a la alternativa del proveedor seleccionado. Si no hay ningún proveedor disponible, falla en modo cerrado.

Proxy de entorno de confianza

Si tu despliegue requiere que web_fetch pase por un proxy HTTP(S) saliente de confianza, establece tools.web.fetch.useTrustedEnvProxy: true. En este modo, OpenClaw sigue aplicando comprobaciones SSRF basadas en nombres de host antes de enviar la solicitud, pero permite que el proxy resuelva DNS en lugar de hacer anclaje de DNS local. Habilita esto solo cuando el proxy esté controlado por el operador y aplique la política saliente después de la resolución DNS.
Si no hay configurada ninguna variable de entorno de proxy HTTP(S), o el host de destino está excluido por NO_PROXY, web_fetch vuelve a la ruta estricta normal con anclaje de DNS local.

Límites y seguridad

  • maxChars se limita a tools.web.fetch.maxCharsCap (predeterminado 20000)
  • El cuerpo de la respuesta se limita a maxResponseBytes (predeterminado 750000, limitado a 32000-10000000) antes del análisis; las respuestas sobredimensionadas se truncan con una advertencia
  • Los nombres de host privados/internos se bloquean
  • tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRange y tools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange son activaciones explícitas limitadas para pilas de proxy de IP falsas de confianza; déjalas sin definir salvo que tu proxy controle esos rangos sintéticos y aplique su propia política de destino
  • Las redirecciones se comprueban y se limitan mediante maxRedirects (predeterminado 3)
  • useTrustedEnvProxy es una activación explícita y solo debe habilitarse para proxies controlados por el operador que sigan aplicando la política saliente después de la resolución DNS
  • web_fetch es de mejor esfuerzo; algunos sitios necesitan el Navegador web

Perfiles de herramientas

Si usas perfiles de herramientas o listas de permitidos, agrega web_fetch o group:web:
{
  tools: {
    allow: ["web_fetch"],
    // or: allow: ["group:web"]  (includes web_fetch, web_search, and x_search)
  },
}

Relacionado

  • Búsqueda web — busca en la web con varios proveedores
  • Navegador web — automatización completa del navegador para sitios con mucho JS
  • Firecrawl — herramientas de búsqueda y extracción de Firecrawl