Tools

Pobieranie z sieci Web

web_fetch wykonuje zwykłe żądanie HTTP GET i wyodrębnia czytelną treść (z HTML do markdownu lub tekstu). Nie wykonuje kodu JavaScript. W przypadku witryn intensywnie korzystających z JS lub stron chronionych logowaniem użyj zamiast tego przeglądarki internetowej.

Szybki start

Włączone domyślnie, bez konieczności konfiguracji:

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

Parametry narzędzia

urlstringrequired

Adres URL do pobrania. Tylko http(s).

extractMode'markdown' | 'text'default: markdown

Format wyjściowy po wyodrębnieniu głównej treści.

maxCharsnumber

Przycina dane wyjściowe do podanej liczby znaków. Wartość jest ograniczona przez tools.web.fetch.maxCharsCap.

Jak to działa

  • Pobieranie

    Wysyła żądanie HTTP GET z nagłówkami User-Agent podobnym do Chrome oraz Accept-Language. Blokuje prywatne/wewnętrzne nazwy hostów i ponownie sprawdza przekierowania.

  • Wyodrębnianie

    Uruchamia Readability (wyodrębnianie głównej treści) dla odpowiedzi HTML.

  • Tryb rezerwowy (opcjonalny)

    Jeśli Readability zawiedzie, a dostawca pobierania jest dostępny, ponawia próbę za jego pośrednictwem (na przykład w trybie omijania zabezpieczeń przed botami Firecrawl).

  • Pamięć podręczna

    Wyniki są przechowywane w pamięci podręcznej przez 15 minut (wartość konfigurowalna), aby ograniczyć wielokrotne pobieranie tego samego adresu URL.

  • Aktualizacje postępu

    web_fetch emituje publiczny wiersz postępu tylko wtedy, gdy pobieranie nadal trwa po pięciu sekundach:

    text
    Pobieranie treści strony...

    Szybkie trafienia w pamięci podręcznej i krótkie odpowiedzi sieciowe kończą się przed uruchomieniem licznika czasu, dlatego wiersz postępu nigdy się dla nich nie pojawia. Anulowanie wywołania usuwa licznik czasu. Wiersz postępu jest wyłącznie stanem interfejsu kanału i nigdy nie zawiera pobranej treści strony.

    Konfiguracja

    json5
    {  tools: {    web: {      fetch: {        enabled: true, // domyślnie: true        provider: "firecrawl", // opcjonalne; pomiń, aby wykryć automatycznie        maxChars: 20000, // domyślna liczba znaków wyjściowych; ograniczona przez maxCharsCap        maxCharsCap: 20000, // bezwzględny limit parametru maxChars        maxResponseBytes: 750000, // maksymalny rozmiar pobierania przed przycięciem (32000-10000000)        timeoutSeconds: 30,        cacheTtlMinutes: 15,        maxRedirects: 3,        useTrustedEnvProxy: false, // zezwól zaufanemu serwerowi proxy HTTP(S) ze zmiennej środowiskowej rozwiązywać DNS        readability: true, // użyj wyodrębniania Readability        userAgent: "Mozilla/5.0 ...", // zastąp User-Agent        ssrfPolicy: {          allowRfc2544BenchmarkRange: true, // opcjonalna zgoda dla zaufanych serwerów proxy z fałszywymi adresami IP używających 198.18.0.0/15          allowIpv6UniqueLocalRange: true, // opcjonalna zgoda dla zaufanych serwerów proxy z fałszywymi adresami IP używających fc00::/7        },      },    },  },}

    Rezerwowe użycie Firecrawl

    Jeśli wyodrębnianie za pomocą Readability zawiedzie, web_fetch może użyć rezerwowo Firecrawl, aby ominąć zabezpieczenia przed botami i uzyskać lepsze wyniki wyodrębniania:

    json5
    {  tools: {    web: {      fetch: {        provider: "firecrawl", // opcjonalne; pomiń, aby wykryć automatycznie na podstawie dostępnych danych uwierzytelniających      },    },  },  plugins: {    entries: {      firecrawl: {        enabled: true,        config: {          webFetch: {            // apiKey: "fc-...", // opcjonalne; pomiń, aby korzystać z dostępu początkowego bez klucza            baseUrl: "https://api.firecrawl.dev",            onlyMainContent: true,            maxAgeMs: 172800000, // czas przechowywania w pamięci podręcznej (2 dni)            timeoutSeconds: 60,          },        },      },    },  },}

    plugins.entries.firecrawl.config.webFetch.apiKey jest opcjonalne i obsługuje obiekty SecretRef. Starsza konfiguracja tools.web.fetch.firecrawl.* jest automatycznie migrowana do plugins.entries.firecrawl.config.webFetch przez openclaw doctor --fix.

    Bieżące zachowanie środowiska wykonawczego:

    • tools.web.fetch.provider jawnie wybiera rezerwowego dostawcę pobierania.
    • Jeśli provider zostanie pominięty, OpenClaw automatycznie wykryje pierwszego gotowego dostawcę pobierania stron internetowych na podstawie skonfigurowanych danych uwierzytelniających. Wywołanie web_fetch poza piaskownicą może używać zainstalowanych pluginów, które deklarują contracts.webFetchProviders i rejestrują zgodnego dostawcę w czasie wykonywania. Obecnie tę funkcję rezerwową zapewnia oficjalny plugin Firecrawl.
    • Wywołania web_fetch w piaskownicy dopuszczają dostawców dołączonych do pakietu oraz zainstalowanych dostawców, których oficjalne pochodzenie z npm lub ClawHub zostało zweryfikowane. Obecnie pozwala to na użycie oficjalnego pluginu Firecrawl; zewnętrzne pluginy pobierania innych firm pozostają wykluczone.
    • Jeśli Readability jest wyłączone, web_fetch przechodzi bezpośrednio do wybranego dostawcy rezerwowego. Jeśli żaden dostawca nie jest dostępny, kończy działanie niepowodzeniem.

    Zaufany serwer proxy ze zmiennych środowiskowych

    Jeśli wdrożenie wymaga, aby web_fetch korzystało z zaufanego wychodzącego serwera proxy HTTP(S), ustaw tools.web.fetch.useTrustedEnvProxy: true.

    W tym trybie OpenClaw nadal stosuje kontrole SSRF oparte na nazwie hosta przed wysłaniem żądania, ale pozwala serwerowi proxy rozwiązywać DNS zamiast lokalnego przypinania DNS. Włącz tę opcję tylko wtedy, gdy serwer proxy jest kontrolowany przez operatora i egzekwuje zasady ruchu wychodzącego po rozwiązaniu DNS.

    Limity i bezpieczeństwo

    • maxChars jest ograniczane do tools.web.fetch.maxCharsCap (domyślnie 20000)
    • Treść odpowiedzi jest ograniczona do maxResponseBytes (domyślnie 750000, zakres 32000-10000000) przed analizą; zbyt duże odpowiedzi są przycinane z ostrzeżeniem
    • Prywatne/wewnętrzne nazwy hostów są blokowane
    • tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRange oraz tools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange to wąskie opcjonalne zgody przeznaczone dla zaufanych stosów proxy z fałszywymi adresami IP; pozostaw je nieustawione, chyba że serwer proxy zarządza tymi syntetycznymi zakresami i egzekwuje własne zasady dotyczące miejsc docelowych
    • Przekierowania są sprawdzane i ograniczane przez maxRedirects (domyślnie 3)
    • useTrustedEnvProxy wymaga jawnego włączenia i powinno być włączane wyłącznie dla serwerów proxy kontrolowanych przez operatora, które nadal egzekwują zasady ruchu wychodzącego po rozwiązaniu DNS
    • web_fetch działa w miarę możliwości — niektóre witryny wymagają przeglądarki internetowej

    Profile narzędzi

    Jeśli używasz profili narzędzi lub list dozwolonych elementów, dodaj web_fetch albo group:web:

    json5
    {  tools: {    allow: ["web_fetch"],    // albo: allow: ["group:web"]  (obejmuje web_fetch, web_search oraz x_search)  },}

    Powiązane

    Was this useful?
    On this page

    On this page