Tools
Pengambilan web
web_fetch melakukan HTTP GET biasa dan mengekstrak konten yang dapat dibaca (HTML menjadi
markdown atau teks). Ini tidak menjalankan JavaScript. Untuk situs yang sangat bergantung pada JS atau
halaman yang dilindungi login, gunakan Browser Web sebagai gantinya.
Mulai cepat
Diaktifkan secara default, tidak memerlukan konfigurasi:
await web_fetch({ url: "https://example.com/article" });Parameter alat
urlstringrequiredURL yang akan diambil. Hanya http(s).
extractMode'markdown' | 'text'default: markdownFormat keluaran setelah ekstraksi konten utama.
maxCharsnumberPangkas keluaran hingga sejumlah karakter ini. Dibatasi hingga tools.web.fetch.maxCharsCap.
Hasil
web_fetch mengembalikan hasil terstruktur tertutup dengan bidang-bidang berikut:
- Metadata permintaan:
url,finalUrl,status,extractMode, danextractor - Metadata respons opsional:
contentType,title, danwarning(dihilangkan jika tidak ada) - Metadata konten terbungkus:
externalContent,truncated,length,rawLength,fetchedAt,tookMs, dantext cached: trueopsional saat cache ditemukanspill: { path, chars, truncated? }opsional ketika konten yang dipangkas ditulis ke berkas sementara privat;truncatedhanya tersedia ketika berkas tersebut berisi sebagian konten sumber
length adalah panjang text yang terbungkus. rawLength adalah panjang konten yang diekstrak
sebelum pembungkusan konten eksternal.
Cara kerjanya
Ambil
Mengirim HTTP GET dengan User-Agent menyerupai Chrome dan header Accept-Language.
Memblokir nama host privat/internal dan memeriksa ulang pengalihan.
Ekstrak
Menjalankan Readability (ekstraksi konten utama) pada respons HTML.
Fallback (opsional)
Jika Readability gagal dan penyedia pengambilan tersedia, mencoba kembali melalui penyedia tersebut (misalnya mode pengelakan bot Firecrawl).
Cache
Hasil disimpan dalam cache selama 15 menit (dapat dikonfigurasi) untuk mengurangi pengambilan berulang URL yang sama.
Pembaruan progres
web_fetch memancarkan baris progres publik hanya ketika pengambilan masih tertunda
setelah lima detik:
Mengambil konten halaman...Cache yang ditemukan dengan cepat dan respons jaringan yang cepat selesai sebelum pewaktu terpicu, sehingga tidak pernah menampilkan baris progres. Membatalkan panggilan akan menghapus pewaktu. Baris progres hanyalah status UI kanal dan tidak pernah memuat konten halaman yang diambil.
Konfigurasi
{ tools: { web: { fetch: { enabled: true, // default: true provider: "firecrawl", // opsional; hilangkan untuk deteksi otomatis maxChars: 20000, // karakter keluaran default; dibatasi oleh maxCharsCap maxCharsCap: 20000, // batas mutlak untuk parameter maxChars maxResponseBytes: 750000, // ukuran unduhan maksimum sebelum pemangkasan (32000-10000000) timeoutSeconds: 30, cacheTtlMinutes: 15, maxRedirects: 3, useTrustedEnvProxy: false, // izinkan proksi lingkungan HTTP(S) tepercaya menyelesaikan DNS readability: true, // gunakan ekstraksi Readability userAgent: "Mozilla/5.0 ...", // timpa User-Agent ssrfPolicy: { allowRfc2544BenchmarkRange: true, // pilihan eksplisit untuk proksi IP palsu tepercaya yang menggunakan 198.18.0.0/15 allowIpv6UniqueLocalRange: true, // pilihan eksplisit untuk proksi IP palsu tepercaya yang menggunakan fc00::/7 }, }, }, },}Fallback Firecrawl
Jika ekstraksi Readability gagal, web_fetch dapat menggunakan
Firecrawl sebagai fallback untuk pengelakan bot dan ekstraksi yang lebih baik:
{ tools: { web: { fetch: { provider: "firecrawl", // opsional; hilangkan untuk deteksi otomatis dari kredensial yang tersedia }, }, }, plugins: { entries: { firecrawl: { enabled: true, config: { webFetch: { // apiKey: "fc-...", // opsional; hilangkan untuk akses awal tanpa kunci baseUrl: "https://api.firecrawl.dev", onlyMainContent: true, maxAgeMs: 172800000, // durasi cache (2 hari) timeoutSeconds: 60, }, }, }, }, },}plugins.entries.firecrawl.config.webFetch.apiKey bersifat opsional dan mendukung objek SecretRef.
Konfigurasi lama tools.web.fetch.firecrawl.* dimigrasikan otomatis ke
plugins.entries.firecrawl.config.webFetch melalui openclaw doctor --fix.
Perilaku runtime saat ini:
tools.web.fetch.providermemilih penyedia fallback pengambilan secara eksplisit.- Jika
providerdihilangkan, OpenClaw secara otomatis mendeteksi penyedia pengambilan web siap pakai pertama dari kredensial yang dikonfigurasi.web_fetchtanpa sandbox dapat menggunakan plugin terinstal yang mendeklarasikancontracts.webFetchProvidersdan mendaftarkan penyedia yang cocok saat runtime. Plugin Firecrawl resmi menyediakan fallback ini saat ini. - Panggilan
web_fetchdalam sandbox mengizinkan penyedia bawaan serta penyedia terinstal yang asal resmi npm atau ClawHub-nya telah diverifikasi. Saat ini, ini mengizinkan plugin Firecrawl resmi; plugin pengambilan eksternal pihak ketiga tetap dikecualikan. - Jika Readability dinonaktifkan,
web_fetchlangsung beralih ke fallback penyedia yang dipilih. Jika tidak ada penyedia yang tersedia, operasi gagal secara tertutup.
Proksi lingkungan tepercaya
Jika deployment Anda mengharuskan web_fetch melalui proksi HTTP(S)
keluar yang tepercaya, tetapkan tools.web.fetch.useTrustedEnvProxy: true.
Dalam mode ini, OpenClaw tetap menerapkan pemeriksaan SSRF berbasis nama host sebelum mengirim permintaan, tetapi mengizinkan proksi menyelesaikan DNS alih-alih melakukan penyematan DNS lokal. Aktifkan ini hanya jika proksi dikendalikan operator dan memberlakukan kebijakan keluar setelah resolusi DNS.
Batas dan keamanan
maxCharsdibatasi hinggatools.web.fetch.maxCharsCap(default20000)- Isi respons dibatasi hingga
maxResponseBytes(default750000, dibatasi dalam rentang 32000-10000000) sebelum penguraian; respons yang terlalu besar dipangkas dengan peringatan - Nama host privat/internal diblokir
tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRangedantools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRangeadalah pilihan eksplisit terbatas untuk tumpukan proksi IP palsu tepercaya; biarkan tidak ditetapkan kecuali proksi Anda memiliki rentang sintetis tersebut dan memberlakukan kebijakan tujuannya sendiri- Pengalihan diperiksa dan dibatasi oleh
maxRedirects(default3) useTrustedEnvProxyadalah pilihan eksplisit dan hanya boleh diaktifkan untuk proksi yang dikendalikan operator yang tetap memberlakukan kebijakan keluar setelah resolusi DNSweb_fetchbersifat upaya terbaik -- beberapa situs memerlukan Browser Web
Profil alat
Jika Anda menggunakan profil alat atau daftar izin, tambahkan web_fetch atau group:web:
{ tools: { allow: ["web_fetch"], // atau: allow: ["group:web"] (mencakup web_fetch, web_search, dan x_search) },}Terkait
- Pencarian Web -- cari web dengan beberapa penyedia
- Browser Web -- otomatisasi browser lengkap untuk situs yang sangat bergantung pada JS
- Firecrawl -- alat pencarian dan scraping Firecrawl