Tools
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 małą lokalną usługę sterującą wewnątrz Gateway (tylko loopback).
Widok dla początkujących:
- Pomyśl o tym jak o osobnej przeglądarce tylko dla agenta.
- Profil
openclawnie dotyka Twojego osobistego profilu przeglądarki. - Agent może otwierać karty, czytać strony, klikać i pisać w bezpiecznym torze.
- Wbudowany profil
userpodłącza się do Twojej prawdziwej zalogowanej sesji Chrome przez Chrome MCP.
Co otrzymujesz
- Osobny profil przeglądarki o nazwie openclaw (domyślnie z pomarańczowym akcentem).
- Deterministyczne sterowanie kartami (lista/otwórz/ustaw fokus/zamknij).
- Akcje agenta (kliknięcie/pisanie/przeciąganie/wybór), migawki, zrzuty ekranu, pliki PDF.
- Wbudowany Skills
browser-automation, który uczy agentów pętli odzyskiwania migawek, stabilnych kart, nieaktualnych referencji i ręcznych blokad, gdy Plugin przeglądarki jest włączony. - Opcjonalną obsługę wielu profili (
openclaw,work,remote, ...).
Ta przeglądarka nie jest Twoją codzienną przeglądarką. To bezpieczna, odizolowana powierzchnia do automatyzacji i weryfikacji przez agenta.
Szybki start
openclaw browser --browser-profile openclaw doctoropenclaw browser --browser-profile openclaw doctor --deepopenclaw browser --browser-profile openclaw statusopenclaw browser --browser-profile openclaw startopenclaw browser --browser-profile openclaw open https://example.comopenclaw browser --browser-profile openclaw snapshotJeśli otrzymasz komunikat „Browser disabled”, włącz ją w konfiguracji (zobacz niżej) i uruchom ponownie Gateway.
Jeśli openclaw browser całkowicie brakuje albo agent mówi, że narzędzie przeglądarki
jest niedostępne, przejdź do sekcji Brak polecenia lub narzędzia przeglądarki.
Kontrola Pluginu
Domyślne narzędzie browser jest wbudowanym Pluginem. Wyłącz je, aby zastąpić je innym Pluginem, który rejestruje tę samą nazwę narzędzia browser:
{ plugins: { entries: { browser: { enabled: false, }, }, },}Wartości domyślne wymagają zarówno plugins.entries.browser.enabled, jak i browser.enabled=true. Wyłączenie tylko Pluginu usuwa CLI openclaw browser, metodę Gateway browser.request, narzędzie agenta i usługę sterującą jako jedną całość; Twoja konfiguracja browser.* pozostaje nienaruszona dla zamiennika.
Zmiany konfiguracji przeglądarki wymagają ponownego uruchomienia Gateway, aby Plugin mógł ponownie zarejestrować swoją usługę.
Wskazówki dla agenta
Uwaga dotycząca profilu narzędzi: tools.profile: "coding" obejmuje web_search i
web_fetch, ale nie obejmuje pełnego narzędzia browser. Jeśli agent albo
uruchomiony subagent powinien używać automatyzacji przeglądarki, dodaj przeglądarkę na etapie
profilu:
{ tools: { profile: "coding", alsoAllow: ["browser"], },}Dla pojedynczego agenta użyj agents.list[].tools.alsoAllow: ["browser"].
Samo tools.subagents.tools.allow: ["browser"] nie wystarcza, ponieważ polityka
subagenta jest stosowana po filtrowaniu profilu.
Plugin przeglądarki dostarcza dwa poziomy wskazówek dla agenta:
- Opis narzędzia
browserzawiera zwięzły, zawsze aktywny kontrakt: wybierz właściwy profil, trzymaj referencje na tej samej karcie, używajtabId/etykiet do celowania w karty i wczytaj Skills przeglądarki do pracy wieloetapowej. - Wbudowany Skills
browser-automationzawiera dłuższą pętlę operacyjną: najpierw sprawdź status/karty, oznacz karty zadania etykietami, wykonaj migawkę przed działaniem, ponownie wykonaj migawkę po zmianach UI, raz odzyskaj nieaktualne referencje i zgłaszaj blokady logowania/2FA/captcha albo kamery/mikrofonu jako wymagające ręcznego działania zamiast zgadywać.
Skills dołączone do Pluginu są wymienione w dostępnych Skills agenta, gdy Plugin jest włączony. Pełne instrukcje Skills są wczytywane na żądanie, więc rutynowe tury nie ponoszą pełnego kosztu tokenów.
Brak polecenia lub narzędzia przeglądarki
Jeśli po uaktualnieniu openclaw browser jest nieznane, brakuje browser.request albo agent zgłasza narzędzie przeglądarki jako niedostępne, zwykle przyczyną jest lista plugins.allow, która pomija browser, oraz brak głównego bloku konfiguracji browser. Dodaj go:
{ plugins: { allow: ["telegram", "browser"], },}Jawny główny blok browser, na przykład browser.enabled=true lub browser.profiles.<name>, aktywuje wbudowany Plugin przeglądarki nawet przy restrykcyjnym plugins.allow, zgodnie z zachowaniem konfiguracji kanałów. plugins.entries.browser.enabled=true i tools.alsoAllow: ["browser"] same w sobie nie zastępują członkostwa na liście dozwolonych. Całkowite usunięcie plugins.allow również przywraca ustawienie domyślne.
Profile: openclaw kontra user
openclaw: zarządzana, odizolowana przeglądarka (bez wymagania rozszerzenia).user: wbudowany profil dołączania Chrome MCP dla Twojej prawdziwej zalogowanej sesji Chrome.
Dla wywołań narzędzia przeglądarki przez agenta:
- Domyślnie: użyj odizolowanej przeglądarki
openclaw. - Preferuj
profile="user", gdy istniejące zalogowane sesje mają znaczenie, a użytkownik jest przy komputerze, aby kliknąć/zatwierdzić ewentualny monit dołączenia. profilejest jawnym nadpisaniem, gdy chcesz użyć konkretnego trybu przeglądarki.
Ustaw browser.defaultProfile: "openclaw", jeśli chcesz domyślnie używać trybu zarządzanego.
Konfiguracja
Ustawienia przeglądarki znajdują się w ~/.openclaw/openclaw.json.
{ browser: { enabled: true, // default: true ssrfPolicy: { // dangerouslyAllowPrivateNetwork: true, // opt in only for trusted private-network access // allowPrivateNetwork: true, // legacy alias // hostnameAllowlist: ["*.example.com", "example.com"], // allowedHostnames: ["localhost"], }, // cdpUrl: "http://127.0.0.1:18792", // legacy single-profile override remoteCdpTimeoutMs: 1500, // remote CDP HTTP timeout (ms) remoteCdpHandshakeTimeoutMs: 3000, // remote CDP WebSocket handshake timeout (ms) localLaunchTimeoutMs: 15000, // local managed Chrome discovery timeout (ms) localCdpReadyTimeoutMs: 8000, // local managed post-launch CDP readiness timeout (ms) actionTimeoutMs: 60000, // default browser act timeout (ms) tabCleanup: { enabled: true, // default: true idleMinutes: 120, // set 0 to disable idle cleanup maxTabsPerSession: 8, // set 0 to disable the per-session cap sweepMinutes: 5, }, defaultProfile: "openclaw", color: "#FF4500", headless: false, noSandbox: false, attachOnly: false, executablePath: "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser", profiles: { openclaw: { cdpPort: 18800, color: "#FF4500" }, work: { cdpPort: 18801, color: "#0066CC", headless: true, executablePath: "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", }, user: { driver: "existing-session", attachOnly: true, color: "#00AA00", }, brave: { driver: "existing-session", attachOnly: true, userDataDir: "~/Library/Application Support/BraveSoftware/Brave-Browser", color: "#FB542B", }, remote: { cdpUrl: "http://10.0.0.42:9222", color: "#00AA00" }, }, },}Wizja zrzutów ekranu (obsługa modeli tylko tekstowych)
Gdy główny model jest tylko tekstowy (bez obsługi wizji/multimodalnej), zrzuty ekranu przeglądarki zwracają bloki obrazów, których model nie może odczytać. Zrzuty ekranu przeglądarki ponownie wykorzystują istniejącą konfigurację rozumienia obrazów, więc model obrazu skonfigurowany do rozumienia multimediów może opisywać zrzuty ekranu jako tekst bez żadnych ustawień modelu specyficznych dla przeglądarki.
{ tools: { media: { image: { models: [ { provider: "bytedance", model: "doubao-seed-2.0-pro" }, // Add fallback candidates; first success wins { provider: "openai", model: "gpt-4o" }, ], }, // Shared media models also work when tagged for image support. // models: [{ provider: "openai", model: "gpt-4o", capabilities: ["image"] }], }, }, agents: { defaults: { // Existing image-model defaults are also honored. // imageModel: { primary: "openai/gpt-4o" }, }, },}Jak to działa:
- Agent wywołuje
browser screenshot→ obraz jest jak zwykle zapisywany na dysku. - Narzędzie przeglądarki pyta istniejące środowisko uruchomieniowe rozumienia obrazów, czy może opisać zrzut ekranu przy użyciu skonfigurowanych modeli obrazów mediów, współdzielonych modeli mediów, domyślnych modeli obrazów albo dostawcy obrazu opartego na autoryzacji.
- Model wizyjny zwraca opis tekstowy, który jest opakowywany za pomocą
wrapExternalContent(ochrona przed wstrzyknięciem do promptu) i zwracany agentowi jako blok tekstowy zamiast bloku obrazu. - Jeśli rozumienie obrazu jest niedostępne, pominięte albo zawiedzie, przeglądarka wraca do zwracania oryginalnego bloku obrazu.
Użyj istniejących pól tools.media.image / tools.media.models dla zapasowych modeli,
limitów czasu, limitów bajtów, profili i ustawień żądań dostawcy.
Jeśli aktywny główny model już obsługuje wizję i nie skonfigurowano jawnego modelu rozumienia obrazu, OpenClaw zachowuje normalny wynik obrazu, aby główny model mógł bezpośrednio odczytać zrzut ekranu.
Porty i osiągalność
- Usługa sterująca wiąże się z loopback na porcie wyprowadzonym z
gateway.port(domyślnie18791= gateway + 2). Nadpisaniegateway.portlubOPENCLAW_GATEWAY_PORTprzesuwa wyprowadzone porty w tej samej rodzinie. - Lokalne profile
openclawautomatycznie przypisującdpPort/cdpUrl; ustawiaj je tylko dla zdalnych profili CDP albo dołączania do punktu końcowego istniejącej sesji.cdpUrldomyślnie wskazuje zarządzany lokalny port CDP, gdy nie jest ustawiony. remoteCdpTimeoutMsdotyczy zdalnych iattachOnlysprawdzeń osiągalności HTTP CDP oraz żądań HTTP otwierających karty;remoteCdpHandshakeTimeoutMsdotyczy ich uzgadniania CDP WebSocket.localLaunchTimeoutMsto budżet czasu dla lokalnie uruchomionego zarządzanego procesu Chrome, aby wystawił swój punkt końcowy HTTP CDP.localCdpReadyTimeoutMsto kolejny budżet na gotowość websocket CDP po wykryciu procesu. Zwiększ te wartości na Raspberry Pi, słabszym VPS albo starszym sprzęcie, gdzie Chromium uruchamia się wolno. Wartości muszą być dodatnimi liczbami całkowitymi do120000ms; nieprawidłowe wartości konfiguracji są odrzucane.- Powtarzające się niepowodzenia uruchomienia/gotowości zarządzanego Chrome są przerywane obwodowo dla każdego profilu. Po kilku kolejnych niepowodzeniach OpenClaw na krótko wstrzymuje nowe próby uruchomienia zamiast tworzyć proces Chromium przy każdym wywołaniu narzędzia przeglądarki. Napraw problem z uruchamianiem, wyłącz przeglądarkę, jeśli nie jest potrzebna, albo uruchom ponownie Gateway po naprawie.
actionTimeoutMsto domyślny budżet czasu dla żądańactprzeglądarki, gdy wywołujący nie przekazujetimeoutMs. Transport klienta dodaje małe okno zapasu, aby długie oczekiwania mogły się zakończyć zamiast przekroczyć czas na granicy HTTP.tabCleanupto sprzątanie best-effort dla kart otwartych przez sesje przeglądarki głównego agenta. Sprzątanie cyklu życia subagentów, cron i ACP nadal zamyka ich jawnie śledzone karty na końcu sesji; sesje główne utrzymują aktywne karty jako możliwe do ponownego użycia, a następnie zamykają bezczynne lub nadmiarowe śledzone karty w tle.
Polityka SSRF
- Nawigacja przeglądarki i otwieranie kart są chronione przed SSRF przed nawigacją, a następnie w miarę możliwości ponownie sprawdzane na końcowym URL
http(s). - W ścisłym trybie SSRF sprawdzane są też zdalne wykrywanie endpointu CDP i sondy
/json/version(cdpUrl). - Zmienne środowiskowe Gateway/providera
HTTP_PROXY,HTTPS_PROXY,ALL_PROXYiNO_PROXYnie przekierowują automatycznie przeglądarki zarządzanej przez OpenClaw przez proxy. Zarządzany Chrome domyślnie uruchamia się bezpośrednio, aby ustawienia proxy providera nie osłabiały kontroli SSRF przeglądarki. - Lokalne sondy gotowości CDP zarządzane przez OpenClaw i połączenia WebSocket DevTools omijają zarządzane proxy sieciowe dla dokładnego uruchomionego endpointu loopback, więc
openclaw browser startnadal działa, gdy proxy operatora blokuje wychodzący ruch loopback. - Aby przekierować samą zarządzaną przeglądarkę przez proxy, przekaż jawne flagi proxy Chrome przez
browser.extraArgs, takie jak--proxy-server=...lub--proxy-pac-url=.... Ścisły tryb SSRF blokuje jawne trasowanie proxy przeglądarki, chyba że dostęp przeglądarki do sieci prywatnej jest celowo włączony. browser.ssrfPolicy.dangerouslyAllowPrivateNetworkjest domyślnie wyłączone; włączaj tylko wtedy, gdy dostęp przeglądarki do sieci prywatnej jest celowo zaufany.browser.ssrfPolicy.allowPrivateNetworkpozostaje obsługiwane jako starszy alias.
Zachowanie profilu
attachOnly: trueoznacza, że lokalna przeglądarka nigdy nie jest uruchamiana; następuje tylko dołączenie, jeśli jakaś już działa.headlessmożna ustawić globalnie albo dla lokalnego zarządzanego profilu. Wartości per profil zastępująbrowser.headless, więc jeden lokalnie uruchomiony profil może pozostać headless, podczas gdy inny pozostaje widoczny.POST /start?headless=trueiopenclaw browser start --headlessżądają jednorazowego uruchomienia headless dla lokalnych zarządzanych profili bez przepisywaniabrowser.headlessani konfiguracji profilu. Istniejąca sesja, attach-only i zdalne profile CDP odrzucają to nadpisanie, ponieważ OpenClaw nie uruchamia tych procesów przeglądarki.- Na hostach Linux bez
DISPLAYlubWAYLAND_DISPLAYlokalne zarządzane profile domyślnie automatycznie używają headless, gdy ani środowisko, ani konfiguracja profilu/globalna nie wybierają jawnie trybu z interfejsem.openclaw browser status --jsonraportujeheadlessSourcejakoenv,profile,config,request,linux-display-fallbacklubdefault. OPENCLAW_BROWSER_HEADLESS=1wymusza uruchomienia lokalne zarządzane jako headless dla bieżącego procesu.OPENCLAW_BROWSER_HEADLESS=0wymusza tryb z interfejsem dla zwykłych uruchomień i zwraca możliwy do działania błąd na hostach Linux bez serwera wyświetlania; jawne żądaniestart --headlessnadal wygrywa dla tego jednego uruchomienia.executablePathmożna ustawić globalnie albo dla lokalnego zarządzanego profilu. Wartości per profil zastępująbrowser.executablePath, więc różne zarządzane profile mogą uruchamiać różne przeglądarki oparte na Chromium. Obie formy akceptują~dla katalogu domowego twojego systemu operacyjnego.color(na najwyższym poziomie i per profil) barwi interfejs przeglądarki, aby było widać, który profil jest aktywny.- Domyślny profil to
openclaw(zarządzany samodzielny). UżyjdefaultProfile: "user", aby wybrać przeglądarkę zalogowanego użytkownika. - Kolejność automatycznego wykrywania: domyślna przeglądarka systemowa, jeśli jest oparta na Chromium; w przeciwnym razie Chrome → Brave → Edge → Chromium → Chrome Canary.
driver: "existing-session"używa Chrome DevTools MCP zamiast surowego CDP. Może dołączyć przez automatyczne połączenie Chrome MCP albo przezcdpUrl, gdy masz już endpoint DevTools dla działającej przeglądarki.- Ustaw
browser.profiles.<name>.userDataDir, gdy profil existing-session powinien dołączać do niedomyślnego profilu użytkownika Chromium (Brave, Edge itp.). Ta ścieżka również akceptuje~dla katalogu domowego twojego systemu operacyjnego.
Użyj Brave lub innej przeglądarki opartej na Chromium
Jeśli twoja domyślna systemowa przeglądarka jest oparta na Chromium (Chrome/Brave/Edge/itp.),
OpenClaw używa jej automatycznie. Ustaw browser.executablePath, aby nadpisać
automatyczne wykrywanie. Wartości executablePath na najwyższym poziomie i per profil akceptują ~
dla katalogu domowego twojego systemu operacyjnego:
openclaw config set browser.executablePath "/usr/bin/google-chrome"openclaw config set browser.profiles.work.executablePath "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"Albo ustaw to w konfiguracji, per platforma:
macOS
{browser: {executablePath: "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser",},}Windows
{browser: {executablePath: "C:\\Program Files\\BraveSoftware\\Brave-Browser\\Application\\brave.exe",},}Linux
{browser: {executablePath: "/usr/bin/brave-browser",},}executablePath per profil wpływa tylko na lokalne zarządzane profile, które OpenClaw
uruchamia. Profile existing-session dołączają zamiast tego do już działającej przeglądarki,
a zdalne profile CDP używają przeglądarki za cdpUrl.
Sterowanie lokalne a zdalne
- Sterowanie lokalne (domyślne): Gateway uruchamia usługę sterowania loopback i może uruchomić lokalną przeglądarkę.
- Sterowanie zdalne (host Node): uruchom host Node na maszynie z przeglądarką; Gateway przekazuje do niego akcje przeglądarki przez proxy.
- Zdalne CDP: ustaw
browser.profiles.<name>.cdpUrl(lubbrowser.cdpUrl), aby dołączyć do zdalnej przeglądarki opartej na Chromium. W takim przypadku OpenClaw nie uruchomi lokalnej przeglądarki. - Dla zewnętrznie zarządzanych usług CDP na loopback (na przykład Browserless w
Dockerze opublikowanym do
127.0.0.1) ustaw równieżattachOnly: true. CDP na loopback bezattachOnlyjest traktowane jako lokalny profil przeglądarki zarządzany przez OpenClaw. headlesswpływa tylko na lokalne zarządzane profile, które OpenClaw uruchamia. Nie restartuje ani nie zmienia przeglądarek existing-session ani zdalnych CDP.executablePathpodlega tej samej regule lokalnego zarządzanego profilu. Zmiana go w działającym lokalnym zarządzanym profilu oznacza ten profil do restartu/uzgodnienia, aby następne uruchomienie użyło nowego pliku binarnego.
Zachowanie zatrzymywania różni się zależnie od trybu profilu:
- lokalne zarządzane profile:
openclaw browser stopzatrzymuje proces przeglądarki, który uruchomił OpenClaw - profile attach-only i zdalne CDP:
openclaw browser stopzamyka aktywną sesję sterowania i zwalnia nadpisania emulacji Playwright/CDP (viewport, schemat kolorów, locale, strefę czasową, tryb offline i podobny stan), mimo że OpenClaw nie uruchomił żadnego procesu przeglądarki
Zdalne URL-e CDP mogą zawierać dane uwierzytelniające:
- Tokeny zapytania (np.
https://provider.example?token=<token>) - Uwierzytelnianie HTTP Basic (np.
https://user:pass@provider.example)
OpenClaw zachowuje dane uwierzytelniające podczas wywoływania endpointów /json/* i podczas łączenia
z WebSocket CDP. Dla tokenów preferuj zmienne środowiskowe lub menedżery sekretów
zamiast zapisywania ich w plikach konfiguracji.
Proxy przeglądarki Node (domyślne bez konfiguracji)
Jeśli uruchomisz host Node na maszynie, na której masz przeglądarkę, OpenClaw może automatycznie kierować wywołania narzędzia przeglądarki do tego węzła bez żadnej dodatkowej konfiguracji przeglądarki. To jest domyślna ścieżka dla zdalnych Gateway.
Uwagi:
- Host Node udostępnia swój lokalny serwer sterowania przeglądarką przez polecenie proxy.
- Profile pochodzą z własnej konfiguracji
browser.profileswęzła (tak samo jak lokalnie). nodeHost.browserProxy.allowProfilesjest opcjonalne. Pozostaw je puste dla starszego/domyślnego zachowania: wszystkie skonfigurowane profile pozostają osiągalne przez proxy, w tym trasy tworzenia/usuwania profili.- Jeśli ustawisz
nodeHost.browserProxy.allowProfiles, OpenClaw traktuje to jako granicę najmniejszych uprawnień: można wskazywać tylko profile z listy dozwolonych, a trasy tworzenia/usuwania trwałych profili są blokowane na powierzchni proxy. - Wyłącz, jeśli tego nie chcesz:
- Na węźle:
nodeHost.browserProxy.enabled=false - Na Gateway:
gateway.nodes.browser.mode="off"
- Na węźle:
Browserless (hostowany zdalny CDP)
Browserless to hostowana usługa Chromium, która udostępnia adresy URL połączeń CDP przez HTTPS i WebSocket. OpenClaw może używać obu form, ale dla zdalnego profilu przeglądarki najprostszą opcją jest bezpośredni URL WebSocket z dokumentacji połączeń Browserless.
Przykład:
{ browser: { enabled: true, defaultProfile: "browserless", remoteCdpTimeoutMs: 2000, remoteCdpHandshakeTimeoutMs: 4000, profiles: { browserless: { cdpUrl: "wss://production-sfo.browserless.io?token=<BROWSERLESS_API_KEY>", color: "#00AA00", }, }, },}Uwagi:
- Zastąp
<BROWSERLESS_API_KEY>swoim rzeczywistym tokenem Browserless. - Wybierz endpoint regionu zgodny z Twoim kontem Browserless (zobacz ich dokumentację).
- Jeśli Browserless podaje bazowy URL HTTPS, możesz albo przekonwertować go na
wss://dla bezpośredniego połączenia CDP, albo zachować URL HTTPS i pozwolić OpenClaw wykryć/json/version.
Browserless Docker na tym samym hoście
Gdy Browserless jest hostowany samodzielnie w Dockerze, a OpenClaw działa na hoście, traktuj Browserless jako zewnętrznie zarządzaną usługę CDP:
{ browser: { enabled: true, defaultProfile: "browserless", profiles: { browserless: { cdpUrl: "ws://127.0.0.1:3000", attachOnly: true, color: "#00AA00", }, }, },}Adres w browser.profiles.browserless.cdpUrl musi być osiągalny z procesu
OpenClaw. Browserless musi także ogłaszać zgodny, osiągalny endpoint;
ustaw EXTERNAL Browserless na tę samą publiczną względem OpenClaw bazę WebSocket, na przykład
ws://127.0.0.1:3000, ws://browserless:3000 albo stabilny prywatny adres sieci
Docker. Jeśli /json/version zwraca webSocketDebuggerUrl wskazujący na
adres, którego OpenClaw nie może osiągnąć, HTTP CDP może wyglądać poprawnie, podczas gdy dołączenie
WebSocket nadal kończy się niepowodzeniem.
Nie pozostawiaj attachOnly nieustawionego dla profilu Browserless typu loopback. Bez
attachOnly OpenClaw traktuje port loopback jako lokalnie zarządzany profil przeglądarki
i może zgłaszać, że port jest używany, ale nie należy do OpenClaw.
Bezpośredni dostawcy CDP WebSocket
Niektóre hostowane usługi przeglądarek udostępniają bezpośredni endpoint WebSocket zamiast
standardowego wykrywania CDP opartego na HTTP (/json/version). OpenClaw akceptuje trzy
kształty URL CDP i automatycznie wybiera właściwą strategię połączenia:
- Wykrywanie HTTP(S) -
http://host[:port]lubhttps://host[:port]. OpenClaw wywołuje/json/version, aby wykryć URL debuggera WebSocket, a następnie się łączy. Bez awaryjnego przejścia na WebSocket. - Bezpośrednie endpointy WebSocket -
ws://host[:port]/devtools/<kind>/<id>lubwss://...ze ścieżką/devtools/browser|page|worker|shared_worker|service_worker/<id>. OpenClaw łączy się bezpośrednio przez uzgodnienie WebSocket i całkowicie pomija/json/version. - Bazowe korzenie WebSocket -
ws://host[:port]lubwss://host[:port]bez ścieżki/devtools/...(np. Browserless, Browserbase). OpenClaw najpierw próbuje wykrywania HTTP/json/version(normalizując schemat dohttp/https); jeśli wykrywanie zwróciwebSocketDebuggerUrl, jest on używany, w przeciwnym razie OpenClaw przechodzi awaryjnie do bezpośredniego uzgodnienia WebSocket pod bazowym korzeniem. Jeśli ogłoszony endpoint WebSocket odrzuci uzgodnienie CDP, ale skonfigurowany bazowy korzeń je zaakceptuje, OpenClaw również przechodzi awaryjnie do tego korzenia. Dzięki temu bazowyws://wskazujący na lokalnego Chrome nadal się połączy, ponieważ Chrome akceptuje podniesienia WebSocket tylko na konkretnej ścieżce per-target z/json/version, podczas gdy hostowani dostawcy nadal mogą używać swojego głównego endpointu WebSocket, gdy ich endpoint wykrywania ogłasza krótkotrwały URL, który nie nadaje się do Playwright CDP.
openclaw browser doctor używa tej samej logiki wykrywania w pierwszej kolejności i awaryjnego przejścia na WebSocket
co dołączanie w czasie działania, więc URL bazowego korzenia, który łączy się pomyślnie, nie jest
zgłaszany przez diagnostykę jako nieosiągalny.
Browserbase
Browserbase to platforma chmurowa do uruchamiania przeglądarek headless z wbudowanym rozwiązywaniem CAPTCHA, trybem stealth i rezydencyjnymi proxy.
{ browser: { enabled: true, defaultProfile: "browserbase", remoteCdpTimeoutMs: 3000, remoteCdpHandshakeTimeoutMs: 5000, profiles: { browserbase: { cdpUrl: "wss://connect.browserbase.com?apiKey=<BROWSERBASE_API_KEY>", color: "#F97316", }, }, },}Uwagi:
- Zarejestruj się i skopiuj swój klucz API z panelu przeglądu.
- Zastąp
<BROWSERBASE_API_KEY>swoim rzeczywistym kluczem API Browserbase. - Browserbase automatycznie tworzy sesję przeglądarki przy połączeniu WebSocket, więc ręczny krok tworzenia sesji nie jest potrzebny.
- Bezpłatny plan umożliwia jedną równoczesną sesję i jedną godzinę przeglądarki miesięcznie. Zobacz cennik, aby poznać limity płatnych planów.
- Zobacz dokumentację Browserbase, aby uzyskać pełną dokumentację API, przewodniki po SDK i przykłady integracji.
Notte
Notte to platforma chmurowa do uruchamiania przeglądarek headless z wbudowanym trybem stealth, proxy rezydencjalnymi i natywną dla CDP bramą WebSocket.
{ browser: { enabled: true, defaultProfile: "notte", remoteCdpTimeoutMs: 3000, remoteCdpHandshakeTimeoutMs: 5000, profiles: { notte: { cdpUrl: "wss://us-prod.notte.cc/sessions/connect?token=<NOTTE_API_KEY>", color: "#7C3AED", }, }, },}Uwagi:
- Zarejestruj się i skopiuj swój klucz API ze strony ustawień konsoli.
- Zastąp
<NOTTE_API_KEY>swoim rzeczywistym kluczem API Notte. - Notte automatycznie tworzy sesję przeglądarki przy połączeniu WebSocket, więc ręczny krok tworzenia sesji nie jest potrzebny. Sesja jest niszczona po rozłączeniu WebSocket.
- Bezpłatny plan umożliwia pięć równoczesnych sesji i 100 godzin przeglądarki łącznie. Zobacz cennik, aby poznać limity płatnych planów.
- Zobacz dokumentację Notte, aby uzyskać pełną dokumentację API, przewodniki po SDK i przykłady integracji.
Bezpieczeństwo
Kluczowe idee:
- Sterowanie przeglądarką działa wyłącznie przez local loopback; dostęp przechodzi przez uwierzytelnianie Gateway lub parowanie węzła.
- Samodzielne HTTP API przeglądarki przez loopback używa wyłącznie
uwierzytelniania współdzielonym sekretem: uwierzytelniania bearer tokenem
gateway,
x-openclaw-passwordalbo uwierzytelniania HTTP Basic ze skonfigurowanym hasłem gateway. - Nagłówki tożsamości Tailscale Serve i
gateway.auth.mode: "trusted-proxy"nie uwierzytelniają tego samodzielnego API przeglądarki przez loopback. - Jeśli sterowanie przeglądarką jest włączone, a uwierzytelnianie współdzielonym
sekretem nie jest skonfigurowane, OpenClaw generuje token gateway tylko na czas
działania dla tego uruchomienia. Skonfiguruj jawnie
gateway.auth.token,gateway.auth.password,OPENCLAW_GATEWAY_TOKENalboOPENCLAW_GATEWAY_PASSWORD, jeśli klienci potrzebują stabilnego sekretu między restartami. - OpenClaw nie generuje automatycznie tego tokenu, gdy
gateway.auth.modema już wartośćpassword,nonealbotrusted-proxy. - Trzymaj Gateway i wszystkie hosty węzłów w sieci prywatnej (Tailscale); unikaj ekspozycji publicznej.
- Traktuj zdalne URL-e/tokeny CDP jako sekrety; preferuj zmienne środowiskowe albo menedżera sekretów.
Wskazówki dotyczące zdalnego CDP:
- Preferuj szyfrowane punkty końcowe (HTTPS albo WSS) i krótkotrwałe tokeny, gdy to możliwe.
- Unikaj osadzania długotrwałych tokenów bezpośrednio w plikach konfiguracyjnych.
Profile (wiele przeglądarek)
OpenClaw obsługuje wiele nazwanych profili (konfiguracji routingu). Profile mogą być:
- zarządzane przez OpenClaw: dedykowana instancja przeglądarki opartej na Chromium z własnym katalogiem danych użytkownika i portem CDP
- zdalne: jawny URL CDP (przeglądarka oparta na Chromium działająca gdzie indziej)
- istniejąca sesja: istniejący profil Chrome przez automatyczne połączenie Chrome DevTools MCP
Wartości domyślne:
- Profil
openclawjest tworzony automatycznie, jeśli go brakuje. - Profil
userjest wbudowany do dołączania do istniejącej sesji Chrome MCP. - Profile istniejącej sesji poza
usersą opcjonalne; utwórz je z--driver existing-session. - Lokalne porty CDP są domyślnie przydzielane z zakresu 18800-18899.
- Usunięcie profilu przenosi jego lokalny katalog danych do Kosza.
Wszystkie punkty końcowe sterowania akceptują ?profile=<name>; CLI używa --browser-profile.
Istniejąca sesja przez Chrome DevTools MCP
OpenClaw może też dołączać do działającego profilu przeglądarki opartej na Chromium przez oficjalny serwer Chrome DevTools MCP. Powoduje to ponowne użycie kart i stanu logowania już otwartych w tym profilu przeglądarki.
Oficjalne materiały wprowadzające i instrukcje konfiguracji:
Wbudowany profil:
user
Opcjonalnie: utwórz własny niestandardowy profil istniejącej sesji, jeśli chcesz użyć innej nazwy, koloru albo katalogu danych przeglądarki.
Domyślne zachowanie:
- Wbudowany profil
userużywa automatycznego połączenia Chrome MCP, które celuje w domyślny lokalny profil Google Chrome.
Użyj userDataDir dla Brave, Edge, Chromium albo niedomyślnego profilu Chrome.
~ rozwija się do katalogu domowego Twojego systemu operacyjnego:
{ browser: { profiles: { brave: { driver: "existing-session", attachOnly: true, userDataDir: "~/Library/Application Support/BraveSoftware/Brave-Browser", color: "#FB542B", }, }, },}Następnie w odpowiadającej przeglądarce:
- Otwórz stronę inspekcji tej przeglądarki do zdalnego debugowania.
- Włącz zdalne debugowanie.
- Pozostaw przeglądarkę uruchomioną i zatwierdź monit połączenia, gdy OpenClaw się dołącza.
Typowe strony inspekcji:
- Chrome:
chrome://inspect/#remote-debugging - Brave:
brave://inspect/#remote-debugging - Edge:
edge://inspect/#remote-debugging
Test smoke dołączania na żywo:
openclaw browser --browser-profile user startopenclaw browser --browser-profile user statusopenclaw browser --browser-profile user tabsopenclaw browser --browser-profile user snapshot --format aiJak wygląda sukces:
statuspokazujedriver: existing-sessionstatuspokazujetransport: chrome-mcpstatuspokazujerunning: truetabswyświetla już otwarte karty przeglądarkisnapshotzwraca odwołania z wybranej karty na żywo
Co sprawdzić, jeśli dołączenie nie działa:
- docelowa przeglądarka oparta na Chromium ma wersję
144+ - zdalne debugowanie jest włączone na stronie inspekcji tej przeglądarki
- przeglądarka wyświetliła monit zgody na dołączenie i został on zaakceptowany
- jeśli Chrome został uruchomiony z jawnym
--remote-debugging-port, ustawbrowser.profiles.<name>.cdpUrlna ten punkt końcowy DevTools zamiast polegać na automatycznym połączeniu Chrome MCP openclaw doctormigruje starą konfigurację przeglądarki opartą na rozszerzeniu i sprawdza, czy Chrome jest zainstalowany lokalnie dla domyślnych profili automatycznego połączenia, ale nie może włączyć za Ciebie zdalnego debugowania po stronie przeglądarki
Użycie przez agenta:
- Użyj
profile="user", gdy potrzebujesz stanu zalogowanej przeglądarki użytkownika. - Jeśli używasz niestandardowego profilu istniejącej sesji, przekaż tę jawną nazwę profilu.
- Wybieraj ten tryb tylko wtedy, gdy użytkownik jest przy komputerze, aby zatwierdzić monit dołączenia.
- Gateway albo host węzła może uruchomić
npx chrome-devtools-mcp@latest --autoConnect
Uwagi:
- Ta ścieżka jest bardziej ryzykowna niż izolowany profil
openclaw, ponieważ może działać wewnątrz zalogowanej sesji przeglądarki. - OpenClaw nie uruchamia przeglądarki dla tego sterownika; tylko się do niej dołącza.
- OpenClaw używa tutaj oficjalnego przepływu Chrome DevTools MCP
--autoConnect. Jeśli ustawionouserDataDir, jest on przekazywany dalej, aby wskazać ten katalog danych użytkownika. - Istniejąca sesja może dołączać na wybranym hoście albo przez połączony węzeł przeglądarki. Jeśli Chrome działa gdzie indziej i żaden węzeł przeglądarki nie jest połączony, użyj zamiast tego zdalnego CDP albo hosta węzła.
Niestandardowe uruchamianie Chrome MCP
Nadpisz uruchamiany serwer Chrome DevTools MCP dla profilu, gdy domyślny przepływ
npx chrome-devtools-mcp@latest nie jest tym, czego chcesz (hosty offline,
przypięte wersje, dostarczone binaria):
| Pole | Co robi |
|---|---|
mcpCommand |
Plik wykonywalny do uruchomienia zamiast npx. Rozwiązywany bez zmian; ścieżki bezwzględne są respektowane. |
mcpArgs |
Tablica argumentów przekazywana dosłownie do mcpCommand. Zastępuje domyślne argumenty chrome-devtools-mcp@latest --autoConnect. |
Gdy cdpUrl jest ustawione w profilu istniejącej sesji, OpenClaw pomija
--autoConnect i automatycznie przekazuje punkt końcowy do Chrome MCP:
http(s)://...→--browserUrl <url>(punkt końcowy wykrywania HTTP DevTools).ws(s)://...→--wsEndpoint <url>(bezpośredni WebSocket CDP).
Flag punktu końcowego i userDataDir nie można łączyć: gdy ustawiono cdpUrl,
userDataDir jest ignorowane przy uruchamianiu Chrome MCP, ponieważ Chrome MCP
dołącza do działającej przeglądarki za punktem końcowym zamiast otwierać katalog
profilu.
Ograniczenia funkcji istniejącej sesji
W porównaniu z zarządzanym profilem openclaw sterowniki istniejącej sesji są bardziej ograniczone:
- Zrzuty ekranu - przechwytywanie stron i przechwytywanie elementów przez
--refdziała; selektory CSS--elementnie działają.--full-pagenie można łączyć z--refani--element. Playwright nie jest wymagany do zrzutów ekranu stron ani elementów opartych na ref. - Akcje -
click,type,hover,scrollIntoView,dragiselectwymagają odwołań ze snapshotu (bez selektorów CSS).click-coordsklika widoczne współrzędne viewportu i nie wymaga odwołania ze snapshotu.clickobsługuje tylko lewy przycisk.typenie obsługujeslowly=true; użyjfillalbopress.pressnie obsługujedelayMs.type,hover,scrollIntoView,drag,select,fillievaluatenie obsługują limitów czasu dla pojedynczych wywołań.selectakceptuje pojedynczą wartość. - Oczekiwanie / przesyłanie / dialog -
wait --urlobsługuje wzorce dokładne, podciągi i glob;wait --load networkidlenie jest obsługiwane w profilach istniejącej sesji (działa w profilach zarządzanych oraz surowych/zdalnych profilach CDP). Hooki przesyłania wymagająrefalboinputRef, jednego pliku naraz, bez CSSelement. Hooki dialogów nie obsługują nadpisań limitu czasu anidialogId. - Widoczność dialogu - odpowiedzi akcji zarządzanej przeglądarki zawierają
blockedByDialogibrowserState.dialogs.pending, gdy akcja otwiera modalne okno dialogowe; snapshoty również zawierają oczekujący stan dialogu. Odpowiedz za pomocąbrowser dialog --accept/--dismiss --dialog-id <id>, gdy dialog oczekuje. Dialogi obsłużone poza OpenClaw pojawiają się podbrowserState.dialogs.recent. - Funkcje tylko dla trybu zarządzanego - akcje wsadowe, eksport PDF, przechwytywanie pobrań i
responsebodynadal wymagają ścieżki zarządzanej przeglądarki.
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 pracy deweloperskiej. - Deterministyczne sterowanie kartami:
tabszwraca najpierwsuggestedTargetId, a potem stabilne uchwytytabId, takie jakt1, opcjonalne etykiety i surowetargetId. Agenci powinni ponownie używaćsuggestedTargetId; surowe identyfikatory pozostają dostępne do debugowania i kompatybilności.
Wybór przeglądarki
Podczas lokalnego uruchamiania OpenClaw wybiera pierwszą dostępną:
- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
Możesz nadpisać to za pomocą browser.executablePath.
Platformy:
- macOS: sprawdza
/Applicationsi~/Applications. - Linux: sprawdza typowe lokalizacje Chrome/Brave/Edge/Chromium pod
/usr/bin,/snap/bin,/opt/google,/opt/brave.com,/usr/lib/chromiumi/usr/lib/chromium-browser, a także Chromium zarządzany przez Playwright podPLAYWRIGHT_BROWSERS_PATHalbo~/.cache/ms-playwright. - Windows: sprawdza typowe lokalizacje instalacji.
API sterowania (opcjonalne)
Do skryptowania i debugowania Gateway udostępnia małe HTTP API sterowania
dostępne tylko przez loopback oraz odpowiadające mu CLI openclaw browser
(snapshoty, refy, wzmocnienia oczekiwania, wyjście JSON, przepływy debugowania).
Zobacz API sterowania przeglądarką, aby uzyskać pełną
dokumentację.
Rozwiązywanie problemów
W przypadku problemów specyficznych dla Linuksa (zwłaszcza snap Chromium) zobacz Rozwiązywanie problemów z przeglądarką.
W przypadku konfiguracji z podziałem hostów WSL2 Gateway + Windows Chrome zobacz Rozwiązywanie problemów z WSL2 + Windows + zdalnym Chrome CDP.
Błąd uruchamiania CDP a blokada nawigacji SSRF
To różne klasy błędów, które wskazują na różne ścieżki kodu.
- Błąd uruchamiania lub gotowości CDP oznacza, że OpenClaw nie może potwierdzić, że płaszczyzna sterowania przeglądarką działa prawidłowo.
- Blokada nawigacji SSRF oznacza, że płaszczyzna sterowania przeglądarką działa prawidłowo, ale docelowy adres nawigacji strony został odrzucony przez politykę.
Typowe przykłady:
- Błąd uruchamiania lub gotowości CDP:
Chrome CDP websocket for profile "openclaw" is not reachable after startRemote CDP for profile "<name>" is not reachable at <cdpUrl>Port <port> is in use for profile "<name>" but not by openclaw, gdy usługa zewnętrzna CDP na local loopback jest skonfigurowana bezattachOnly: true
- Blokada nawigacji SSRF:
- Przepływy
open,navigate, migawki albo otwierania kart kończą się błędem polityki przeglądarki/sieci, podczas gdystartitabsnadal działają
- Przepływy
Użyj tej minimalnej sekwencji, aby rozdzielić te dwa przypadki:
openclaw browser --browser-profile openclaw startopenclaw browser --browser-profile openclaw tabsopenclaw browser --browser-profile openclaw open https://example.comJak interpretować wyniki:
- Jeśli
startkończy się błędemnot reachable after start, najpierw rozwiąż problem gotowości CDP. - Jeśli
startsię powiedzie, aletabszawiedzie, płaszczyzna sterowania nadal jest niesprawna. Traktuj to jako problem osiągalności CDP, a nie problem nawigacji po stronie. - Jeśli
startitabssię powiodą, aleopenlubnavigatezawiedzie, płaszczyzna sterowania przeglądarką działa, a błąd dotyczy polityki nawigacji albo strony docelowej. - Jeśli
start,tabsiopenzakończą się powodzeniem, podstawowa ścieżka sterowania zarządzaną przeglądarką działa prawidłowo.
Ważne szczegóły zachowania:
- Konfiguracja przeglądarki domyślnie używa obiektu polityki SSRF typu fail-closed, nawet jeśli nie konfigurujesz
browser.ssrfPolicy. - Dla zarządzanego profilu
openclawna local loopback kontrole kondycji CDP celowo pomijają egzekwowanie osiągalności SSRF przeglądarki dla własnej lokalnej płaszczyzny sterowania OpenClaw. - Ochrona nawigacji jest osobna. Pomyślny wynik
startlubtabsnie oznacza, że późniejszy celopenlubnavigatejest dozwolony.
Wytyczne bezpieczeństwa:
- Nie rozluźniaj domyślnie polityki SSRF przeglądarki.
- Preferuj wąskie wyjątki hostów, takie jak
hostnameAllowlistluballowedHostnames, zamiast szerokiego dostępu do sieci prywatnej. - Używaj
dangerouslyAllowPrivateNetwork: truetylko w celowo zaufanych środowiskach, w których dostęp przeglądarki do sieci prywatnej jest wymagany i sprawdzony.
Narzędzia agenta i sposób działania sterowania
Agent otrzymuje jedno narzędzie do automatyzacji przeglądarki:
browser- doctor/status/start/stop/tabs/open/focus/close/snapshot/screenshot/navigate/act
Jak to jest mapowane:
browser snapshotzwraca stabilne drzewo UI (AI albo ARIA).browser actużywa identyfikatorówrefz migawki do klikania/pisania/przeciągania/wybierania.browser screenshotprzechwytuje piksele (pełną stronę, element albo oznaczone referencje).browser doctorsprawdza gotowość Gateway, Plugin, profilu, przeglądarki i karty.browserakceptuje:profile, aby wybrać nazwany profil przeglądarki (openclaw, chrome albo zdalny CDP).target(sandbox|host|node), aby wybrać, gdzie działa przeglądarka.- W sesjach w piaskownicy
target: "host"wymagaagents.defaults.sandbox.browser.allowHostControl=true. - Jeśli
targetzostanie pominięty: sesje w piaskownicy domyślnie używająsandbox, a sesje poza piaskownicą domyślnie używająhost. - Jeśli podłączony jest węzeł obsługujący przeglądarkę, narzędzie może automatycznie skierować pracę do niego, chyba że przypniesz
target="host"lubtarget="node".
Dzięki temu agent pozostaje deterministyczny i unika kruchych selektorów.
Powiązane
- Przegląd narzędzi - wszystkie dostępne narzędzia agenta
- Piaskownica - sterowanie przeglądarką w środowiskach piaskownicy
- Bezpieczeństwo - ryzyka sterowania przeglądarką i utwardzanie