---
read_when:
    - Anda ingin mengambil URL dan mengekstrak konten yang dapat dibaca
    - Anda perlu mengonfigurasi web_fetch atau mekanisme cadangan Firecrawl-nya
    - Anda ingin memahami batasan web_fetch dan penyimpanan cache
sidebarTitle: Web Fetch
summary: web_fetch tool -- pengambilan HTTP dengan ekstraksi konten yang dapat dibaca
title: Pengambilan web
x-i18n:
    generated_at: "2026-05-06T18:01:00Z"
    model: gpt-5.5
    provider: openai
    source_hash: 337174898861db217bf0db052d8e8749989c295e89c73d9d5a6911f6335ba03d
    source_path: tools/web-fetch.md
    workflow: 16
---

Alat `web_fetch` melakukan HTTP GET biasa dan mengekstrak konten yang dapat dibaca
(HTML ke markdown atau teks). Alat ini **tidak** menjalankan JavaScript.

Untuk situs yang sangat bergantung pada JS atau halaman yang dilindungi login, gunakan
[Peramban Web](/id/tools/browser) sebagai gantinya.

## Mulai cepat

`web_fetch` **diaktifkan secara default** -- tidak perlu konfigurasi. Agent dapat
memanggilnya langsung:

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

## Parameter alat

<ParamField path="url" type="string" required>
URL yang akan diambil. Hanya `http(s)`.
</ParamField>

<ParamField path="extractMode" type="'markdown' | 'text'" default="markdown">
Format keluaran setelah ekstraksi konten utama.
</ParamField>

<ParamField path="maxChars" type="number">
Potong keluaran hingga sebanyak karakter ini.
</ParamField>

## Cara kerjanya

<Steps>
  <Step title="Fetch">
    Mengirim HTTP GET dengan User-Agent mirip Chrome dan header
    `Accept-Language`. Memblokir hostname privat/internal dan memeriksa ulang pengalihan.
  </Step>
  <Step title="Extract">
    Menjalankan Readability (ekstraksi konten utama) pada respons HTML.
  </Step>
  <Step title="Fallback (optional)">
    Jika Readability gagal dan Firecrawl dikonfigurasi, mencoba ulang melalui
    API Firecrawl dengan mode pengelakan bot.
  </Step>
  <Step title="Cache">
    Hasil di-cache selama 15 menit (dapat dikonfigurasi) untuk mengurangi
    pengambilan berulang URL yang sama.
  </Step>
</Steps>

## Konfigurasi

```json5
{
  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

Jika ekstraksi Readability gagal, `web_fetch` dapat menggunakan fallback ke
[Firecrawl](/id/tools/firecrawl) untuk pengelakan bot dan ekstraksi yang lebih baik:

```json5
{
  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` mendukung objek SecretRef.
Konfigurasi legacy `tools.web.fetch.firecrawl.*` dimigrasikan otomatis oleh `openclaw doctor --fix`.

<Note>
  Jika Firecrawl diaktifkan dan SecretRef-nya tidak terselesaikan tanpa fallback env
  `FIRECRAWL_API_KEY`, startup gateway gagal dengan cepat.
</Note>

<Note>
  Override `baseUrl` Firecrawl dikunci ketat: lalu lintas hosted menggunakan
  `https://api.firecrawl.dev`; override self-hosted harus menargetkan endpoint privat atau
  internal, dan `http://` hanya diterima untuk target privat tersebut.
</Note>

Perilaku runtime saat ini:

- `tools.web.fetch.provider` memilih penyedia fallback pengambilan secara eksplisit.
- Jika `provider` dihilangkan, OpenClaw mendeteksi otomatis penyedia web-fetch
  pertama yang siap dari kredensial yang tersedia. `web_fetch` non-sandbox dapat menggunakan
  plugin terpasang yang mendeklarasikan `contracts.webFetchProviders` dan mendaftarkan
  penyedia yang cocok pada runtime. Saat ini penyedia bawaan adalah Firecrawl.
- Panggilan `web_fetch` yang di-sandbox tetap terbatas pada penyedia bawaan.
- Jika Readability dinonaktifkan, `web_fetch` langsung melewati ke fallback
  penyedia yang dipilih. Jika tidak ada penyedia yang tersedia, alat ini gagal secara tertutup.

## Proxy env tepercaya

Jika deployment Anda mengharuskan `web_fetch` melewati proxy HTTP(S) keluar
yang tepercaya, setel `tools.web.fetch.useTrustedEnvProxy: true`.

Dalam mode ini, OpenClaw tetap menerapkan pemeriksaan SSRF berbasis hostname sebelum mengirim
permintaan, tetapi membiarkan proxy menyelesaikan DNS alih-alih melakukan pinning DNS
lokal. Aktifkan ini hanya ketika proxy dikendalikan operator dan memberlakukan
kebijakan keluar setelah resolusi DNS.

<Note>
  Jika tidak ada variabel env proxy HTTP(S) yang dikonfigurasi, atau host target dikecualikan oleh
  `NO_PROXY`, `web_fetch` menggunakan fallback ke jalur ketat normal dengan pinning DNS
  lokal.
</Note>

## Batasan dan keamanan

- `maxChars` dibatasi ke `tools.web.fetch.maxCharsCap`
- Body respons dibatasi pada `maxResponseBytes` sebelum parsing; respons yang terlalu besar
  dipotong dengan peringatan
- Hostname privat/internal diblokir
- `tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRange` dan
  `tools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange` adalah opt-in sempit
  untuk stack proxy fake-IP tepercaya; biarkan tidak disetel kecuali proxy Anda memiliki
  rentang sintetis tersebut dan memberlakukan kebijakan tujuannya sendiri
- Pengalihan diperiksa dan dibatasi oleh `maxRedirects`
- `useTrustedEnvProxy` adalah opt-in eksplisit dan sebaiknya hanya diaktifkan untuk
  proxy yang dikendalikan operator yang tetap memberlakukan kebijakan keluar setelah resolusi
  DNS
- `web_fetch` bersifat best-effort -- beberapa situs memerlukan [Peramban Web](/id/tools/browser)

## Profil alat

Jika Anda menggunakan profil alat atau allowlist, tambahkan `web_fetch` atau `group:web`:

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

## Terkait

- [Pencarian Web](/id/tools/web) -- cari di web dengan beberapa penyedia
- [Peramban Web](/id/tools/browser) -- automasi browser penuh untuk situs yang sangat bergantung pada JS
- [Firecrawl](/id/tools/firecrawl) -- alat pencarian dan scrape Firecrawl
