openclaw browser,
dan pola skrip (snapshot, ref, penantian, alur debug).
API Kontrol (opsional)
Hanya untuk integrasi lokal, Gateway mengekspos API HTTP loopback kecil. Server mandiri ini bersifat opsional — atur variabel lingkunganOPENCLAW_EAGER_BROWSER_CONTROL_SERVER=1 di lingkungan layanan gateway
dan mulai ulang gateway sebelum endpoint HTTP tersedia. Tanpa
variabel ini, runtime kontrol peramban tetap bekerja melalui CLI dan
alat agen, tetapi tidak ada yang mendengarkan pada port kontrol loopback.
- Status/mulai/berhenti:
GET /,POST /start,POST /stop - Tab:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - Snapshot/tangkapan layar:
GET /snapshot,POST /screenshot - Tindakan:
POST /navigate,POST /act - Hook:
POST /hooks/file-chooser,POST /hooks/dialog - Unduhan:
POST /download,POST /wait/download - Izin:
POST /permissions/grant - Debug:
GET /console,POST /pdf - Debug:
GET /errors,GET /requests,POST /trace/start,POST /trace/stop,POST /highlight - Jaringan:
POST /response/body - Status:
GET /cookies,POST /cookies/set,POST /cookies/clear - Status:
GET /storage/:kind,POST /storage/:kind/set,POST /storage/:kind/clear - Pengaturan:
POST /set/offline,POST /set/headers,POST /set/credentials,POST /set/geolocation,POST /set/media,POST /set/timezone,POST /set/locale,POST /set/device
?profile=<name>. POST /start?headless=true meminta
peluncuran headless satu kali untuk profil lokal terkelola tanpa mengubah
konfigurasi peramban yang dipersistenkan; profil attach-only, CDP jarak jauh,
dan existing-session menolak override itu karena OpenClaw tidak meluncurkan
proses peramban tersebut.
Untuk endpoint tab, targetId adalah nama bidang kompatibilitas. Utamakan
meneruskan suggestedTargetId dari GET /tabs atau POST /tabs/open; label
dan handle tabId seperti t1 juga diterima. ID target CDP mentah dan prefiks
ID target mentah yang unik tetap berfungsi, tetapi itu adalah handle diagnostik
yang volatil.
Jika autentikasi gateway dengan rahasia bersama dikonfigurasi, rute HTTP peramban juga memerlukan autentikasi:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>atau autentikasi HTTP Basic dengan kata sandi tersebut
- API peramban loopback mandiri ini tidak memakai header identitas trusted-proxy atau Tailscale Serve.
- Jika
gateway.auth.modeadalahnoneatautrusted-proxy, rute peramban loopback ini tidak mewarisi mode yang membawa identitas tersebut; pertahankan agar hanya loopback.
Kontrak error /act
POST /act menggunakan respons error terstruktur untuk validasi tingkat rute dan
kegagalan kebijakan:
code saat ini:
ACT_KIND_REQUIRED(HTTP 400):kindhilang atau tidak dikenali.ACT_INVALID_REQUEST(HTTP 400): payload tindakan gagal dinormalisasi atau divalidasi.ACT_SELECTOR_UNSUPPORTED(HTTP 400):selectordigunakan dengan jenis tindakan yang tidak didukung.ACT_EVALUATE_DISABLED(HTTP 403):evaluate(atauwait --fn) dinonaktifkan oleh konfigurasi.ACT_TARGET_ID_MISMATCH(HTTP 403):targetIdtingkat atas atau batch bertentangan dengan target permintaan.ACT_EXISTING_SESSION_UNSUPPORTED(HTTP 501): tindakan tidak didukung untuk profil existing-session.
{ "error": "<message>" } tanpa
bidang code.
Persyaratan Playwright
Beberapa fitur (navigasi/tindakan/snapshot AI/snapshot peran, tangkapan layar elemen, PDF) memerlukan Playwright. Jika Playwright tidak terpasang, endpoint tersebut mengembalikan error 501 yang jelas. Yang tetap berfungsi tanpa Playwright:- Snapshot ARIA
- Snapshot aksesibilitas bergaya peran (
--interactive,--compact,--depth,--efficient) saat WebSocket CDP per tab tersedia. Ini adalah fallback untuk inspeksi dan penemuan ref; Playwright tetap menjadi mesin tindakan utama. - Tangkapan layar halaman untuk peramban
openclawterkelola saat WebSocket CDP per tab tersedia - Tangkapan layar halaman untuk profil
existing-session/ Chrome MCP - Tangkapan layar berbasis ref
existing-session(--ref) dari output snapshot
navigateact- Snapshot AI yang bergantung pada format snapshot AI native Playwright
- Tangkapan layar elemen selector CSS (
--element) - ekspor PDF peramban penuh
--full-page; rute mengembalikan fullPage is not supported for element screenshots.
Jika Anda melihat Playwright is not available in this gateway build, Gateway
terpaket kehilangan dependensi runtime peramban inti. Pasang ulang atau perbarui
OpenClaw, lalu mulai ulang gateway. Untuk Docker, pasang juga binari peramban
Chromium seperti ditunjukkan di bawah.
Instalasi Playwright Docker
Jika Gateway Anda berjalan di Docker, hindarinpx playwright (konflik override npm).
Untuk image kustom, masukkan Chromium ke dalam image:
PLAYWRIGHT_BROWSERS_PATH (misalnya,
/home/node/.cache/ms-playwright) dan pastikan /home/node dipersistenkan melalui
OPENCLAW_HOME_VOLUME atau bind mount. OpenClaw mendeteksi Chromium yang dipersistenkan
secara otomatis di Linux. Lihat Docker.
Cara kerjanya (internal)
Server kontrol loopback kecil menerima permintaan HTTP dan terhubung ke peramban berbasis Chromium melalui CDP. Tindakan lanjutan (klik/ketik/snapshot/PDF) berjalan melalui Playwright di atas CDP; saat Playwright tidak ada, hanya operasi non-Playwright yang tersedia. Agen melihat satu antarmuka stabil sementara peramban dan profil lokal/jarak jauh dapat ditukar bebas di bawahnya.Referensi cepat CLI
Semua perintah menerima--browser-profile <name> untuk menargetkan profil tertentu, dan --json untuk output yang dapat dibaca mesin.
Dasar: status, tab, buka/fokus/tutup
Dasar: status, tab, buka/fokus/tutup
Inspeksi: tangkapan layar, snapshot, konsol, error, permintaan
Inspeksi: tangkapan layar, snapshot, konsol, error, permintaan
uploaddandialogadalah panggilan arming; jalankan keduanya sebelum klik/tekan yang memicu pemilih/dialog. Jika suatu tindakan membuka modal, respons tindakan menyertakanblockedByDialogdanbrowserState.dialogs.pending; teruskandialogIdtersebut untuk merespons langsung. Dialog yang ditangani di luar OpenClaw muncul di bawahbrowserState.dialogs.recent.click/type/dll. memerlukanrefdarisnapshot(numerik12, ref perane12, atau ref ARIA yang dapat ditindaklanjutiax12). Selector CSS sengaja tidak didukung untuk tindakan. Gunakanclick-coordssaat posisi viewport yang terlihat adalah satu-satunya target yang andal.- Jalur unduhan dan trace dibatasi ke root temp OpenClaw:
/tmp/openclaw{,/downloads}(fallback:${os.tmpdir()}/openclaw/...). uploadmenerima file dari root unggahan temp OpenClaw dan media masuk yang dikelola OpenClaw. Media masuk terkelola dapat dirujuk sebagaimedia://inbound/<id>,media/inbound/<id>yang relatif terhadap sandbox, atau jalur yang di-resolve di dalam direktori media masuk terkelola. Ref media bertingkat, traversal, symlink, hardlink, dan jalur lokal arbitrer tetap ditolak.uploadjuga dapat mengatur input file secara langsung melalui--input-refatau--element.
suggestedTargetId dari tabs dalam skrip.
Sekilas flag snapshot:
--format ai(bawaan dengan Playwright): snapshot AI dengan ref numerik (aria-ref="<n>").--format aria: pohon aksesibilitas dengan refaxN. Saat Playwright tersedia, OpenClaw mengikat ref dengan ID DOM backend ke halaman live agar tindakan lanjutan dapat menggunakannya; jika tidak, perlakukan output sebagai hanya untuk inspeksi.--efficient(atau--mode efficient): preset snapshot peran ringkas. Aturbrowser.snapshotDefaults.mode: "efficient"untuk menjadikannya bawaan (lihat konfigurasi Gateway).--interactive,--compact,--depth,--selectormemaksa snapshot peran dengan refref=e12.--frame "<iframe>"membatasi cakupan snapshot peran ke sebuah iframe.- Dengan Playwright,
--labelsmenambahkan screenshot dengan label ref yang ditumpangkan (mencetakMEDIA:<path>) plus arrayannotationsdengan kotak pembatas setiap ref. Padascreenshot, label berbasis Playwright bekerja dengan--full-page,--ref, dan--element; padasnapshot, screenshot pendamping tetap hanya viewport. Profil existing-session/chrome-mcp merender label overlay pada screenshot halaman tetapi tidak mengembalikanannotationsatau menggunakan helper proyeksi full-page/ref/element Playwright. Tanpa Playwright atau chrome-mcp, screenshot berlabel tidak tersedia. --urlsmenambahkan tujuan tautan yang ditemukan ke snapshot AI.
Snapshot dan ref
OpenClaw mendukung dua gaya “snapshot”:-
Snapshot AI (ref numerik):
openclaw browser snapshot(bawaan;--format ai)- Output: snapshot teks yang menyertakan ref numerik.
- Tindakan:
openclaw browser click 12,openclaw browser type 23 "hello". - Secara internal, ref diselesaikan melalui
aria-refPlaywright.
-
Snapshot peran (ref peran seperti
e12):openclaw browser snapshot --interactive(atau--compact,--depth,--selector,--frame)- Output: daftar/pohon berbasis peran dengan
[ref=e12](dan opsional[nth=1]). - Tindakan:
openclaw browser click e12,openclaw browser highlight e12. - Secara internal, ref diselesaikan melalui
getByRole(...)(plusnth()untuk duplikat). - Tambahkan
--labelsuntuk menyertakan screenshot dengan labele12yang ditumpangkan. Pada profil berbasis Playwright, ini juga mengembalikan metadata kotak pembatas per ref (annotations[]). - Tambahkan
--urlsketika teks tautan ambigu dan agen memerlukan target navigasi yang konkret.
- Output: daftar/pohon berbasis peran dengan
-
Snapshot ARIA (ref ARIA seperti
ax12):openclaw browser snapshot --format aria- Output: pohon aksesibilitas sebagai node terstruktur.
- Tindakan:
openclaw browser click ax12bekerja saat jalur snapshot dapat mengikat ref melalui Playwright dan ID DOM backend Chrome.
-
Jika Playwright tidak tersedia, snapshot ARIA masih dapat berguna untuk
inspeksi, tetapi ref mungkin tidak dapat ditindaklanjuti. Ambil snapshot ulang dengan
--format aiatau--interactivesaat Anda memerlukan ref tindakan. -
Bukti Docker untuk jalur fallback raw-CDP:
pnpm test:docker:browser-cdp-snapshotmemulai Chromium dengan CDP, menjalankanbrowser doctor --deep, dan memverifikasi snapshot peran menyertakan URL tautan, elemen dapat diklik yang dinaikkan dari kursor, dan metadata iframe.
- Ref tidak stabil di antara navigasi; jika sesuatu gagal, jalankan ulang
snapshotdan gunakan ref baru. /actmengembalikantargetIdmentah saat ini setelah penggantian yang dipicu tindakan saat dapat membuktikan tab pengganti. Tetap gunakan ID/label tab stabil untuk perintah lanjutan.- Jika snapshot peran diambil dengan
--frame, ref peran dicakup ke iframe tersebut hingga snapshot peran berikutnya. - Ref
axNyang tidak dikenal atau usang gagal cepat alih-alih jatuh ke selectoraria-refPlaywright. Jalankan snapshot baru pada tab yang sama saat itu terjadi.
Peningkatan wait
Anda dapat menunggu lebih dari sekadar waktu/teks:- Tunggu URL (glob didukung oleh Playwright):
openclaw browser wait --url "**/dash"
- Tunggu status muat:
openclaw browser wait --load networkidle- Didukung pada profil
openclawterkelola dan profil CDP raw/remote. Profiluserdanexisting-sessionmenolaknetworkidle; gunakan wait--url,--text, selector, atau--fndi sana.
- Tunggu predikat JS:
openclaw browser wait --fn "window.ready===true"
- Tunggu selector menjadi terlihat:
openclaw browser wait "#main"
Alur kerja debug
Saat tindakan gagal (misalnya “not visible”, “strict mode violation”, “covered”):openclaw browser snapshot --interactive- Gunakan
click <ref>/type <ref>(utamakan ref peran dalam mode interaktif) - Jika masih gagal:
openclaw browser highlight <ref>untuk melihat apa yang ditargetkan Playwright - Jika halaman berperilaku aneh:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- Untuk debug mendalam: rekam trace:
openclaw browser trace start- reproduksi masalah
openclaw browser trace stop(mencetakTRACE:<path>)
Output JSON
--json ditujukan untuk scripting dan tooling terstruktur.
Contoh:
refs plus blok stats kecil (lines/chars/refs/interactive) agar tool dapat menalar ukuran dan kepadatan payload.
Kenop status dan lingkungan
Ini berguna untuk alur kerja “buat situs berperilaku seperti X”:- Cookie:
cookies,cookies set,cookies clear - Storage:
storage local|session get|set|clear - Offline:
set offline on|off - Header:
set headers --headers-json '{"X-Debug":"1"}'(legacyset headers --json '{"X-Debug":"1"}'tetap didukung) - Autentikasi dasar HTTP:
set credentials user pass(atau--clear) - Geolokasi:
set geo <lat> <lon> --origin "https://example.com"(atau--clear) - Media:
set media dark|light|no-preference|none - Zona waktu / locale:
set timezone ...,set locale ... - Perangkat / viewport:
set device "iPhone 14"(preset perangkat Playwright)set viewport 1280 720
Keamanan dan privasi
- Profil browser openclaw dapat berisi sesi yang sudah login; perlakukan sebagai sensitif.
browser act kind=evaluate/openclaw browser evaluatedanwait --fnmengeksekusi JavaScript arbitrer dalam konteks halaman. Prompt injection dapat mengarahkan ini. Nonaktifkan denganbrowser.evaluateEnabled=falsejika Anda tidak membutuhkannya.openclaw browser evaluate --fnmenerima sumber fungsi, ekspresi, atau body statement. Body statement dibungkus sebagai fungsi async, jadi gunakanreturnuntuk nilai yang ingin Anda dapatkan kembali. Gunakan--timeout-ms <ms>saat fungsi sisi halaman mungkin membutuhkan waktu lebih lama daripada timeout evaluate bawaan.- Untuk catatan login dan anti-bot (X/Twitter, dll.), lihat Login browser + posting X/Twitter.
- Jaga host Gateway/node tetap privat (loopback atau khusus tailnet).
- Endpoint CDP remote sangat kuat; tunnel dan lindungi endpoint tersebut.
Terkait
- Browser - ikhtisar, konfigurasi, profil, keamanan
- Login browser - masuk ke situs
- Pemecahan masalah Browser Linux
- Pemecahan masalah Browser WSL2