Przeglądarka (zarządzana przez openclaw)
OpenClaw może uruchamiać dedykowany profil Chrome/Brave/Edge/Chromium, którym steruje agent. Jest on odizolowany od Twojej osobistej przeglądarki i zarządzany przez niewielką lokalną usługę sterującą wewnątrz Gateway (wyłącznie local loopback). Widok dla początkujących:- Traktuj to jako oddzielną przeglądarkę tylko dla agenta.
- Profil
openclawnie dotyka Twojego osobistego profilu przeglądarki. - Agent może otwierać karty, czytać strony, klikać i pisać w bezpiecznym obszarze.
- Domyślny profil
chromeużywa systemowej domyślnej przeglądarki Chromium przez przekaźnik rozszerzenia; przełącz naopenclaw, aby użyć izolowanej, zarządzanej przeglądarki.
Co otrzymujesz
- Oddzielny profil przeglądarki o nazwie openclaw (domyślnie z pomarańczowym akcentem).
- Deterministyczne sterowanie kartami (lista/otwórz/aktywuj/zamknij).
- Akcje agenta (kliknięcie/pisanie/przeciąganie/zaznaczanie), migawki, zrzuty ekranu, pliki PDF.
- Opcjonalna obsługa wielu profili (
openclaw,work,remote, …).
Szybki start
Profile: openclaw vs chrome
openclaw: zarządzana, izolowana przeglądarka (bez wymaganego rozszerzenia).chrome: przekaźnik rozszerzenia do Twojej systemowej przeglądarki (wymaga podpięcia rozszerzenia OpenClaw do karty).
browser.defaultProfile: "openclaw", jeśli chcesz, aby tryb zarządzany był domyślny.
Konfiguracja
Ustawienia przeglądarki znajdują się w~/.openclaw/openclaw.json.
- Usługa sterowania przeglądarką wiąże się z local loopback na porcie wyprowadzonym z
gateway.port(domyślnie:18791, czyli gateway + 2). Przekaźnik używa kolejnego portu (18792). - Jeśli nadpiszesz port Gateway (
gateway.portlubOPENCLAW_GATEWAY_PORT), pochodne porty przeglądarki przesuwają się, aby pozostać w tej samej „rodzinie”. cdpUrldomyślnie przyjmuje port przekaźnika, gdy jest nieustawione.remoteCdpTimeoutMsdotyczy zdalnych sprawdzeń dostępności CDP (non-loopback).remoteCdpHandshakeTimeoutMsdotyczy zdalnych sprawdzeń dostępności WebSocket CDP.attachOnly: trueoznacza „nigdy nie uruchamiaj lokalnej przeglądarki; tylko dołącz, jeśli już działa”.color+ per-profilowecolorbarwią interfejs przeglądarki, aby było widać, który profil jest aktywny.- Domyślny profil to
chrome(przekaźnik rozszerzenia). UżyjdefaultProfile: "openclaw"dla przeglądarki zarządzanej. - Kolejność auto-wykrywania: systemowa domyślna przeglądarka, jeśli oparta na Chromium; w przeciwnym razie Chrome → Brave → Edge → Chromium → Chrome Canary.
- Lokalne profile
openclawautomatycznie przypisującdpPort/cdpUrl— ustawiaj je tylko dla zdalnego CDP.
Użyj Brave (lub innej przeglądarki opartej na Chromium)
Jeśli systemowa domyślna przeglądarka jest oparta na Chromium (Chrome/Brave/Edge itp.), OpenClaw użyje jej automatycznie. Ustawbrowser.executablePath, aby nadpisać
auto-wykrywanie:
Przykład CLI:
Sterowanie lokalne vs zdalne
- Sterowanie lokalne (domyślne): Gateway uruchamia usługę sterowania na loopback i może uruchomić lokalną przeglądarkę.
- Sterowanie zdalne (host węzła): uruchom host węzła na maszynie z przeglądarką; Gateway pośredniczy w akcjach przeglądarki.
- Zdalne CDP: ustaw
browser.profiles.<name>.cdpUrl(lubbrowser.cdpUrl), aby dołączyć do zdalnej przeglądarki opartej na Chromium. W tym przypadku OpenClaw nie uruchomi lokalnej przeglądarki.
- Tokeny w zapytaniu (np.
https://provider.example?token=<token>) - Uwierzytelnianie HTTP Basic (np.
https://user:[email protected])
/json/* oraz przy łączeniu
z WebSocket CDP. Zamiast zapisywać tokeny w plikach konfiguracyjnych, preferuj
zmienne środowiskowe lub menedżery sekretów.
Proxy przeglądarki węzła (domyślnie zero-config)
Jeśli uruchomisz host węzła na maszynie z przeglądarką, OpenClaw może automatycznie kierować wywołania narzędzi przeglądarki do tego węzła bez dodatkowej konfiguracji. Jest to domyślna ścieżka dla zdalnych gatewayów. Uwagi:- Host węzła wystawia swoją lokalną usługę sterowania przeglądarką przez polecenie proxy.
- Profile pochodzą z własnej konfiguracji
browser.profileswęzła (takiej samej jak lokalnie). - Wyłącz, jeśli tego nie chcesz:
- Na węźle:
nodeHost.browserProxy.enabled=false - Na gatewayu:
gateway.nodes.browser.mode="off"
- Na węźle:
Browserless (hostowane zdalne CDP)
Browserless to hostowana usługa Chromium udostępniająca endpointy CDP przez HTTPS. Możesz wskazać profil przeglądarki OpenClaw na endpoint regionu Browserless i uwierzytelnić się kluczem API. Przykład:- Zastąp
<BROWSERLESS_API_KEY>swoim prawdziwym tokenem Browserless. - Wybierz endpoint regionu odpowiadający Twojemu kontu Browserless (patrz ich dokumentacja).
Bezpieczeństwo
Kluczowe idee:- Sterowanie przeglądarką jest wyłącznie przez loopback; dostęp przechodzi przez uwierzytelnianie Gateway lub parowanie węzła.
- Jeśli sterowanie przeglądarką jest włączone i nie skonfigurowano uwierzytelniania, OpenClaw automatycznie generuje
gateway.auth.tokenprzy uruchomieniu i zapisuje go w konfiguracji. - Utrzymuj Gateway i wszelkie hosty węzłów w prywatnej sieci (Tailscale); unikaj publicznej ekspozycji.
- Traktuj adresy URL/tokeny zdalnego CDP jako sekrety; preferuj zmienne środowiskowe lub menedżer sekretów.
- Preferuj endpointy HTTPS i krótkotrwałe tokeny, gdy to możliwe.
- Unikaj osadzania długowiecznych tokenów bezpośrednio w plikach konfiguracyjnych.
Profile (wiele przeglądarek)
OpenClaw obsługuje wiele nazwanych profili (konfiguracje routingu). Profile mogą być:- openclaw-managed: dedykowana instancja przeglądarki opartej na Chromium z własnym katalogiem danych użytkownika i portem CDP
- remote: jawny adres URL CDP (przeglądarka oparta na Chromium działająca gdzie indziej)
- extension relay: istniejące karty Chrome przez lokalny przekaźnik + rozszerzenie Chrome
- Profil
openclawjest automatycznie tworzony, jeśli go brakuje. - Profil
chromejest wbudowany dla przekaźnika rozszerzenia Chrome (domyślnie wskazuje nahttp://127.0.0.1:18792). - Lokalne porty CDP są przydzielane domyślnie z zakresu 18800–18899.
- Usunięcie profilu przenosi jego lokalny katalog danych do Kosza.
?profile=<name>; CLI używa --browser-profile.
Przekaźnik rozszerzenia Chrome (użyj istniejącego Chrome)
OpenClaw może również sterować Twoimi istniejącymi kartami Chrome (bez oddzielnej instancji „openclaw”) przez lokalny przekaźnik CDP + rozszerzenie Chrome. Pełny przewodnik: Rozszerzenie Chrome Przebieg:- Gateway działa lokalnie (ta sama maszyna) lub host węzła działa na maszynie z przeglądarką.
- Lokalny serwer przekaźnika nasłuchuje na loopback
cdpUrl(domyślnie:http://127.0.0.1:18792). - Klikasz ikonę rozszerzenia OpenClaw Browser Relay na karcie, aby dołączyć (nie dołącza się automatycznie).
- Agent steruje tą kartą przez standardowe narzędzie
browser, wybierając właściwy profil.
Sesje sandboxed
Jeśli sesja agenta jest sandboxed, narzędziebrowser może domyślnie używać target="sandbox" (przeglądarka sandbox).
Przejęcie przekaźnika rozszerzenia Chrome wymaga kontroli przeglądarki hosta, więc:
- uruchom sesję poza sandboxem, albo
- ustaw
agents.defaults.sandbox.browser.allowHostControl: truei użyjtarget="host"podczas wywoływania narzędzia.
Konfiguracja
- Załaduj rozszerzenie (dev/unpacked):
- Chrome →
chrome://extensions→ włącz „Developer mode” - „Load unpacked” → wybierz katalog wydrukowany przez
openclaw browser extension path - Przypnij rozszerzenie, a następnie kliknij je na karcie, którą chcesz kontrolować (znacznik pokazuje
ON).
- Użycie:
- CLI:
openclaw browser --browser-profile chrome tabs - Narzędzie agenta:
browserzprofile="chrome"
- Ten tryb opiera się na Playwright-on-CDP dla większości operacji (zrzuty ekranu/migawki/akcje).
- Odłączanie następuje po ponownym kliknięciu ikony rozszerzenia.
Gwarancje izolacji
- Dedykowany katalog danych użytkownika: nigdy nie dotyka Twojego osobistego profilu przeglądarki.
- Dedykowane porty: unika
9222, aby zapobiec kolizjom z przepływami developerskimi. - Deterministyczne sterowanie kartami: celuj w karty przez
targetId, a nie „ostatnią kartę”.
Wybór przeglądarki
Przy uruchamianiu lokalnym OpenClaw wybiera pierwszą dostępną:- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
browser.executablePath.
Platformy:
- macOS: sprawdza
/Applicationsi~/Applications. - Linux: szuka
google-chrome,brave,microsoft-edge,chromiumitd. - Windows: sprawdza typowe lokalizacje instalacji.
API sterowania (opcjonalne)
Wyłącznie dla lokalnych integracji Gateway udostępnia niewielkie HTTP API na loopback:- Status/start/stop:
GET /,POST /start,POST /stop - Karty:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - Migawka/zrzut ekranu:
GET /snapshot,POST /screenshot - Akcje:
POST /navigate,POST /act - Hooki:
POST /hooks/file-chooser,POST /hooks/dialog - Pobieranie:
POST /download,POST /wait/download - Debugowanie:
GET /console,POST /pdf - Debugowanie:
GET /errors,GET /requests,POST /trace/start,POST /trace/stop,POST /highlight - Sieć:
POST /response/body - Stan:
GET /cookies,POST /cookies/set,POST /cookies/clear - Stan:
GET /storage/:kind,POST /storage/:kind/set,POST /storage/:kind/clear - Ustawienia:
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>.
Jeśli uwierzytelnianie gateway jest skonfigurowane, trasy HTTP przeglądarki również wymagają uwierzytelniania:
Authorization: Bearer <gateway token>- Podstawa:
Wymaganie Playwright
Niektóre funkcje (nawigacja/akcje/migawki AI/migawki ról, zrzuty elementów, PDF) wymagają Playwright. Jeśli Playwright nie jest zainstalowany, te endpointy zwracają czytelny błąd 501. Migawki ARIA i podstawowe zrzuty ekranu nadal działają dla przeglądarki zarządzanej openclaw. Dla sterownika przekaźnika rozszerzenia Chrome migawki ARIA i zrzuty ekranu również wymagają Playwright. Jeśli zobaczyszPlaywright is not available in this gateway build, zainstaluj pełny
pakiet Playwright (nie playwright-core) i zrestartuj gateway albo przeinstaluj
OpenClaw z obsługą przeglądarki.
Instalacja Playwright w Dockerze
Jeśli Gateway działa w Dockerze, unikajnpx playwright (konflikty nadpisywania npm).
Użyj dołączonego CLI:
PLAYWRIGHT_BROWSERS_PATH (na przykład
/home/node/.cache/ms-playwright) i upewnij się, że /home/node jest utrwalone przez
OPENCLAW_HOME_VOLUME lub bind mount. Zobacz Docker.
Jak to działa (wewnętrznie)
Przepływ wysokiego poziomu:- Niewielki serwer sterujący przyjmuje żądania HTTP.
- Łączy się z przeglądarkami opartymi na Chromium (Chrome/Brave/Edge/Chromium) przez CDP.
- Do zaawansowanych akcji (kliknięcie/pisanie/migawka/PDF) używa Playwright nad CDP.
- Gdy Playwright jest niedostępny, dostępne są tylko operacje niezależne od Playwright.
Szybkie odwołanie do CLI
Wszystkie polecenia akceptują--browser-profile <name> do wskazania konkretnego profilu.
Wszystkie polecenia akceptują także --json dla wyjścia czytelnego maszynowo (stabilne payloady).
Podstawa:
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 erroropenclaw 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 /tmp/report.pdfopenclaw browser waitfordownload /tmp/report.pdfopenclaw browser upload /tmp/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 --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"
uploadidialogto wywołania uzbrajające; uruchom je przed kliknięciem/naciśnięciem, które wyzwala selektor/okno dialogowe.- Ścieżki pobierania i zapisu śledzeń są ograniczone do katalogów tymczasowych OpenClaw:
- traces:
/tmp/openclaw(fallback:${os.tmpdir()}/openclaw) - downloads:
/tmp/openclaw/downloads(fallback:${os.tmpdir()}/openclaw/downloads)
- traces:
- Ścieżki przesyłania są ograniczone do katalogu tymczasowych uploadów OpenClaw:
- Zrzuty stanu i referencje
uploadmoże także ustawiać pola plików bezpośrednio przez--input-reflub--element.snapshot:--format ai(domyślne, gdy Playwright jest zainstalowany): zwraca migawkę AI z numerycznymi referencjami (aria-ref="<n>").--format aria: zwraca drzewo dostępności (bez referencji; tylko do inspekcji).--efficient(lub--mode efficient): kompaktowy preset migawki ról (interaktywny + kompaktowy + głębokość + niższe maxChars).- Domyślna konfiguracja (tylko narzędzie/CLI): ustaw
browser.snapshotDefaults.mode: "efficient", aby używać wydajnych migawek, gdy wywołujący nie poda trybu (zobacz Konfiguracja Gateway). - Opcje migawki ról (
--interactive,--compact,--depth,--selector) wymuszają migawkę opartą na rolach z referencjami jakref=e12. --frame "<iframe selector>"ogranicza migawki ról do iframe (w parze z referencjami ról jake12).--interactivegeneruje płaską, łatwą do wyboru listę elementów interaktywnych (najlepsze do sterowania akcjami).--labelsdodaje zrzut ekranu tylko obszaru widoku z nałożonymi etykietami referencji (drukujeMEDIA:<path>).
click/type/itd. wymagająrefzsnapshot(numerycznego12lub referencji rolie12). Selektory CSS są celowo nieobsługiwane dla akcji.
Zrzuty stanu i referencje
OpenClaw obsługuje dwa style „migawek”:-
Migawka AI (numeryczne referencje):
openclaw browser snapshot(domyślna;--format ai)- Wyjście: tekstowa migawka zawierająca numeryczne referencje.
- Akcje:
openclaw browser click 12,openclaw browser type 23 "hello". - Wewnętrznie referencja jest rozwiązywana przez
aria-refPlaywright.
-
Migawka ról (referencje ról jak
e12):openclaw browser snapshot --interactive(lub--compact,--depth,--selector,--frame)- Wyjście: lista/drzewo oparte na rolach z
[ref=e12](i opcjonalnie[nth=1]). - Akcje:
openclaw browser click e12,openclaw browser highlight e12. - Wewnętrznie referencja jest rozwiązywana przez
getByRole(...)(plusnth()dla duplikatów). - Dodaj
--labels, aby dołączyć zrzut obszaru widoku z nałożonymi etykietamie12.
- Wyjście: lista/drzewo oparte na rolach z
- Referencje nie są stabilne między nawigacjami; jeśli coś się nie powiedzie, ponownie uruchom
snapshoti użyj świeżej referencji. - Jeśli migawka ról została wykonana z
--frame, referencje ról są ograniczone do tego iframe do następnej migawki ról.
Wzmocnienia oczekiwania
Możesz czekać na więcej niż tylko czas/tekst:- Oczekiwanie na URL (obsługa globów przez Playwright):
openclaw browser wait --url "**/dash"
- Oczekiwanie na stan ładowania:
openclaw browser wait --load networkidle
- Oczekiwanie na predykat JS:
openclaw browser wait --fn "window.ready===true"
- Oczekiwanie na selektor, aż stanie się widoczny:
openclaw browser wait "#main"
Przepływy debugowania
Gdy akcja się nie powiedzie (np. „not visible”, „strict mode violation”, „covered”):openclaw browser snapshot --interactive- Użyj
click <ref>/type <ref>(preferuj referencje ról w trybie interaktywnym) - Jeśli nadal się nie powiedzie:
openclaw browser highlight <ref>, aby zobaczyć, co Playwright wskazuje - Jeśli strona zachowuje się dziwnie:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- Do głębokiego debugowania: nagraj ślad:
openclaw browser trace start- odtwórz problem
openclaw browser trace stop(drukujeTRACE:<path>)
Wyjście JSON
--json jest przeznaczone do skryptów i narzędzi strukturalnych.
Przykłady:
refs oraz mały blok stats (linie/znaki/referencje/interaktywność),
aby narzędzia mogły oceniać rozmiar i gęstość payloadu.
Stan i pokrętła środowiska
Przydatne w przepływach „spraw, aby strona zachowywała się jak X”:- Ciasteczka:
cookies,cookies set,cookies clear - Pamięć:
storage local|session get|set|clear - Tryb offline:
set offline on|off - Nagłówki:
set headers --json '{"X-Debug":"1"}'(lub--clear) - Uwierzytelnianie HTTP basic:
set credentials user pass(lub--clear) - Geolokalizacja:
set geo <lat> <lon> --origin "https://example.com"(lub--clear) - Media:
set media dark|light|no-preference|none - Strefa czasowa / lokalizacja:
set timezone ...,set locale ... - Urządzenie / viewport:
set device "iPhone 14"(presety urządzeń Playwright)set viewport 1280 720
Bezpieczeństwo i prywatność
- Profil przeglądarki openclaw może zawierać zalogowane sesje; traktuj go jako wrażliwy.
browser act kind=evaluate/openclaw browser evaluateorazwait --fnwykonują dowolny JavaScript w kontekście strony. Prompt injection może tym sterować. Wyłącz to przezbrowser.evaluateEnabled=false, jeśli nie jest potrzebne.- W sprawie logowań i uwag antybotowych (X/Twitter itp.) zobacz Logowanie do przeglądarki + publikowanie na X/Twitter.
- Utrzymuj Gateway/host węzła jako prywatne (loopback lub tylko tailnet).
- Endpointy zdalnego CDP są potężne; tuneluj je i zabezpieczaj.
Rozwiązywanie problemów
W przypadku problemów specyficznych dla Linuksa (zwłaszcza snap Chromium) zobacz Rozwiązywanie problemów z przeglądarką.Narzędzia agenta + jak działa sterowanie
Agent otrzymuje jedno narzędzie do automatyzacji przeglądarki:browser— status/start/stop/karty/otwórz/aktywuj/zamknij/migawka/zrzut/nawiguj/akcja
browser snapshotzwraca stabilne drzewo UI (AI lub ARIA).browser actużywa identyfikatorówrefz migawki do klikania/pisania/przeciągania/zaznaczania.browser screenshotprzechwytuje piksele (cała strona lub element).browserakceptuje:profiledo wyboru nazwanego profilu przeglądarki (openclaw, chrome lub zdalne CDP).target(sandbox|host|node) do wyboru miejsca, gdzie działa przeglądarka.- W sesjach sandboxed
target: "host"wymagaagents.defaults.sandbox.browser.allowHostControl=true. - Jeśli
targetjest pominięte: sesje sandboxed domyślnie używająsandbox, a sesje bez sandboxa domyślnie używająhost. - Jeśli podłączony jest węzeł z obsługą przeglądarki, narzędzie może automatycznie kierować do niego, chyba że przypniesz
target="host"lubtarget="node".