Browser (dikelola openclaw)
OpenClaw dapat menjalankan profil Chrome/Brave/Edge/Chromium khusus yang dikendalikan agen. Profil ini terisolasi dari browser pribadi Anda dan dikelola melalui layanan kontrol lokal kecil di dalam Gateway (hanya loopback). Tampilan pemula:- Anggap ini sebagai browser terpisah yang hanya untuk agen.
- Profil
openclawtidak menyentuh profil browser pribadi Anda. - Agen dapat membuka tab, membaca halaman, mengeklik, dan mengetik di jalur yang aman.
- Profil bawaan
userterhubung ke sesi Chrome Anda yang nyata dan sudah login melalui Chrome MCP.
Yang Anda dapatkan
- Profil browser terpisah bernama openclaw (aksen oranye secara default).
- Kontrol tab deterministik (daftar/buka/fokus/tutup).
- Tindakan agen (klik/ketik/seret/pilih), snapshot, screenshot, PDF.
- Dukungan multi-profil opsional (
openclaw,work,remote, …).
Mulai cepat
openclaw browser benar-benar tidak ada, atau agen mengatakan tool browser
tidak tersedia, langsung ke Perintah atau tool browser hilang.
Kontrol Plugin
Toolbrowser default sekarang adalah Plugin bawaan yang dikirim dalam keadaan aktif
secara default. Artinya Anda dapat menonaktifkan atau menggantinya tanpa menghapus sisa
sistem Plugin OpenClaw:
browser yang sama. Pengalaman browser default memerlukan keduanya:
plugins.entries.browser.enabledtidak dinonaktifkanbrowser.enabled=true
openclaw browser),
metode gateway (browser.request), tool agen, dan layanan kontrol browser default
semuanya hilang sekaligus. Config browser.* Anda tetap utuh agar dapat digunakan kembali
oleh Plugin pengganti.
Plugin browser bawaan sekarang juga memiliki implementasi runtime browser.
Core hanya menyimpan helper Plugin SDK bersama ditambah re-export kompatibilitas untuk
path import internal lama. Dalam praktiknya, menghapus atau mengganti paket Plugin browser
akan menghapus rangkaian fitur browser alih-alih menyisakan runtime kedua milik core di belakangnya.
Perubahan config browser tetap memerlukan restart Gateway agar Plugin bawaan
dapat mendaftarkan ulang layanan browser-nya dengan pengaturan baru.
Perintah atau tool browser hilang
Jikaopenclaw browser tiba-tiba menjadi perintah yang tidak dikenal setelah upgrade, atau
agen melaporkan bahwa tool browser hilang, penyebab yang paling umum adalah
daftar plugins.allow yang ketat dan tidak menyertakan browser.
Contoh config yang rusak:
browser ke allowlist Plugin:
browser.enabled=truesaja tidak cukup saatplugins.allowdiatur.plugins.entries.browser.enabled=truesaja juga tidak cukup saatplugins.allowdiatur.tools.alsoAllow: ["browser"]tidak memuat Plugin browser bawaan. Itu hanya menyesuaikan kebijakan tool setelah Plugin sudah dimuat.- Jika Anda tidak memerlukan allowlist Plugin yang ketat, menghapus
plugins.allowjuga akan memulihkan perilaku browser bawaan default.
openclaw browseradalah perintah yang tidak dikenal.browser.requesttidak ada.- Agen melaporkan tool browser tidak tersedia atau hilang.
Profil: openclaw vs user
openclaw: browser terkelola dan terisolasi (tidak memerlukan ekstensi).user: profil attach Chrome MCP bawaan untuk sesi Chrome nyata Anda yang sudah login.
- Default: gunakan browser
openclawyang terisolasi. - Pilih
profile="user"saat sesi login yang sudah ada penting dan pengguna berada di depan komputer untuk mengklik/menyetujui prompt attach apa pun. profileadalah override eksplisit saat Anda menginginkan mode browser tertentu.
browser.defaultProfile: "openclaw" jika Anda ingin mode terkelola sebagai default.
Konfigurasi
Pengaturan browser berada di~/.openclaw/openclaw.json.
- Layanan kontrol browser bind ke loopback pada port yang diturunkan dari
gateway.port(default:18791, yaitu gateway + 2). - Jika Anda meng-override port Gateway (
gateway.portatauOPENCLAW_GATEWAY_PORT), port browser turunan akan bergeser agar tetap berada dalam “keluarga” yang sama. cdpUrlsecara default menggunakan port CDP lokal terkelola saat tidak diatur.remoteCdpTimeoutMsberlaku untuk pemeriksaan keterjangkauan CDP jarak jauh (non-loopback).remoteCdpHandshakeTimeoutMsberlaku untuk pemeriksaan keterjangkauan WebSocket CDP jarak jauh.- Navigasi/buka-tab browser dilindungi SSRF sebelum navigasi dan diperiksa ulang sebisa mungkin pada URL akhir
http(s)setelah navigasi. - Dalam mode SSRF ketat, discovery/probe endpoint CDP jarak jauh (
cdpUrl, termasuk lookup/json/version) juga diperiksa. browser.ssrfPolicy.dangerouslyAllowPrivateNetworknonaktif secara default. Set ketruehanya saat Anda memang mempercayai akses browser jaringan privat.browser.ssrfPolicy.allowPrivateNetworktetap didukung sebagai alias lama untuk kompatibilitas.attachOnly: trueberarti “jangan pernah meluncurkan browser lokal; hanya attach jika browser itu sudah berjalan.”color+colorper profil memberi warna pada UI browser agar Anda dapat melihat profil mana yang aktif.- Profil default adalah
openclaw(browser mandiri yang dikelola OpenClaw). GunakandefaultProfile: "user"untuk memilih browser pengguna yang sudah login. - Urutan deteksi otomatis: browser default sistem jika berbasis Chromium; jika tidak maka Chrome → Brave → Edge → Chromium → Chrome Canary.
- Profil
openclawlokal otomatis menetapkancdpPort/cdpUrl— set itu hanya untuk CDP jarak jauh. driver: "existing-session"menggunakan Chrome DevTools MCP alih-alih CDP mentah. Jangan setcdpUrluntuk driver tersebut.- Set
browser.profiles.<name>.userDataDirsaat profil existing-session harus attach ke profil pengguna Chromium non-default seperti Brave atau Edge.
Gunakan Brave (atau browser berbasis Chromium lain)
Jika browser default sistem Anda berbasis Chromium (Chrome/Brave/Edge/dll), OpenClaw menggunakannya secara otomatis. Setbrowser.executablePath untuk meng-override
deteksi otomatis:
Contoh CLI:
Kontrol lokal vs jarak jauh
- Kontrol lokal (default): Gateway memulai layanan kontrol loopback dan dapat meluncurkan browser lokal.
- Kontrol jarak jauh (host node): jalankan host node di mesin yang memiliki browser; Gateway mem-proxy tindakan browser ke host itu.
- CDP jarak jauh: set
browser.profiles.<name>.cdpUrl(ataubrowser.cdpUrl) untuk attach ke browser berbasis Chromium jarak jauh. Dalam kasus ini, OpenClaw tidak akan meluncurkan browser lokal.
- profil terkelola lokal:
openclaw browser stopmenghentikan proses browser yang diluncurkan OpenClaw - profil attach-only dan CDP jarak jauh:
openclaw browser stopmenutup sesi kontrol aktif dan melepaskan override emulasi Playwright/CDP (viewport, skema warna, locale, zona waktu, mode offline, dan state serupa), meskipun tidak ada proses browser yang diluncurkan oleh OpenClaw
- Token kueri (misalnya
https://provider.example?token=<token>) - HTTP Basic auth (misalnya
https://user:pass@provider.example)
/json/* dan saat terhubung
ke WebSocket CDP. Lebih baik gunakan environment variable atau secrets manager untuk
token daripada meng-commit-nya ke file config.
Proxy browser Node (default tanpa config)
Jika Anda menjalankan host node pada mesin yang memiliki browser Anda, OpenClaw dapat secara otomatis merutekan pemanggilan tool browser ke node itu tanpa config browser tambahan. Ini adalah jalur default untuk gateway jarak jauh. Catatan:- Host node mengekspos server kontrol browser lokalnya melalui perintah proxy.
- Profil berasal dari config
browser.profilesmilik node itu sendiri (sama seperti lokal). nodeHost.browserProxy.allowProfilesbersifat opsional. Biarkan kosong untuk perilaku lama/default: semua profil yang dikonfigurasi tetap dapat dijangkau melalui proxy, termasuk route buat/hapus profil.- Jika Anda set
nodeHost.browserProxy.allowProfiles, OpenClaw memperlakukannya sebagai batas least-privilege: hanya profil dalam allowlist yang dapat ditargetkan, dan route buat/hapus profil persisten diblokir pada permukaan proxy. - Nonaktifkan jika Anda tidak menginginkannya:
- Pada node:
nodeHost.browserProxy.enabled=false - Pada gateway:
gateway.nodes.browser.mode="off"
- Pada node:
Browserless (CDP jarak jauh yang di-host)
Browserless adalah layanan Chromium yang di-host dan mengekspos URL koneksi CDP melalui HTTPS dan WebSocket. OpenClaw dapat menggunakan keduanya, tetapi untuk profil browser jarak jauh opsi yang paling sederhana adalah URL WebSocket langsung dari dokumen koneksi Browserless. Contoh:- Ganti
<BROWSERLESS_API_KEY>dengan token Browserless nyata Anda. - Pilih endpoint region yang sesuai dengan akun Browserless Anda (lihat dokumen mereka).
- Jika Browserless memberi Anda URL dasar HTTPS, Anda dapat mengubahnya ke
wss://untuk koneksi CDP langsung atau tetap menggunakan URL HTTPS dan membiarkan OpenClaw menemukan/json/version.
Provider CDP WebSocket langsung
Beberapa layanan browser yang di-host mengekspos endpoint WebSocket langsung alih-alih discovery CDP berbasis HTTP standar (/json/version). OpenClaw menerima tiga
bentuk URL CDP dan secara otomatis memilih strategi koneksi yang tepat:
- Discovery HTTP(S) —
http://host[:port]atauhttps://host[:port]. OpenClaw memanggil/json/versionuntuk menemukan URL debugger WebSocket, lalu terhubung. Tidak ada fallback WebSocket. - Endpoint WebSocket langsung —
ws://host[:port]/devtools/<kind>/<id>atauwss://...dengan path/devtools/browser|page|worker|shared_worker|service_worker/<id>. OpenClaw terhubung langsung melalui handshake WebSocket dan melewati/json/versionsepenuhnya. - Root WebSocket polos —
ws://host[:port]atauwss://host[:port]tanpa path/devtools/...(misalnya Browserless, Browserbase). OpenClaw mencoba discovery HTTP/json/versionterlebih dahulu (menormalkan skema kehttp/https); jika discovery mengembalikanwebSocketDebuggerUrl, URL itu digunakan, jika tidak OpenClaw akan fallback ke handshake WebSocket langsung pada root polos. Ini mencakup baik port debug jarak jauh gaya Chrome maupun provider yang hanya WebSocket.
ws://host:port / wss://host:port polos tanpa path /devtools/...
yang diarahkan ke instance Chrome lokal didukung melalui fallback
discovery-first — Chrome hanya menerima upgrade WebSocket pada path spesifik per-browser
atau per-target yang dikembalikan oleh /json/version, jadi handshake bare-root saja
akan gagal.
Browserbase
Browserbase adalah platform cloud untuk menjalankan browser headless dengan CAPTCHA solving bawaan, mode stealth, dan proxy residensial.- Daftar dan salin API Key Anda dari dasbor Overview.
- Ganti
<BROWSERBASE_API_KEY>dengan API key Browserbase Anda yang asli. - Browserbase otomatis membuat sesi browser saat koneksi WebSocket dibuat, jadi tidak diperlukan langkah pembuatan sesi manual.
- Tier gratis memungkinkan satu sesi bersamaan dan satu jam browser per bulan. Lihat pricing untuk batas paket berbayar.
- Lihat docs Browserbase untuk referensi API lengkap, panduan SDK, dan contoh integrasi.
Keamanan
Ide utama:- Kontrol browser hanya loopback; akses mengalir melalui auth Gateway atau pairing node.
- API HTTP browser loopback mandiri menggunakan hanya auth shared-secret:
bearer auth token gateway,
x-openclaw-password, atau HTTP Basic auth dengan password gateway yang dikonfigurasi. - Header identitas Tailscale Serve dan
gateway.auth.mode: "trusted-proxy"tidak mengautentikasi API browser loopback mandiri ini. - Jika kontrol browser diaktifkan dan tidak ada auth shared-secret yang dikonfigurasi, OpenClaw
otomatis menghasilkan
gateway.auth.tokensaat startup dan menyimpannya ke config. - OpenClaw tidak otomatis menghasilkan token itu ketika
gateway.auth.modesudahpassword,none, atautrusted-proxy. - Simpan Gateway dan host node apa pun di jaringan privat (Tailscale); hindari eksposur publik.
- Perlakukan URL/token CDP jarak jauh sebagai rahasia; lebih baik gunakan env var atau secrets manager.
- Jika memungkinkan, pilih endpoint terenkripsi (HTTPS atau WSS) dan token berumur pendek.
- Hindari menyematkan token berumur panjang langsung di file config.
Profil (multi-browser)
OpenClaw mendukung beberapa profil bernama (config perutean). Profil dapat berupa:- dikelola openclaw: instance browser berbasis Chromium khusus dengan direktori data pengguna + port CDP sendiri
- jarak jauh: URL CDP eksplisit (browser berbasis Chromium yang berjalan di tempat lain)
- sesi yang sudah ada: profil Chrome Anda yang sudah ada melalui auto-connect Chrome DevTools MCP
- Profil
openclawdibuat otomatis jika tidak ada. - Profil
useradalah bawaan untuk attach existing-session Chrome MCP. - Profil existing-session bersifat opt-in selain
user; buat dengan--driver existing-session. - Port CDP lokal dialokasikan dari 18800–18899 secara default.
- Menghapus profil akan memindahkan direktori data lokalnya ke Trash.
?profile=<name>; CLI menggunakan --browser-profile.
Existing-session melalui Chrome DevTools MCP
OpenClaw juga dapat attach ke profil browser berbasis Chromium yang sedang berjalan melalui server Chrome DevTools MCP resmi. Ini menggunakan kembali tab dan status login yang sudah terbuka di profil browser tersebut. Referensi latar belakang dan setup resmi: Profil bawaan:user
- Profil bawaan
usermenggunakan auto-connect Chrome MCP, yang menargetkan profil Google Chrome lokal default.
userDataDir untuk Brave, Edge, Chromium, atau profil Chrome non-default:
- Buka halaman inspect browser tersebut untuk remote debugging.
- Aktifkan remote debugging.
- Biarkan browser tetap berjalan dan setujui prompt koneksi saat OpenClaw attach.
- Chrome:
chrome://inspect/#remote-debugging - Brave:
brave://inspect/#remote-debugging - Edge:
edge://inspect/#remote-debugging
statusmenampilkandriver: existing-sessionstatusmenampilkantransport: chrome-mcpstatusmenampilkanrunning: truetabsmencantumkan tab browser Anda yang sudah terbukasnapshotmengembalikan ref dari tab live yang dipilih
- browser berbasis Chromium target memiliki versi
144+ - remote debugging diaktifkan di halaman inspect browser tersebut
- browser menampilkan prompt persetujuan attach dan Anda menerimanya
openclaw doctormemigrasikan config browser berbasis ekstensi lama dan memeriksa bahwa Chrome terpasang secara lokal untuk profil auto-connect default, tetapi tidak dapat mengaktifkan remote debugging di sisi browser untuk Anda
- Gunakan
profile="user"saat Anda memerlukan status browser pengguna yang sudah login. - Jika Anda menggunakan profil existing-session kustom, berikan nama profil eksplisit itu.
- Pilih mode ini hanya saat pengguna berada di depan komputer untuk menyetujui prompt attach.
- Gateway atau host node dapat menjalankan
npx chrome-devtools-mcp@latest --autoConnect
- Jalur ini berisiko lebih tinggi daripada profil
openclawyang terisolasi karena dapat bertindak di dalam sesi browser Anda yang sudah login. - OpenClaw tidak meluncurkan browser untuk driver ini; OpenClaw hanya attach ke sesi yang sudah ada.
- OpenClaw menggunakan alur resmi Chrome DevTools MCP
--autoConnectdi sini. JikauserDataDirdiatur, OpenClaw meneruskannya untuk menargetkan direktori data pengguna Chromium eksplisit tersebut. - Screenshot existing-session mendukung tangkapan halaman dan tangkapan elemen
--refdari snapshot, tetapi tidak mendukung selector CSS--element. - Screenshot halaman existing-session bekerja tanpa Playwright melalui Chrome MCP.
Screenshot elemen berbasis ref (
--ref) juga berfungsi di sana, tetapi--full-pagetidak dapat digabungkan dengan--refatau--element. - Tindakan existing-session masih lebih terbatas dibanding jalur browser
terkelola:
click,type,hover,scrollIntoView,drag, danselectmemerlukan ref snapshot alih-alih selector CSSclickhanya tombol kiri (tanpa override tombol atau modifier)typetidak mendukungslowly=true; gunakanfillataupresspresstidak mendukungdelayMshover,scrollIntoView,drag,select,fill, danevaluatetidak mendukung override timeout per panggilanselectsaat ini hanya mendukung satu nilai
- Existing-session
wait --urlmendukung pola exact, substring, dan glob seperti driver browser lainnya.wait --load networkidlebelum didukung. - Hook upload existing-session memerlukan
refatauinputRef, mendukung satu file sekali waktu, dan tidak mendukung penargetan CSSelement. - Hook dialog existing-session tidak mendukung override timeout.
- Beberapa fitur masih memerlukan jalur browser terkelola, termasuk batch
actions, ekspor PDF, intersepsi unduhan, dan
responsebody. - Existing-session dapat attach pada host yang dipilih atau melalui node browser yang terhubung. Jika Chrome berada di tempat lain dan tidak ada node browser yang terhubung, gunakan CDP jarak jauh atau host node sebagai gantinya.
Jaminan isolasi
- Direktori data pengguna khusus: tidak pernah menyentuh profil browser pribadi Anda.
- Port khusus: menghindari
9222untuk mencegah benturan dengan alur kerja pengembangan. - Kontrol tab deterministik: targetkan tab berdasarkan
targetId, bukan “tab terakhir”.
Pemilihan browser
Saat diluncurkan secara lokal, OpenClaw memilih yang pertama tersedia:- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
browser.executablePath.
Platform:
- macOS: memeriksa
/Applicationsdan~/Applications. - Linux: mencari
google-chrome,brave,microsoft-edge,chromium, dll. - Windows: memeriksa lokasi instalasi umum.
API kontrol (opsional)
Untuk integrasi lokal saja, Gateway mengekspos API HTTP loopback kecil:- Status/start/stop:
GET /,POST /start,POST /stop - Tab:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - Snapshot/screenshot:
GET /snapshot,POST /screenshot - Tindakan:
POST /navigate,POST /act - Hook:
POST /hooks/file-chooser,POST /hooks/dialog - Unduhan:
POST /download,POST /wait/download - Debugging:
GET /console,POST /pdf - Debugging:
GET /errors,GET /requests,POST /trace/start,POST /trace/stop,POST /highlight - Jaringan:
POST /response/body - State:
GET /cookies,POST /cookies/set,POST /cookies/clear - State:
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>.
Jika auth gateway shared-secret dikonfigurasi, route HTTP browser juga memerlukan auth:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>atau HTTP Basic auth dengan password tersebut
- API browser loopback mandiri ini tidak menggunakan trusted-proxy atau header identitas Tailscale Serve.
- Jika
gateway.auth.modeadalahnoneatautrusted-proxy, route browser loopback ini tidak mewarisi mode yang membawa identitas tersebut; tetap pertahankan hanya loopback.
Kontrak error /act
POST /act menggunakan respons error terstruktur untuk validasi tingkat route dan
kegagalan kebijakan:
code saat ini:
ACT_KIND_REQUIRED(HTTP 400):kindtidak ada 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 config.ACT_TARGET_ID_MISMATCH(HTTP 403):targetIdtingkat atas atau yang dibatch bertentangan dengan target request.ACT_EXISTING_SESSION_UNSUPPORTED(HTTP 501): tindakan tidak didukung untuk profil existing-session.
{ "error": "<message>" } tanpa
field code.
Persyaratan Playwright
Beberapa fitur (navigate/act/snapshot AI/role snapshot, screenshot elemen, PDF) memerlukan Playwright. Jika Playwright tidak terpasang, endpoint tersebut mengembalikan error 501 yang jelas. Yang masih berfungsi tanpa Playwright:- snapshot ARIA
- screenshot halaman untuk browser
openclawterkelola saat CDP WebSocket per-tab tersedia - screenshot halaman untuk profil
existing-session/ Chrome MCP - screenshot berbasis ref (
--ref) untukexisting-sessiondari output snapshot
navigateact- snapshot AI / role snapshot
- screenshot elemen selector CSS (
--element) - ekspor PDF browser penuh
--full-page; route mengembalikan fullPage is not supported for element screenshots.
Jika Anda melihat Playwright is not available in this gateway build, instal paket
Playwright penuh (bukan playwright-core) dan restart gateway, atau instal ulang
OpenClaw dengan dukungan browser.
Instalasi Playwright Docker
Jika Gateway Anda berjalan di Docker, hindarinpx playwright (konflik override npm).
Gunakan CLI bawaan sebagai gantinya:
PLAYWRIGHT_BROWSERS_PATH (misalnya,
/home/node/.cache/ms-playwright) dan pastikan /home/node dipertahankan melalui
OPENCLAW_HOME_VOLUME atau bind mount. Lihat Docker.
Cara kerjanya (internal)
Alur tingkat tinggi:- Server kontrol kecil menerima request HTTP.
- Server itu terhubung ke browser berbasis Chromium (Chrome/Brave/Edge/Chromium) melalui CDP.
- Untuk tindakan lanjutan (click/type/snapshot/PDF), server itu menggunakan Playwright di atas CDP.
- Saat Playwright tidak tersedia, hanya operasi non-Playwright yang tersedia.
Referensi cepat CLI
Semua perintah menerima--browser-profile <name> untuk menargetkan profil tertentu.
Semua perintah juga menerima --json untuk output yang dapat dibaca mesin (payload stabil).
Dasar:
openclaw browser statusopenclaw browser startopenclaw browser stopopenclaw browser tabsopenclaw browser tabopenclaw browser tab newopenclaw browser tab select 2openclaw browser tab close 2openclaw browser open https://example.comopenclaw browser focus abcd1234openclaw browser close abcd1234
openclaw browser screenshotopenclaw browser screenshot --full-pageopenclaw browser screenshot --ref 12openclaw browser screenshot --ref e12openclaw browser snapshotopenclaw browser snapshot --format aria --limit 200openclaw browser snapshot --interactive --compact --depth 6openclaw browser snapshot --efficientopenclaw browser snapshot --labelsopenclaw browser snapshot --selector "#main" --interactiveopenclaw browser snapshot --frame "iframe#main" --interactiveopenclaw browser console --level error
- Untuk profil attach-only dan CDP jarak jauh,
openclaw browser stoptetap merupakan perintah pembersihan yang tepat setelah pengujian. Perintah ini menutup sesi kontrol aktif dan menghapus override emulasi sementara alih-alih mematikan browser dasarnya. openclaw browser errors --clearopenclaw browser requests --filter api --clearopenclaw browser pdfopenclaw browser responsebody "**/api" --max-chars 5000
openclaw browser navigate https://example.comopenclaw browser resize 1280 720openclaw browser click 12 --doubleopenclaw browser click e12 --doubleopenclaw browser type 23 "hello" --submitopenclaw browser press Enteropenclaw browser hover 44openclaw browser scrollintoview e12openclaw browser drag 10 11openclaw browser select 9 OptionA OptionBopenclaw browser download e12 report.pdfopenclaw browser waitfordownload report.pdfopenclaw browser upload /tmp/openclaw/uploads/file.pdfopenclaw browser fill --fields '[{"ref":"1","type":"text","value":"Ada"}]'openclaw browser dialog --acceptopenclaw browser wait --text "Done"openclaw browser wait "#main" --url "**/dash" --load networkidle --fn "window.ready===true"openclaw browser evaluate --fn '(el) => el.textContent' --ref 7openclaw browser highlight e12openclaw browser trace startopenclaw browser trace stop
openclaw browser cookiesopenclaw browser cookies set session abc123 --url "https://example.com"openclaw browser cookies clearopenclaw browser storage local getopenclaw browser storage local set theme darkopenclaw browser storage session clearopenclaw browser set offline onopenclaw browser set headers --headers-json '{"X-Debug":"1"}'openclaw browser set credentials user passopenclaw browser set credentials --clearopenclaw browser set geo 37.7749 -122.4194 --origin "https://example.com"openclaw browser set geo --clearopenclaw browser set media darkopenclaw browser set timezone America/New_Yorkopenclaw browser set locale en-USopenclaw browser set device "iPhone 14"
uploaddandialogadalah panggilan arming; jalankan keduanya sebelum click/press yang memicu chooser/dialog.- Path output unduhan dan trace dibatasi ke root temp OpenClaw:
- trace:
/tmp/openclaw(fallback:${os.tmpdir()}/openclaw) - unduhan:
/tmp/openclaw/downloads(fallback:${os.tmpdir()}/openclaw/downloads)
- trace:
- Path upload dibatasi ke root upload temp OpenClaw:
- upload:
/tmp/openclaw/uploads(fallback:${os.tmpdir()}/openclaw/uploads)
- upload:
uploadjuga dapat langsung mengatur input file melalui--input-refatau--element.snapshot:--format ai(default saat Playwright terpasang): mengembalikan snapshot AI dengan ref numerik (aria-ref="<n>").--format aria: mengembalikan pohon aksesibilitas (tanpa ref; hanya untuk inspeksi).--efficient(atau--mode efficient): preset role snapshot ringkas (interactive + compact + depth + maxChars lebih rendah).- Default config (hanya tool/CLI): set
browser.snapshotDefaults.mode: "efficient"untuk menggunakan snapshot efisien saat pemanggil tidak memberikan mode (lihat Konfigurasi Gateway). - Opsi role snapshot (
--interactive,--compact,--depth,--selector) memaksa role-based snapshot dengan ref sepertiref=e12. --frame "<iframe selector>"membatasi role snapshot ke iframe (dipasangkan dengan role ref sepertie12).--interactivemenghasilkan daftar datar elemen interaktif yang mudah dipilih (terbaik untuk menjalankan tindakan).--labelsmenambahkan screenshot hanya viewport dengan label ref terhampar (mencetakMEDIA:<path>).
click/type/dll memerlukanrefdarisnapshot(baik numerik12maupun role refe12). Selector CSS memang sengaja tidak didukung untuk tindakan.
Snapshot dan ref
OpenClaw mendukung dua gaya “snapshot”:-
Snapshot AI (ref numerik):
openclaw browser snapshot(default;--format ai)- Output: snapshot teks yang menyertakan ref numerik.
- Tindakan:
openclaw browser click 12,openclaw browser type 23 "hello". - Secara internal, ref di-resolve melalui
aria-refmilik Playwright.
-
Role snapshot (role ref seperti
e12):openclaw browser snapshot --interactive(atau--compact,--depth,--selector,--frame)- Output: daftar/pohon berbasis role dengan
[ref=e12](dan opsional[nth=1]). - Tindakan:
openclaw browser click e12,openclaw browser highlight e12. - Secara internal, ref di-resolve melalui
getByRole(...)(ditambahnth()untuk duplikasi). - Tambahkan
--labelsuntuk menyertakan screenshot viewport dengan labele12yang dihamparkan.
- Output: daftar/pohon berbasis role dengan
- Ref tidak stabil antar navigasi; jika sesuatu gagal, jalankan ulang
snapshotdan gunakan ref yang baru. - Jika role snapshot diambil dengan
--frame, role ref dibatasi ke iframe tersebut sampai role snapshot berikutnya.
Peningkatan kemampuan wait
Anda dapat menunggu lebih dari sekadar waktu/teks:- Tunggu URL (glob didukung oleh Playwright):
openclaw browser wait --url "**/dash"
- Tunggu status pemuatan:
openclaw browser wait --load networkidle
- Tunggu predikat JS:
openclaw browser wait --fn "window.ready===true"
- Tunggu selector menjadi terlihat:
openclaw browser wait "#main"
Alur kerja debugging
Saat suatu tindakan gagal (misalnya “not visible”, “strict mode violation”, “covered”):openclaw browser snapshot --interactive- Gunakan
click <ref>/type <ref>(lebih baik role ref dalam mode interactive) - 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 debugging mendalam: rekam trace:
openclaw browser trace start- reproduksi masalahnya
openclaw browser trace stop(mencetakTRACE:<path>)
Output JSON
--json untuk scripting dan tooling terstruktur.
Contoh:
refs ditambah blok stats kecil (lines/chars/refs/interactive) agar tool dapat memahami ukuran dan kepadatan payload.
Pengaturan state dan environment
Ini berguna untuk alur kerja “buat situs berperilaku seperti X”:- Cookies:
cookies,cookies set,cookies clear - Storage:
storage local|session get|set|clear - Offline:
set offline on|off - Headers:
set headers --headers-json '{"X-Debug":"1"}'(bentuk lamaset headers --json '{"X-Debug":"1"}'tetap didukung) - HTTP basic auth:
set credentials user pass(atau--clear) - Geolocation:
set geo <lat> <lon> --origin "https://example.com"(atau--clear) - Media:
set media dark|light|no-preference|none - Timezone / locale:
set timezone ...,set locale ... - Device / viewport:
set device "iPhone 14"(preset perangkat Playwright)set viewport 1280 720
Keamanan & privasi
- Profil browser openclaw dapat berisi sesi yang sudah login; perlakukan sebagai sesuatu yang 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.- Untuk login dan catatan anti-bot (X/Twitter, dll.), lihat Login browser + posting X/Twitter.
- Jaga Gateway/host node tetap privat (hanya loopback atau tailnet).
- Endpoint CDP jarak jauh sangat berkuasa; tunnel-kan dan lindungi.
Pemecahan masalah
Untuk masalah khusus Linux (terutama snap Chromium), lihat Pemecahan masalah browser. Untuk setup host terpisah WSL2 Gateway + Windows Chrome, lihat Pemecahan masalah WSL2 + Windows + CDP Chrome jarak jauh.Kegagalan startup CDP vs blok SSRF navigasi
Ini adalah kelas kegagalan yang berbeda dan mengarah ke jalur kode yang berbeda.- Kegagalan startup atau kesiapan CDP berarti OpenClaw tidak dapat mengonfirmasi bahwa control plane browser sehat.
- Blok SSRF navigasi berarti control plane browser sehat, tetapi target navigasi halaman ditolak oleh kebijakan.
- Kegagalan startup atau kesiapan CDP:
Chrome CDP websocket for profile "openclaw" is not reachable after startRemote CDP for profile "<name>" is not reachable at <cdpUrl>
- Blok SSRF navigasi:
- alur
open,navigate, snapshot, atau pembukaan tab gagal dengan error kebijakan browser/jaringan sementarastartdantabstetap berfungsi
- alur
- Jika
startgagal dengannot reachable after start, selesaikan masalah kesiapan CDP terlebih dahulu. - Jika
startberhasil tetapitabsgagal, control plane masih tidak sehat. Perlakukan ini sebagai masalah keterjangkauan CDP, bukan masalah navigasi halaman. - Jika
startdantabsberhasil tetapiopenataunavigategagal, control plane browser aktif dan kegagalan ada pada kebijakan navigasi atau halaman target. - Jika
start,tabs, danopensemuanya berhasil, jalur kontrol browser terkelola dasar dalam keadaan sehat.
- Config browser default ke objek kebijakan SSRF fail-closed bahkan saat Anda tidak mengonfigurasi
browser.ssrfPolicy. - Untuk profil terkelola loopback lokal
openclaw, pemeriksaan kesehatan CDP sengaja melewati penegakan keterjangkauan SSRF browser untuk control plane lokal OpenClaw sendiri. - Perlindungan navigasi terpisah. Hasil
startatautabsyang berhasil tidak berarti targetopenataunavigateberikutnya diizinkan.
- Jangan melonggarkan kebijakan SSRF browser secara default.
- Pilih pengecualian host yang sempit seperti
hostnameAllowlistatauallowedHostnamesdaripada akses jaringan privat yang luas. - Gunakan
dangerouslyAllowPrivateNetwork: truehanya di environment yang memang tepercaya, tempat akses browser jaringan privat diperlukan dan telah ditinjau.
startberhasiltabsberhasilopen http://internal.examplegagal
startgagal dengannot reachable after starttabsjuga gagal atau tidak dapat dijalankan
Tool agen + cara kontrol bekerja
Agen mendapatkan satu tool untuk otomasi browser:browser— status/start/stop/tabs/open/focus/close/snapshot/screenshot/navigate/act
browser snapshotmengembalikan pohon UI yang stabil (AI atau ARIA).browser actmenggunakan IDrefdari snapshot untuk klik/ketik/seret/pilih.browser screenshotmenangkap piksel (halaman penuh atau elemen).browsermenerima:profileuntuk memilih profil browser bernama (openclaw, chrome, atau CDP jarak jauh).target(sandbox|host|node) untuk memilih tempat browser berada.- Dalam sesi sandbox,
target: "host"memerlukanagents.defaults.sandbox.browser.allowHostControl=true. - Jika
targetdihilangkan: sesi sandbox default kesandbox, sesi non-sandbox default kehost. - Jika node yang mampu menjalankan browser terhubung, tool dapat merutekan otomatis ke node tersebut kecuali Anda menetapkan
target="host"atautarget="node".
Terkait
- Ikhtisar Tools — semua tool agen yang tersedia
- Sandboxing — kontrol browser di environment sandbox
- Keamanan — risiko dan hardening kontrol browser