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.

Принцип работы

  • Получение

    Отправляет HTTP GET-запрос с похожим на Chrome User-Agent и заголовком Accept-Language. Блокирует частные и внутренние имена хостов и повторно проверяет перенаправления.

  • Извлечение

    Запускает Readability (извлечение основного содержимого) для HTML-ответа.

  • Резервный вариант (необязательно)

    Если Readability завершается с ошибкой и доступен провайдер получения данных, повторяет попытку через этого провайдера (например, в режиме обхода защиты от ботов Firecrawl).

  • Кэширование

    Результаты кэшируются на 15 минут (значение настраивается), чтобы сократить количество повторных запросов к одному URL.

  • Обновления хода выполнения

    web_fetch выводит общедоступную строку состояния, только если получение данных всё ещё не завершено через пять секунд:

    text
    Получение содержимого страницы...

    Быстрые обращения к кэшу и быстрые сетевые ответы завершаются до срабатывания таймера, поэтому строка состояния для них никогда не отображается. При отмене вызова таймер сбрасывается. Эта строка относится только к состоянию интерфейса канала и никогда не содержит полученное содержимое страницы.

    Конфигурация

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

    Резервный вариант с Firecrawl

    Если извлечение с помощью Readability завершается с ошибкой, web_fetch может использовать Firecrawl как резервный вариант для обхода защиты от ботов и более качественного извлечения:

    json5
    {  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 является необязательным и поддерживает объекты SecretRef. Устаревшая конфигурация tools.web.fetch.firecrawl.* автоматически переносится в plugins.entries.firecrawl.config.webFetch с помощью openclaw doctor --fix.

    Текущее поведение среды выполнения:

    • 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.allowRfc2544BenchmarkRange и tools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange — это узкие явные разрешения для доверенных прокси-стеков с фиктивными IP-адресами; не задавайте их, если ваш прокси не управляет этими синтетическими диапазонами и не применяет собственную политику назначения
    • Перенаправления проверяются и ограничиваются параметром maxRedirects (по умолчанию 3)
    • useTrustedEnvProxy требует явного включения и должен использоваться только для контролируемых оператором прокси, которые продолжают применять политику исходящих подключений после разрешения DNS
    • web_fetch работает по принципу максимальных усилий — некоторым сайтам требуется веб-браузер

    Профили инструментов

    Если вы используете профили инструментов или списки разрешений, добавьте web_fetch или group:web:

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

    Связанные материалы

    • Веб-поиск — поиск в интернете с помощью нескольких провайдеров
    • Веб-браузер — полноценная автоматизация браузера для сайтов, активно использующих JS
    • Firecrawl — инструменты Firecrawl для поиска и извлечения данных со страниц
    Was this useful?
    On this page

    On this page