Tools

ब्राउज़र (OpenClaw-प्रबंधित)

OpenClaw एक समर्पित Chrome/Brave/Edge/Chromium प्रोफ़ाइल चला सकता है जिसे एजेंट नियंत्रित करता है। यह Gateway के भीतर एक छोटी स्थानीय नियंत्रण सेवा (केवल लूपबैक) के माध्यम से चलता है और आपके निजी ब्राउज़र से पृथक रहता है।

  • इसे एक अलग, केवल-एजेंट ब्राउज़र समझें। openclaw प्रोफ़ाइल कभी भी आपकी निजी ब्राउज़र प्रोफ़ाइल को नहीं छूती।
  • एजेंट इस पृथक माध्यम में टैब खोलता है, पृष्ठ पढ़ता है, क्लिक करता है और टाइप करता है।
  • इसके बजाय, अंतर्निहित user प्रोफ़ाइल Chrome DevTools MCP के माध्यम से आपके वास्तविक साइन-इन किए गए Chrome सत्र से जुड़ती है।

आपको क्या मिलता है

  • openclaw नामक एक अलग ब्राउज़र प्रोफ़ाइल (डिफ़ॉल्ट रूप से नारंगी रंग)।
  • नियतात्मक टैब नियंत्रण (सूचीबद्ध करना/खोलना/फ़ोकस करना/बंद करना)।
  • एजेंट क्रियाएँ (क्लिक/टाइप/ड्रैग/चयन), स्नैपशॉट, स्क्रीनशॉट, PDF।
  • Playwright-समर्थित प्रोफ़ाइल प्रत्यक्ष अटैचमेंट नेविगेशन को प्रबंधित डाउनलोड डायरेक्टरी में सहेजती हैं और अंतिम-URL नीति सत्यापन के बाद { url, suggestedFilename, path } मेटाडेटा लौटाती हैं।
  • जब कोई क्रिया तुरंत एक या अधिक डाउनलोड शुरू करती है, तो Playwright-समर्थित एजेंट क्रियाएँ उसी प्रबंधित मेटाडेटा वाली downloads सरणी लौटाती हैं।
  • एक बंडल किया गया browser-automation skill, जो ब्राउज़र plugin सक्षम होने पर एजेंटों को स्नैपशॉट, स्थिर-टैब, पुराने-संदर्भ और मैन्युअल-अवरोधक पुनर्प्राप्ति लूप सिखाता है।
  • वैकल्पिक बहु-प्रोफ़ाइल समर्थन (openclaw, work, remote, ...)।

यह ब्राउज़र आपका दैनिक उपयोग वाला ब्राउज़र नहीं है। यह एजेंट स्वचालन और सत्यापन के लिए एक सुरक्षित, पृथक सतह है।

macOS पर, आप Chrome-परिवार की किसी सिस्टम प्रोफ़ाइल से कुकीज़ को स्पष्ट रूप से एक अलग प्रबंधित प्रोफ़ाइल में कॉपी कर सकते हैं। प्रबंधित ब्राउज़र फिर भी अपनी उपयोगकर्ता डेटा डायरेक्टरी का उपयोग करता है; केवल चुनी हुई कुकीज़ कॉपी होती हैं और स्थानीय स्टोरेज तथा IndexedDB वहीं बने रहते हैं। आयात कमांड और सीमाओं के लिए प्रोफ़ाइल या openclaw browser CLI संदर्भ देखें।

त्वरित शुरुआत

bash
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 snapshot

"ब्राउज़र अक्षम है" का अर्थ है कि plugin या browser.enabled बंद है; देखें कॉन्फ़िगरेशन और Plugin नियंत्रण

यदि openclaw browser पूरी तरह अनुपस्थित है, या एजेंट कहता है कि ब्राउज़र टूल अनुपलब्ध है, तो ब्राउज़र कमांड या टूल अनुपस्थित है पर जाएँ।

Plugin नियंत्रण

डिफ़ॉल्ट browser टूल एक बंडल किया गया plugin है। इसे किसी अन्य ऐसे plugin से बदलने के लिए अक्षम करें जो समान browser टूल नाम पंजीकृत करता हो:

json5
{  plugins: {    entries: {      browser: {        enabled: false,      },    },  },}

डिफ़ॉल्ट के लिए plugins.entries.browser.enabled और browser.enabled=true दोनों आवश्यक हैं। केवल plugin को अक्षम करने पर openclaw browser CLI, browser.request gateway विधि, एजेंट टूल और नियंत्रण सेवा एक इकाई के रूप में हट जाते हैं; प्रतिस्थापन के लिए आपका browser.* कॉन्फ़िगरेशन यथावत रहता है।

ब्राउज़र कॉन्फ़िगरेशन में बदलाव के बाद Gateway को पुनः आरंभ करना आवश्यक है, ताकि plugin अपनी सेवा फिर से पंजीकृत कर सके।

एजेंट मार्गदर्शन

टूल-प्रोफ़ाइल नोट: tools.profile: "coding" में web_search और web_fetch शामिल हैं, लेकिन पूरा browser टूल नहीं। एजेंट या उत्पन्न उप-एजेंट को ब्राउज़र स्वचालन उपयोग करने देने के लिए प्रोफ़ाइल चरण में browser जोड़ें:

json5
{  tools: {    profile: "coding",    alsoAllow: ["browser"],  },}

एक एजेंट के लिए agents.entries.*.tools.alsoAllow: ["browser"] का उपयोग करें। अकेला tools.subagents.tools.allow: ["browser"] पर्याप्त नहीं है, क्योंकि उप-एजेंट नीति प्रोफ़ाइल फ़िल्टरिंग के बाद लागू होती है।

ब्राउज़र plugin दो स्तरों का एजेंट मार्गदर्शन प्रदान करता है:

  • browser टूल का विवरण संक्षिप्त, हमेशा-सक्रिय अनुबंध प्रदान करता है: सही प्रोफ़ाइल चुनें, संदर्भों को उसी टैब पर रखें, टैब को लक्षित करने के लिए tabId/लेबल का उपयोग करें और बहु-चरणीय कार्य के लिए ब्राउज़र skill लोड करें।
  • बंडल किया गया browser-automation skill अधिक विस्तृत संचालन लूप प्रदान करता है: पहले स्थिति/टैब जाँचें, कार्य टैब को लेबल करें, क्रिया से पहले स्नैपशॉट लें, UI परिवर्तन के बाद फिर स्नैपशॉट लें, पुराने संदर्भों से एक बार पुनर्प्राप्ति करें और अनुमान लगाने के बजाय लॉगिन/2FA/captcha या कैमरा/माइक्रोफ़ोन अवरोधकों को मैन्युअल क्रिया के रूप में रिपोर्ट करें।

Plugin के साथ बंडल किए गए skills, plugin सक्षम होने पर एजेंट के उपलब्ध skills में सूचीबद्ध होते हैं। पूर्ण skill निर्देश आवश्यकता होने पर लोड होते हैं, इसलिए नियमित कार्यों में पूरी टोकन लागत नहीं लगती।

ब्राउज़र कमांड या टूल अनुपस्थित है

यदि अपग्रेड के बाद openclaw browser अज्ञात है, browser.request अनुपस्थित है या एजेंट ब्राउज़र टूल को अनुपलब्ध बताता है, तो सामान्य कारण ऐसी plugins.allow सूची है जिसमें browser शामिल नहीं है और कोई रूट browser कॉन्फ़िगरेशन ब्लॉक मौजूद नहीं है। इसे जोड़ें:

json5
{  plugins: {    allow: ["telegram", "browser"],  },}

एक स्पष्ट रूट browser ब्लॉक (browser के अंतर्गत कोई भी कुंजी, जैसे browser.enabled=true या browser.profiles.<name>) प्रतिबंधात्मक plugins.allow के अंतर्गत भी बंडल किए गए ब्राउज़र plugin को सक्रिय करता है, जो बंडल किए गए चैनल कॉन्फ़िगरेशन व्यवहार के अनुरूप है। केवल plugins.entries.browser.enabled=true और tools.alsoAllow: ["browser"] स्वयं अनुमति-सूची की सदस्यता का स्थान नहीं ले सकते। plugins.allow को पूरी तरह हटाने से भी डिफ़ॉल्ट पुनर्स्थापित हो जाता है।

प्रोफ़ाइल: openclaw, user, chrome

  • openclaw: प्रबंधित, पृथक ब्राउज़र (किसी एक्सटेंशन की आवश्यकता नहीं)।
  • user: आपके वास्तविक साइन-इन किए गए Chrome सत्र के लिए अंतर्निहित Chrome DevTools MCP अटैच प्रोफ़ाइल। OpenClaw के पहली बार जुड़ने पर Chrome अवरोधक "Allow remote debugging?" प्रॉम्प्ट दिखाता है, इसलिए किसी व्यक्ति का कंप्यूटर के पास होना आवश्यक है।
  • chrome: आपके वास्तविक साइन-इन किए गए Chrome सत्र के लिए अंतर्निहित Chrome एक्सटेंशन प्रोफ़ाइल। यह फ़ोन से तब भी काम करता है जब डेस्क पर कोई न हो, क्योंकि यह रिमोट-डीबगिंग पोर्ट के बजाय OpenClaw ब्राउज़र एक्सटेंशन के माध्यम से टैब संचालित करता है, इसलिए "Allow remote debugging?" प्रॉम्प्ट नहीं आता।

एजेंट ब्राउज़र टूल कॉल के लिए:

  • डिफ़ॉल्ट: पृथक openclaw ब्राउज़र का उपयोग करें।
  • जब मौजूदा लॉग-इन सत्र महत्वपूर्ण हों और उपयोगकर्ता कंप्यूटर से दूर हो (Telegram, WhatsApp आदि), तो profile="chrome" (एक्सटेंशन) को प्राथमिकता दें।
  • जब मौजूदा लॉग-इन सत्र महत्वपूर्ण हों और उपयोगकर्ता अटैच प्रॉम्प्ट को स्वीकृति देने के लिए कंप्यूटर पर हो, तो profile="user" (Chrome MCP) को प्राथमिकता दें।
  • जब आप कोई विशिष्ट ब्राउज़र मोड चाहते हैं, तो profile स्पष्ट ओवरराइड है।

यदि आप डिफ़ॉल्ट रूप से प्रबंधित मोड चाहते हैं, तो browser.defaultProfile: "openclaw" सेट करें।

कॉन्फ़िगरेशन

ब्राउज़र सेटिंग्स ~/.openclaw/openclaw.json में रहती हैं।

json5
{  browser: {    enabled: true, // डिफ़ॉल्ट: true    evaluateEnabled: true, // डिफ़ॉल्ट: true; false act:evaluate (मनमाना JS) को अक्षम करता है    ssrfPolicy: {      // dangerouslyAllowPrivateNetwork: true, // केवल विश्वसनीय निजी-नेटवर्क पहुँच के लिए स्वेच्छा से सक्षम करें      // hostnameAllowlist: ["*.example.com", "example.com"],      // allowedHostnames: ["localhost"],    },    // cdpUrl: "http://127.0.0.1:18792", // पुराना एकल-प्रोफ़ाइल ओवरराइड    tabCleanup: {      enabled: true, // डिफ़ॉल्ट: true    },    // snapshotDefaults: { mode: "efficient" }, // कॉलर द्वारा मोड न दिए जाने पर डिफ़ॉल्ट स्नैपशॉट मोड    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" },    },  },}

जब कॉलर कोई स्पष्ट snapshotFormat या mode नहीं देता, तब browser.snapshotDefaults.mode: "efficient" डिफ़ॉल्ट snapshot निष्कर्षण मोड बदलता है; प्रत्येक कॉल के स्नैपशॉट विकल्पों के लिए ब्राउज़र नियंत्रण API देखें।

टैब सफ़ाई का स्वामित्व

सत्र टैब सफ़ाई केवल OpenClaw ब्राउज़र टूल द्वारा action: "open" के साथ बनाए गए टैब पर लागू होती है। OpenClaw उन टैब को नहीं अपनाता जो पहले से खुले थे, उपयोगकर्ता द्वारा खोले गए थे या जिनका स्वामित्व अन्यथा अज्ञात है। browser.tabCleanup ब्लॉक प्राथमिक सत्रों के लिए आवधिक निष्क्रियता और सीमा सफ़ाई को नियंत्रित करता है; इसे अक्षम करने से स्पष्ट सत्र जीवनचक्र सफ़ाई अक्षम नहीं होती।

होस्ट-स्थानीय ओपन के लिए, स्थिर नेटिव CDP लक्ष्य और ब्राउज़र पहचान वाला स्वामित्व साझा SQLite स्थिति में संग्रहीत होता है। वे रिकॉर्ड Gateway के पुनरारंभ के बाद भी बने रहते हैं और /new तथा अन्य सत्र जीवनचक्र सफ़ाई के योग्य रहते हैं; सत्र जीवनचक्र सफ़ाई में उप-एजेंट, cron और ACP सत्र की समाप्तियाँ शामिल हैं। जिन रिकॉर्ड का टूल-सामना लक्ष्य नेटिव CDP लक्ष्य है, वे पुनरारंभ के बाद निष्क्रियता और प्रति-सत्र सीमा सफ़ाई के लिए भी योग्य बने रहते हैं। Chrome MCP लक्ष्य हैंडल प्रक्रिया-स्थानीय होते हैं, इसलिए निष्क्रिय मौजूदा-सत्र रिकॉर्ड जीवनचक्र सफ़ाई की प्रतीक्षा करते हैं, बजाय ऐसी गतिविधि पर निष्क्रियता सफ़ाई का जोखिम लेने के जिसे पुनरारंभ के बाद सुरक्षित रूप से किसी के नाम नहीं किया जा सकता। यह स्थायी पथ OpenClaw-प्रबंधित प्रोफ़ाइल, नियमित रिमोट CDP प्रोफ़ाइल और स्पष्ट cdpUrl वाली मौजूदा-सत्र प्रोफ़ाइल को कवर कर सकता है, बशर्ते OpenClaw नेटिव लक्ष्य और स्थिर ब्राउज़र पहचान दोनों को हल कर सके। किसी स्थायी रिकॉर्ड को बंद करने से पहले, OpenClaw सत्यापित करता है कि कॉन्फ़िगर की गई प्रोफ़ाइल और ब्राउज़र इंस्टेंस अभी भी मेल खाते हैं।

Chrome MCP --autoConnect, ऐसे CDP एंडपॉइंट जिनकी /json/version प्रतिक्रिया में स्थिर ब्राउज़र पहचान नहीं है और ऐसे ओपन जिनका नेटिव लक्ष्य हल नहीं किया जा सकता, प्रक्रिया-स्थानीय सर्वोत्तम-प्रयास ट्रैकिंग बने रहते हैं। उस Gateway प्रक्रिया के चलते समय उनकी सफ़ाई की जा सकती है, लेकिन Gateway के पुनरारंभ के बाद वे स्वचालित रूप से बंद नहीं होते। स्थायी ट्रैकिंग उपलब्ध होने से पहले खुले छोड़े गए टैब पूर्वव्यापी रूप से नहीं अपनाए जाते; उन टैब को मैन्युअल रूप से बंद करें।

सफ़ाई सर्वोत्तम प्रयास है, यह गारंटी नहीं कि प्रत्येक योग्य टैब तुरंत बंद हो जाएगा। अस्थायी स्वामित्व जाँच या बंद करने की विफलता स्थायी सफ़ाई को बाद में पुनः प्रयास के लिए लंबित छोड़ देती है। पुनः प्रयास असीमित नहीं हैं: जब ब्राउज़र पहुँच से बाहर बना रहता है और टैब का एक दिन से अधिक समय तक उपयोग नहीं हुआ हो, तो ट्रैकिंग पंक्ति हटा दी जाती है, ताकि स्थायी स्टोर ऐसे टैब से न भर सके जिन्हें फिर कभी सत्यापित नहीं किया जा सकता।

स्क्रीनशॉट विज़न (केवल-पाठ मॉडल समर्थन)

जब मुख्य मॉडल केवल-पाठ है (विज़न/मल्टीमोडल समर्थन नहीं है), तो ब्राउज़र स्क्रीनशॉट ऐसे छवि ब्लॉक लौटाते हैं जिन्हें मॉडल पढ़ नहीं सकता। ब्राउज़र स्क्रीनशॉट मौजूदा छवि-समझ कॉन्फ़िगरेशन का पुनः उपयोग करते हैं, इसलिए मीडिया समझ के लिए कॉन्फ़िगर किया गया छवि मॉडल बिना किसी ब्राउज़र-विशिष्ट मॉडल सेटिंग के स्क्रीनशॉट का पाठ के रूप में वर्णन कर सकता है।

json5
{  tools: {    media: {      image: {        models: [          { provider: "bytedance", model: "doubao-seed-2.0-pro" },          // फ़ॉलबैक उम्मीदवार जोड़ें; पहली सफलता स्वीकार की जाती है          { provider: "openai", model: "gpt-4o" },        ],      },      // छवि समर्थन के लिए टैग किए जाने पर साझा मीडिया मॉडल भी काम करते हैं।      // models: [{ provider: "openai", model: "gpt-4o", capabilities: ["image"] }],    },  },  agents: {    defaults: {      // मौजूदा छवि-मॉडल डिफ़ॉल्ट का भी पालन किया जाता है।      // imageModel: { primary: "openai/gpt-4o" },    },  },}

यह कैसे काम करता है:

  1. एजेंट browser screenshot को कॉल करता है और हमेशा की तरह एक छवि डिस्क पर कैप्चर की जाती है।
  2. ब्राउज़र टूल मौजूदा छवि-समझ रनटाइम से पूछता है कि क्या वह कॉन्फ़िगर किए गए मीडिया छवि मॉडल, साझा मीडिया मॉडल, छवि-मॉडल डिफ़ॉल्ट या प्रमाणीकरण-समर्थित छवि प्रदाता का उपयोग करके स्क्रीनशॉट का वर्णन कर सकता है।
  3. विज़न मॉडल एक टेक्स्ट विवरण लौटाता है, जिसे wrapExternalContent (प्रॉम्प्ट इंजेक्शन सुरक्षा) से रैप करके एजेंट को छवि ब्लॉक के बजाय टेक्स्ट ब्लॉक के रूप में लौटाया जाता है।
  4. यदि छवि-समझ अनुपलब्ध हो, छोड़ दी जाए या विफल हो जाए, तो ब्राउज़र मूल छवि ब्लॉक लौटाने पर वापस आ जाता है।

स्क्रीनशॉट छवि ब्लॉक निजी टूल परिणाम होते हैं: एजेंट उनका निरीक्षण कर सकता है, लेकिन OpenClaw उन्हें चैनल के उत्तरों में अपने-आप संलग्न नहीं करता। स्क्रीनशॉट साझा करने के लिए, एजेंट से उसे संदेश टूल द्वारा स्पष्ट रूप से भेजने को कहें।

मॉडल फ़ॉलबैक, टाइमआउट, बाइट सीमाओं, प्रोफ़ाइल और प्रदाता अनुरोध सेटिंग के लिए मौजूदा tools.media.image / tools.media.models फ़ील्ड का उपयोग करें।

यदि सक्रिय मुख्य मॉडल पहले से विज़न का समर्थन करता है और कोई स्पष्ट छवि-समझ मॉडल कॉन्फ़िगर नहीं है, तो OpenClaw सामान्य छवि परिणाम बनाए रखता है, ताकि मुख्य मॉडल स्क्रीनशॉट को सीधे पढ़ सके।

पोर्ट और पहुँचयोग्यता
  • नियंत्रण सेवा gateway.port से व्युत्पन्न पोर्ट पर लूपबैक से बाइंड होती है (डिफ़ॉल्ट 18791 = Gateway + 2)। OPENCLAW_GATEWAY_PORT को gateway.port पर प्राथमिकता मिलती है; दोनों में से कोई भी उसी समूह के व्युत्पन्न पोर्ट को स्थानांतरित करता है।
  • स्थानीय openclaw प्रोफ़ाइल नियंत्रण पोर्ट से 9 पोर्ट ऊपर शुरू होने वाली सीमा (डिफ़ॉल्ट 18800-18899) से cdpPort/cdpUrl अपने-आप आवंटित करती हैं; इन्हें केवल रिमोट CDP प्रोफ़ाइल या मौजूदा-सत्र एंडपॉइंट से संलग्न करने के लिए सेट करें। सेट न होने पर cdpUrl प्रबंधित स्थानीय CDP पोर्ट पर डिफ़ॉल्ट होता है।
  • रिमोट और attachOnly CDP पहुँचयोग्यता, WebSocket हैंडशेक और स्थानीय प्रबंधित Chrome स्टार्टअप अंतर्निहित समय-सीमाओं का उपयोग करते हैं।
  • प्रबंधित Chrome को बार-बार लॉन्च करने या उसकी तैयारी में होने वाली विफलताओं पर प्रत्येक प्रोफ़ाइल के लिए सर्किट ब्रेक लागू होता है। लगातार कई विफलताओं के बाद, OpenClaw हर ब्राउज़र टूल कॉल पर Chromium शुरू करने के बजाय नए लॉन्च प्रयासों को थोड़ी देर के लिए रोक देता है। स्टार्टअप समस्या ठीक करें, ब्राउज़र की आवश्यकता न होने पर उसे अक्षम करें या सुधार के बाद Gateway पुनः आरंभ करें।
SSRF नीति
  • ब्राउज़र नेविगेशन और टैब खोलने के अनुरोधों की प्रारंभिक जाँच की जाती है। कार्रवाई और कार्रवाई के बाद की सीमित अनुग्रह अवधि के दौरान, संरक्षित Playwright इंटरैक्शन (क्लिक, निर्देशांक क्लिक, होवर, ड्रैग, स्क्रॉल, चयन, प्रेस, टाइप, फ़ॉर्म भरना और मूल्यांकन) HTTP अनुरोध बाइट भेजे जाने से पहले नीति द्वारा अस्वीकृत शीर्ष-स्तरीय और सबफ़्रेम दस्तावेज़ लोड को रोकते हैं, फिर अंतिम http(s) URL की यथासंभव पुनः जाँच करते हैं।
  • हर नए OpenClaw-प्रबंधित Chrome लॉन्च से पहले, OpenClaw यथासंभव नेटवर्क पूर्वानुमान अक्षम करता है, जिससे उन अस्वीकृत लोड के लिए Chromium का देखा गया अनुमानित प्रीकनेक्ट दब जाता है। यह बहुस्तरीय सुरक्षा है, नीति की सीमा नहीं: नियंत्रण-सेवा पुनः आरंभ होने के बाद पुनः उपयोग किया गया ब्राउज़र और अन्य ब्राउज़र बैकएंड इस सुदृढ़ीकरण को साझा नहीं कर सकते। Playwright रूटिंग फिर भी नेटवर्क फ़ायरवॉल नहीं है और रीडायरेक्ट हॉप, पॉपअप के पहले अनुरोध, Service Worker ट्रैफ़िक, सीमित सुरक्षा विंडो के बाद चलने वाले पेज कोड या प्रत्येक पृष्ठभूमि/उप-संसाधन पथ को इंटरसेप्ट नहीं करती। पूर्ण निर्गमन पृथक्करण के लिए स्वामी-पक्ष पृथक्करण या नीति लागू करने वाला प्रॉक्सी आवश्यक है।
  • सख्त SSRF मोड में रिमोट CDP एंडपॉइंट खोज और /json/version प्रोब (cdpUrl) की भी जाँच की जाती है।
  • Gateway/प्रदाता HTTP_PROXY, HTTPS_PROXY, ALL_PROXY और NO_PROXY पर्यावरण चर OpenClaw-प्रबंधित ब्राउज़र को अपने-आप प्रॉक्सी नहीं करते। प्रबंधित Chrome डिफ़ॉल्ट रूप से सीधे लॉन्च होता है, ताकि प्रदाता प्रॉक्सी सेटिंग ब्राउज़र की SSRF जाँच को कमजोर न करें।
  • OpenClaw-प्रबंधित स्थानीय CDP तैयारी प्रोब और DevTools WebSocket कनेक्शन लॉन्च किए गए सटीक लूपबैक एंडपॉइंट के लिए प्रबंधित नेटवर्क प्रॉक्सी को बायपास करते हैं, इसलिए ऑपरेटर प्रॉक्सी द्वारा लूपबैक निर्गमन अवरुद्ध किए जाने पर भी openclaw browser start काम करता है।
  • प्रबंधित ब्राउज़र को ही प्रॉक्सी करने के लिए, browser.extraArgs के माध्यम से स्पष्ट Chrome प्रॉक्सी फ़्लैग पास करें, जैसे --proxy-server=... या --proxy-pac-url=...। जब तक निजी-नेटवर्क ब्राउज़र पहुँच जानबूझकर सक्षम न हो, सख्त SSRF मोड स्पष्ट ब्राउज़र प्रॉक्सी रूटिंग को अवरुद्ध करता है।
  • browser.ssrfPolicy.dangerouslyAllowPrivateNetwork डिफ़ॉल्ट रूप से बंद रहता है; इसे केवल तभी सक्षम करें जब निजी-नेटवर्क ब्राउज़र पहुँच पर जानबूझकर भरोसा किया गया हो।
  • browser.ssrfPolicy.allowPrivateNetwork लेगेसी उपनाम के रूप में समर्थित रहता है।
प्रोफ़ाइल व्यवहार
  • attachOnly: true का अर्थ है कि स्थानीय ब्राउज़र कभी लॉन्च न करें; केवल तभी संलग्न करें जब कोई ब्राउज़र पहले से चल रहा हो।
  • headless को वैश्विक रूप से या प्रत्येक स्थानीय प्रबंधित प्रोफ़ाइल के लिए सेट किया जा सकता है। प्रति-प्रोफ़ाइल मान browser.headless को ओवरराइड करते हैं, इसलिए स्थानीय रूप से लॉन्च की गई एक प्रोफ़ाइल हेडलेस रह सकती है जबकि दूसरी दृश्यमान रहती है।
  • POST /start?headless=true और openclaw browser start --headless browser.headless या प्रोफ़ाइल कॉन्फ़िगरेशन को दोबारा लिखे बिना स्थानीय प्रबंधित प्रोफ़ाइल के लिए एकबारगी हेडलेस लॉन्च का अनुरोध करते हैं। मौजूदा-सत्र, केवल-संलग्न और रिमोट CDP प्रोफ़ाइल इस ओवरराइड को अस्वीकार करती हैं, क्योंकि OpenClaw उन ब्राउज़र प्रक्रियाओं को लॉन्च नहीं करता।
  • DISPLAY या WAYLAND_DISPLAY के बिना Linux होस्ट पर, जब न तो पर्यावरण और न ही प्रोफ़ाइल/वैश्विक कॉन्फ़िगरेशन स्पष्ट रूप से हेडेड मोड चुनता है, तो स्थानीय प्रबंधित प्रोफ़ाइल अपने-आप हेडलेस पर डिफ़ॉल्ट होती हैं। स्पष्ट ब्राउज़र-स्तरीय रूप openclaw browser --json status का उपयोग करें; अंत में openclaw browser status --json भी काम करता है, क्योंकि status अपना स्वयं का --json परिभाषित नहीं करता। कमांड headlessSource को env, profile, config, request, linux-display-fallback या default के रूप में रिपोर्ट करता है।
  • OPENCLAW_BROWSER_HEADLESS=1 वर्तमान प्रक्रिया के लिए स्थानीय प्रबंधित लॉन्च को हेडलेस होने के लिए बाध्य करता है। OPENCLAW_BROWSER_HEADLESS=0 सामान्य शुरुआतों के लिए हेडेड मोड बाध्य करता है और डिस्प्ले सर्वर के बिना Linux होस्ट पर कार्रवाई योग्य त्रुटि लौटाता है; स्पष्ट start --headless अनुरोध फिर भी उस एक लॉन्च के लिए प्राथमिकता पाता है।
  • ब्राउज़र-नियंत्रण रूट और प्रोग्रामेटिक क्लाइंट बिना-डिस्प्ले वाली त्रुटि के मानव-पठनीय error को बनाए रखते हैं और स्थिर कारण no_display_for_headed_profile प्रकट करते हैं। इसके details में केवल profile, requestedHeadless, headlessSource और displayPresent होते हैं, ताकि API क्लाइंट संदेश टेक्स्ट का मिलान किए बिना सही समाधान चुन सकें।
  • चल रही स्थानीय प्रबंधित प्रोफ़ाइल के लिए, स्थिति और डॉक्टर रेंडरर, बैकएंड, डिवाइस/ड्राइवर, सुविधा स्थिति, ड्राइवर समाधान और त्वरित वीडियो क्षमताओं के लिए Chrome के ब्राउज़र-स्तरीय CDP एंडपॉइंट से क्वेरी करते हैं। परिणाम उस ब्राउज़र प्रक्रिया के लिए कैश किया जाता है और openclaw browser --json status द्वारा पूर्ण रूप से प्रदर्शित होता है। निष्क्रिय स्थिति कॉल Chrome को लॉन्च नहीं करती। मौजूदा-सत्र, एक्सटेंशन, रिमोट CDP और सैंडबॉक्स ब्राउज़र अलग रहते हैं और इस प्रबंधित-होस्ट पथ के माध्यम से उनका निरीक्षण नहीं किया जाता।
  • हेडलेस प्रबंधित Chrome अब भी रूढ़िवादी --disable-gpu डिफ़ॉल्ट का उपयोग करता है। निदान त्वरण सक्षम नहीं करता, कोई वैश्विक त्वरण सेटिंग नहीं जोड़ता और सैंडबॉक्स ब्राउज़र को डिवाइस पहुँच प्रदान नहीं करता।
  • executablePath को वैश्विक रूप से या प्रत्येक स्थानीय प्रबंधित प्रोफ़ाइल के लिए सेट किया जा सकता है। प्रति-प्रोफ़ाइल मान browser.executablePath को ओवरराइड करते हैं, इसलिए अलग-अलग प्रबंधित प्रोफ़ाइल अलग Chromium-आधारित ब्राउज़र लॉन्च कर सकती हैं। दोनों रूप आपके OS होम डायरेक्टरी के लिए ~ स्वीकार करते हैं।
  • color (शीर्ष-स्तरीय और प्रति-प्रोफ़ाइल) ब्राउज़र UI को रंग देता है, ताकि आप देख सकें कि कौन-सी प्रोफ़ाइल सक्रिय है।
  • डिफ़ॉल्ट प्रोफ़ाइल openclaw (प्रबंधित स्वतंत्र) है। साइन-इन किए हुए उपयोगकर्ता ब्राउज़र को चुनने के लिए defaultProfile: "user" का उपयोग करें।
  • स्वतः-पहचान क्रम: यदि सिस्टम का डिफ़ॉल्ट ब्राउज़र Chromium-आधारित है, तो वह; अन्यथा Chrome, Brave, Edge, Chromium, Chrome Canary।
  • driver: "existing-session" रॉ CDP के बजाय Chrome DevTools MCP का उपयोग करता है। यह Chrome MCP ऑटो-कनेक्ट के माध्यम से या पहले से चल रहे ब्राउज़र के लिए DevTools एंडपॉइंट होने पर cdpUrl के माध्यम से संलग्न हो सकता है।
  • driver: "extension" आपके साइन-इन किए हुए Chrome को OpenClaw Chrome एक्सटेंशन के माध्यम से संचालित करता है। रिले अपने लूपबैक एंडपॉइंट का स्वामी होता है, इसलिए ये प्रोफ़ाइल cdpUrl स्वीकार नहीं करतीं। यह एकमात्र साइन-इन-ब्राउज़र मोड है जो कंप्यूटर पर किसी के मौजूद न होने पर भी काम करता है।
  • जब मौजूदा-सत्र प्रोफ़ाइल को किसी गैर-डिफ़ॉल्ट Chromium उपयोगकर्ता प्रोफ़ाइल (Brave, Edge आदि) से संलग्न होना हो, तब browser.profiles.<name>.userDataDir सेट करें। यह पथ आपके OS होम डायरेक्टरी के लिए ~ भी स्वीकार करता है।

Brave या किसी अन्य Chromium-आधारित ब्राउज़र का उपयोग करें

यदि आपका सिस्टम डिफ़ॉल्ट ब्राउज़र Chromium-आधारित (Chrome/Brave/Edge/आदि) है, तो OpenClaw उसका अपने-आप उपयोग करता है। स्वतः-पहचान को ओवरराइड करने के लिए browser.executablePath सेट करें। शीर्ष-स्तरीय और प्रति-प्रोफ़ाइल executablePath मान आपके OS होम डायरेक्टरी के लिए ~ स्वीकार करते हैं:

bash
openclaw config set browser.executablePath "/usr/bin/google-chrome"openclaw config set browser.profiles.work.executablePath "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

या इसे प्रत्येक प्लेटफ़ॉर्म के अनुसार कॉन्फ़िगरेशन में सेट करें:

macOS

json5
{browser: {executablePath: "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser",},}

Windows

json5
{browser: {executablePath: "C:\\Program Files\\BraveSoftware\\Brave-Browser\\Application\\brave.exe",},}

Linux

json5
{browser: {executablePath: "/usr/bin/brave-browser",},}

प्रति-प्रोफ़ाइल executablePath केवल उन स्थानीय प्रबंधित प्रोफ़ाइल को प्रभावित करता है जिन्हें OpenClaw लॉन्च करता है। इसके बजाय existing-session प्रोफ़ाइल पहले से चल रहे ब्राउज़र से संलग्न होती हैं, और रिमोट CDP प्रोफ़ाइल cdpUrl के पीछे वाले ब्राउज़र का उपयोग करती हैं।

स्थानीय बनाम रिमोट नियंत्रण

  • स्थानीय नियंत्रण (डिफ़ॉल्ट): Gateway लूपबैक नियंत्रण सेवा शुरू करता है और स्थानीय ब्राउज़र लॉन्च कर सकता है।
  • रिमोट नियंत्रण (Node होस्ट): जिस मशीन पर ब्राउज़र है, उस पर Node होस्ट चलाएँ; Gateway ब्राउज़र कार्रवाइयों को उसके पास प्रॉक्सी करता है।
  • रिमोट CDP: रिमोट Chromium-आधारित ब्राउज़र से संलग्न होने के लिए browser.profiles.<name>.cdpUrl (या browser.cdpUrl) सेट करें। इस स्थिति में OpenClaw स्थानीय ब्राउज़र लॉन्च नहीं करेगा।
  • लूपबैक पर बाहरी रूप से प्रबंधित CDP सेवाओं (उदाहरण के लिए, Docker में 127.0.0.1 पर प्रकाशित Browserless) के लिए attachOnly: true भी सेट करें। attachOnly के बिना लूपबैक CDP को स्थानीय OpenClaw-प्रबंधित ब्राउज़र प्रोफ़ाइल माना जाता है।
  • headless केवल उन स्थानीय प्रबंधित प्रोफ़ाइल को प्रभावित करता है जिन्हें OpenClaw लॉन्च करता है। यह मौजूदा-सत्र या रिमोट CDP ब्राउज़र को पुनः आरंभ या परिवर्तित नहीं करता।
  • executablePath भी उसी स्थानीय प्रबंधित प्रोफ़ाइल नियम का पालन करता है। चल रही स्थानीय प्रबंधित प्रोफ़ाइल पर इसे बदलने से वह प्रोफ़ाइल पुनः आरंभ/समायोजन के लिए चिह्नित हो जाती है, ताकि अगला लॉन्च नए बाइनरी का उपयोग करे।

रोकने का व्यवहार प्रोफ़ाइल मोड के अनुसार अलग होता है:

  • स्थानीय प्रबंधित प्रोफ़ाइल: openclaw browser stop उस ब्राउज़र प्रक्रिया को रोकता है जिसे OpenClaw ने लॉन्च किया था
  • केवल-संलग्न और रिमोट CDP प्रोफ़ाइल: openclaw browser stop सक्रिय नियंत्रण सत्र को बंद करता है और Playwright/CDP अनुकरण ओवरराइड (व्यूपोर्ट, रंग योजना, लोकेल, समय क्षेत्र, ऑफ़लाइन मोड और इसी तरह की स्थिति) मुक्त करता है, भले ही OpenClaw ने कोई ब्राउज़र प्रक्रिया लॉन्च न की हो

रिमोट CDP URL में प्रमाणीकरण शामिल हो सकता है:

  • क्वेरी टोकन (उदाहरण के लिए, https://provider.example?token=<token>)
  • HTTP बेसिक प्रमाणीकरण (उदाहरण के लिए, https://user:pass@provider.example)

OpenClaw, /json/* एंडपॉइंट्स को कॉल करते समय और CDP WebSocket से कनेक्ट करते समय प्रमाणीकरण को बनाए रखता है। टोकन को कॉन्फ़िगरेशन फ़ाइलों में कमिट करने के बजाय पर्यावरण चर या सीक्रेट मैनेजर का उपयोग करना बेहतर है।

Node ब्राउज़र प्रॉक्सी (शून्य-कॉन्फ़िगरेशन डिफ़ॉल्ट)

यदि आप उस मशीन पर Node होस्ट चलाते हैं जहाँ आपका ब्राउज़र है, तो OpenClaw बिना किसी अतिरिक्त ब्राउज़र कॉन्फ़िगरेशन के ब्राउज़र टूल कॉल को स्वचालित रूप से उस Node पर रूट कर सकता है। रिमोट Gateway के लिए यह डिफ़ॉल्ट पथ है।

नोट्स:

  • Node होस्ट एक प्रॉक्सी कमांड के माध्यम से अपना स्थानीय ब्राउज़र नियंत्रण सर्वर उपलब्ध कराता है।
  • प्रोफ़ाइल Node के अपने browser.profiles कॉन्फ़िगरेशन (स्थानीय के समान) से आती हैं।
  • allowProfiles चाहे जो भी हो, प्रॉक्सी कमांड कभी भी स्थायी प्रोफ़ाइल परिवर्तन (create-profile, delete-profile, reset-profile) की अनुमति नहीं देता; ये परिवर्तन सीधे Node पर करें।
  • nodeHost.browserProxy.allowProfiles वैकल्पिक है। पुराने/डिफ़ॉल्ट व्यवहार के लिए इसे खाली छोड़ें: सभी कॉन्फ़िगर की गई प्रोफ़ाइल प्रॉक्सी के माध्यम से पहुँच योग्य बनी रहती हैं।
  • यदि आप nodeHost.browserProxy.allowProfiles सेट करते हैं, तो OpenClaw इसे न्यूनतम-विशेषाधिकार सीमा मानता है, जो यह सीमित करती है कि प्रॉक्सी किन प्रोफ़ाइल नामों को लक्षित करेगा।
  • यदि आप इसे नहीं चाहते, तो अक्षम करें:
    • Node पर: nodeHost.browserProxy.enabled=false
    • Gateway पर: gateway.nodes.browser.mode="off" (कनेक्ट किए गए किसी एक ब्राउज़र Node को चुनने के लिए "auto" या स्पष्ट Node पैरामीटर आवश्यक बनाने के लिए "manual" भी स्वीकार करता है)

Browserless (होस्टेड रिमोट CDP)

Browserless एक होस्टेड Chromium सेवा है जो HTTPS और WebSocket पर CDP कनेक्शन URL उपलब्ध कराती है। OpenClaw दोनों प्रारूपों में से किसी का भी उपयोग कर सकता है, लेकिन रिमोट ब्राउज़र प्रोफ़ाइल के लिए सबसे सरल विकल्प Browserless के कनेक्शन दस्तावेज़ों में दिया गया सीधा WebSocket URL है।

उदाहरण:

json5
{  browser: {    enabled: true,    defaultProfile: "browserless",    profiles: {      browserless: {        cdpUrl: "wss://production-sfo.browserless.io?token=&lt;BROWSERLESS_API_KEY&gt;",        color: "#00AA00",      },    },  },}

नोट्स:

  • &lt;BROWSERLESS_API_KEY&gt; को अपने वास्तविक Browserless टोकन से बदलें।
  • वह क्षेत्रीय एंडपॉइंट चुनें जो आपके Browserless खाते से मेल खाता हो (उनके दस्तावेज़ देखें)।
  • यदि Browserless आपको HTTPS बेस URL देता है, तो आप सीधे CDP कनेक्शन के लिए उसे wss:// में बदल सकते हैं या HTTPS URL को बनाए रख सकते हैं और OpenClaw को /json/version खोजने दे सकते हैं।

उसी होस्ट पर Browserless Docker

जब Browserless को Docker में स्वयं होस्ट किया गया हो और OpenClaw होस्ट पर चल रहा हो, तो Browserless को बाहरी रूप से प्रबंधित CDP सेवा मानें:

json5
{  browser: {    enabled: true,    defaultProfile: "browserless",    profiles: {      browserless: {        cdpUrl: "ws://127.0.0.1:3000",        attachOnly: true,        color: "#00AA00",      },    },  },}

browser.profiles.browserless.cdpUrl में दिया गया पता OpenClaw प्रक्रिया से पहुँच योग्य होना चाहिए। Browserless को उससे मेल खाने वाला पहुँच योग्य एंडपॉइंट भी विज्ञापित करना चाहिए; Browserless के EXTERNAL को उसी सार्वजनिक-से-OpenClaw WebSocket बेस पर सेट करें, जैसे ws://127.0.0.1:3000, ws://browserless:3000, या कोई स्थिर निजी Docker नेटवर्क पता। यदि /json/version, webSocketDebuggerUrl लौटाता है जो ऐसे पते की ओर संकेत करता है जहाँ OpenClaw नहीं पहुँच सकता, तो CDP HTTP स्वस्थ दिख सकता है, जबकि WebSocket अटैच फिर भी विफल होता है।

लूपबैक Browserless प्रोफ़ाइल के लिए attachOnly को अनसेट न छोड़ें। attachOnly के बिना, OpenClaw लूपबैक पोर्ट को स्थानीय रूप से प्रबंधित ब्राउज़र प्रोफ़ाइल मानता है और यह रिपोर्ट कर सकता है कि पोर्ट उपयोग में है, लेकिन उसका स्वामित्व OpenClaw के पास नहीं है।

सीधे WebSocket CDP प्रदाता

कुछ होस्टेड ब्राउज़र सेवाएँ मानक HTTP-आधारित CDP खोज (/json/version) के बजाय सीधा WebSocket एंडपॉइंट उपलब्ध कराती हैं। OpenClaw तीन CDP URL प्रारूप स्वीकार करता है और स्वचालित रूप से सही कनेक्शन रणनीति चुनता है:

  • HTTP(S) खोज - http://host[:port] या https://host[:port]। OpenClaw, WebSocket डीबगर URL खोजने के लिए /json/version को कॉल करता है और फिर कनेक्ट करता है। कोई WebSocket फ़ॉलबैक नहीं।
  • सीधे WebSocket एंडपॉइंट - ws://host[:port]/devtools/<kind>/<id> या wss://..., जिनमें /devtools/browser|page|worker|shared_worker|service_worker/<id> पथ हो। OpenClaw सीधे WebSocket हैंडशेक के माध्यम से कनेक्ट करता है और /json/version को पूरी तरह छोड़ देता है।
  • साधारण WebSocket रूट - ws://host[:port] या wss://host[:port], जिनमें कोई /devtools/... पथ न हो (उदाहरण: Browserless, Browserbase)। OpenClaw पहले HTTP /json/version खोज का प्रयास करता है (स्कीम को http/https में सामान्यीकृत करके); यदि खोज कोई webSocketDebuggerUrl लौटाती है, तो उसका उपयोग किया जाता है, अन्यथा OpenClaw साधारण रूट पर सीधे WebSocket हैंडशेक का फ़ॉलबैक उपयोग करता है। यदि विज्ञापित WebSocket एंडपॉइंट CDP हैंडशेक को अस्वीकार करता है, लेकिन कॉन्फ़िगर किया गया साधारण रूट उसे स्वीकार करता है, तो OpenClaw उस रूट का भी फ़ॉलबैक उपयोग करता है। इससे स्थानीय Chrome की ओर इंगित साधारण ws:// भी कनेक्ट हो सकता है, क्योंकि Chrome केवल /json/version से प्राप्त विशिष्ट प्रति-लक्ष्य पथ पर WebSocket अपग्रेड स्वीकार करता है, जबकि होस्टेड प्रदाता तब भी अपने रूट WebSocket एंडपॉइंट का उपयोग कर सकते हैं, जब उनका खोज एंडपॉइंट ऐसा अल्पकालिक URL विज्ञापित करता है जो Playwright CDP के लिए उपयुक्त नहीं है।

openclaw browser doctor रनटाइम अटैच के समान खोज-प्रथम, WebSocket-फ़ॉलबैक तर्क का उपयोग करता है, इसलिए सफलतापूर्वक कनेक्ट होने वाले साधारण-रूट URL को डायग्नोस्टिक्स द्वारा पहुँच से बाहर रिपोर्ट नहीं किया जाता।

Browserbase

Browserbase अंतर्निहित CAPTCHA समाधान, स्टेल्थ मोड और आवासीय प्रॉक्सी के साथ हेडलेस ब्राउज़र चलाने का एक क्लाउड प्लेटफ़ॉर्म है।

json5
{  browser: {    enabled: true,    defaultProfile: "browserbase",    profiles: {      browserbase: {        cdpUrl: "wss://connect.browserbase.com?apiKey=&lt;BROWSERBASE_API_KEY&gt;",        color: "#F97316",      },    },  },}

नोट्स:

  • साइन अप करें और Overview dashboard से अपनी API Key कॉपी करें।
  • &lt;BROWSERBASE_API_KEY&gt; को अपनी वास्तविक Browserbase API कुंजी से बदलें।
  • Browserbase, WebSocket कनेक्शन पर स्वचालित रूप से ब्राउज़र सत्र बनाता है, इसलिए मैन्युअल सत्र निर्माण चरण की आवश्यकता नहीं है।
  • वर्तमान निःशुल्क-स्तर सीमाओं और सशुल्क योजनाओं के लिए मूल्य निर्धारण देखें।
  • संपूर्ण API संदर्भ, SDK मार्गदर्शिकाओं और एकीकरण उदाहरणों के लिए Browserbase दस्तावेज़ देखें।

Notte

Notte अंतर्निहित स्टेल्थ, आवासीय प्रॉक्सी और CDP-मूल WebSocket Gateway के साथ हेडलेस ब्राउज़र चलाने का एक क्लाउड प्लेटफ़ॉर्म है।

json5
{  browser: {    enabled: true,    defaultProfile: "notte",    profiles: {      notte: {        cdpUrl: "wss://us-prod.notte.cc/sessions/connect?token=&lt;NOTTE_API_KEY&gt;",        color: "#7C3AED",      },    },  },}

नोट्स:

  • साइन अप करें और कंसोल सेटिंग्स पृष्ठ से अपनी API Key कॉपी करें।
  • &lt;NOTTE_API_KEY&gt; को अपनी वास्तविक Notte API कुंजी से बदलें।
  • Notte, WebSocket कनेक्शन पर स्वचालित रूप से ब्राउज़र सत्र बनाता है, इसलिए मैन्युअल सत्र निर्माण चरण की आवश्यकता नहीं है। WebSocket डिस्कनेक्ट होने पर सत्र नष्ट हो जाता है।
  • वर्तमान निःशुल्क-स्तर सीमाओं और सशुल्क योजनाओं के लिए मूल्य निर्धारण देखें।
  • संपूर्ण API संदर्भ, SDK मार्गदर्शिकाओं और एकीकरण उदाहरणों के लिए Notte दस्तावेज़ देखें।

सुरक्षा

मुख्य अवधारणाएँ:

  • ब्राउज़र नियंत्रण केवल लूपबैक तक सीमित है; पहुँच Gateway के प्रमाणीकरण या Node पेयरिंग से होकर जाती है।
  • स्टैंडअलोन लूपबैक ब्राउज़र HTTP API केवल साझा-सीक्रेट प्रमाणीकरण का उपयोग करता है: Gateway टोकन बेयरर प्रमाणीकरण, x-openclaw-password, या कॉन्फ़िगर किए गए Gateway पासवर्ड के साथ HTTP Basic प्रमाणीकरण।
  • Tailscale Serve पहचान हेडर और gateway.auth.mode: "trusted-proxy" इस स्टैंडअलोन लूपबैक ब्राउज़र API को प्रमाणित नहीं करते।
  • यदि ब्राउज़र नियंत्रण सक्षम है और कोई साझा-सीक्रेट प्रमाणीकरण कॉन्फ़िगर नहीं है, तो OpenClaw स्टार्टअप पर ब्राउज़र-नियंत्रण क्रेडेंशियल स्वचालित रूप से बनाकर सुरक्षित रखता है: जब gateway.auth.mode, none हो तब एक टोकन, या जब वह trusted-proxy हो तब एक पासवर्ड (gateway.auth.password के माध्यम से सुरक्षित रखा जाता है ताकि प्रक्रिया से बाहर के लूपबैक क्लाइंट उसे प्राप्त कर सकें)। जब उस मोड के लिए स्पष्ट स्ट्रिंग क्रेडेंशियल पहले से कॉन्फ़िगर हो, या जब gateway.auth.mode, password हो, तो स्वचालित निर्माण छोड़ दिया जाता है।
  • यदि आप बनाए गए सीक्रेट के बजाय अपने नियंत्रण वाला स्थिर सीक्रेट चाहते हैं, तो gateway.auth.token, gateway.auth.password, OPENCLAW_GATEWAY_TOKEN, या OPENCLAW_GATEWAY_PASSWORD को स्पष्ट रूप से कॉन्फ़िगर करें।

रिमोट CDP सुझाव:

  • जहाँ संभव हो, एन्क्रिप्टेड एंडपॉइंट (HTTPS या WSS) और अल्पकालिक टोकन को प्राथमिकता दें।
  • दीर्घकालिक टोकन को सीधे कॉन्फ़िगरेशन फ़ाइलों में एम्बेड करने से बचें।
  • Gateway और सभी Node होस्ट को निजी नेटवर्क (Tailscale) पर रखें; सार्वजनिक रूप से उपलब्ध कराने से बचें।
  • रिमोट CDP URL/टोकन को सीक्रेट मानें; पर्यावरण चर या सीक्रेट मैनेजर को प्राथमिकता दें।

प्रोफ़ाइल (एकाधिक ब्राउज़र)

OpenClaw कई नामित प्रोफ़ाइल (रूटिंग कॉन्फ़िगरेशन) का समर्थन करता है। प्रोफ़ाइल ये हो सकती हैं:

  • OpenClaw-प्रबंधित: अपनी उपयोगकर्ता डेटा डायरेक्टरी + CDP पोर्ट वाला एक समर्पित Chromium-आधारित ब्राउज़र इंस्टेंस
  • रिमोट: एक स्पष्ट CDP URL (कहीं और चल रहा Chromium-आधारित ब्राउज़र)
  • मौजूदा सत्र: Chrome DevTools MCP के स्वचालित कनेक्शन के माध्यम से आपकी मौजूदा Chrome प्रोफ़ाइल

डिफ़ॉल्ट:

  • यदि openclaw प्रोफ़ाइल मौजूद नहीं है, तो वह स्वचालित रूप से बनाई जाती है।
  • user प्रोफ़ाइल Chrome MCP मौजूदा-सत्र अटैच के लिए अंतर्निहित है।
  • user के अतिरिक्त मौजूदा-सत्र प्रोफ़ाइल वैकल्पिक होती हैं; उन्हें --driver existing-session से बनाएँ।
  • स्थानीय CDP पोर्ट डिफ़ॉल्ट रूप से 18800-18899 से आवंटित होते हैं।
  • किसी प्रोफ़ाइल को हटाने पर उसकी स्थानीय डेटा डायरेक्टरी Trash में चली जाती है।

सभी नियंत्रण एंडपॉइंट ?profile=<name> स्वीकार करते हैं; CLI --browser-profile का उपयोग करता है।

Chrome DevTools MCP के माध्यम से मौजूदा सत्र

OpenClaw आधिकारिक Chrome DevTools MCP सर्वर के माध्यम से चल रही Chromium-आधारित ब्राउज़र प्रोफ़ाइल से भी जुड़ सकता है। यह उस ब्राउज़र प्रोफ़ाइल में पहले से खुले टैब और लॉगिन स्थिति का पुनः उपयोग करता है।

आधिकारिक पृष्ठभूमि और सेटअप संदर्भ:

अंतर्निहित प्रोफ़ाइल: user। यदि आप अलग नाम, रंग या ब्राउज़र डेटा डायरेक्टरी चाहते हैं, तो अपनी कस्टम मौजूदा-सत्र प्रोफ़ाइल बनाएँ।

डिफ़ॉल्ट रूप से अंतर्निहित user प्रोफ़ाइल Chrome MCP स्वचालित कनेक्शन का उपयोग करती है, जो डिफ़ॉल्ट स्थानीय Google Chrome प्रोफ़ाइल को लक्षित करता है। Brave, Edge, Chromium या गैर-डिफ़ॉल्ट Chrome प्रोफ़ाइल के लिए userDataDir का उपयोग करें। ~ आपके OS की होम डायरेक्टरी में विस्तृत होता है:

json5
{  browser: {    profiles: {      brave: {        driver: "existing-session",        attachOnly: true,        userDataDir: "~/Library/Application Support/BraveSoftware/Brave-Browser",        color: "#FB542B",      },    },  },}

फिर संबंधित ब्राउज़र में:

  1. रिमोट डीबगिंग के लिए उस ब्राउज़र का निरीक्षण पृष्ठ खोलें।
  2. रिमोट डीबगिंग सक्षम करें।
  3. ब्राउज़र को चालू रखें और OpenClaw के जुड़ने पर कनेक्शन संकेत को स्वीकृति दें।

सामान्य निरीक्षण पृष्ठ:

  • Chrome: chrome://inspect/#remote-debugging
  • Brave: brave://inspect/#remote-debugging
  • Edge: edge://inspect/#remote-debugging

लाइव अटैच स्मोक परीक्षण:

bash
openclaw browser --browser-profile user startopenclaw browser --browser-profile user statusopenclaw browser --browser-profile user tabsopenclaw browser --browser-profile user snapshot --format ai

सफलता इस प्रकार दिखाई देती है:

  • status driver: existing-session दिखाता है
  • status transport: chrome-mcp दिखाता है
  • status running: true दिखाता है
  • tabs आपके पहले से खुले ब्राउज़र टैब सूचीबद्ध करता है
  • snapshot चयनित लाइव टैब से रेफ़रेंस लौटाता है

यदि अटैच काम न करे, तो क्या जाँचें:

  • लक्षित Chromium-आधारित ब्राउज़र का संस्करण 144+ है
  • उस ब्राउज़र के निरीक्षण पृष्ठ में रिमोट डीबगिंग सक्षम है
  • ब्राउज़र ने अटैच सहमति प्रॉम्प्ट दिखाया और आपने उसे स्वीकार किया
  • यदि Chrome को स्पष्ट --remote-debugging-port के साथ शुरू किया गया था, तो Chrome MCP ऑटो-कनेक्ट पर निर्भर रहने के बजाय browser.profiles.<name>.cdpUrl को उस DevTools एंडपॉइंट पर सेट करें
  • openclaw doctor पुराने एक्सटेंशन-आधारित ब्राउज़र कॉन्फ़िगरेशन को माइग्रेट करता है और जाँचता है कि डिफ़ॉल्ट ऑटो-कनेक्ट प्रोफ़ाइल के लिए Chrome स्थानीय रूप से इंस्टॉल है, लेकिन यह आपके लिए ब्राउज़र-साइड रिमोट डीबगिंग सक्षम नहीं कर सकता

एजेंट का उपयोग:

  • जब आपको उपयोगकर्ता के लॉग-इन ब्राउज़र की स्थिति चाहिए, तो profile="user" का उपयोग करें।
  • यदि आप कस्टम मौजूदा-सत्र प्रोफ़ाइल का उपयोग करते हैं, तो उस स्पष्ट प्रोफ़ाइल नाम को पास करें।
  • यह मोड केवल तभी चुनें, जब उपयोगकर्ता अटैच प्रॉम्प्ट को स्वीकृति देने के लिए कंप्यूटर पर मौजूद हो।
  • Gateway या Node होस्ट npx chrome-devtools-mcp@latest --autoConnect को शुरू कर सकता है।

टिप्पणियाँ:

  • यह पथ पृथक openclaw प्रोफ़ाइल की तुलना में अधिक जोखिम वाला है, क्योंकि यह आपके साइन-इन ब्राउज़र सत्र के भीतर कार्रवाई कर सकता है।
  • OpenClaw इस ड्राइवर के लिए ब्राउज़र लॉन्च नहीं करता; यह केवल अटैच करता है।
  • OpenClaw यहाँ आधिकारिक Chrome DevTools MCP --autoConnect प्रवाह का उपयोग करता है। यदि userDataDir सेट है, तो उस उपयोगकर्ता डेटा डायरेक्टरी को लक्षित करने के लिए उसे आगे पास किया जाता है।
  • मौजूदा-सत्र चयनित होस्ट पर या कनेक्टेड ब्राउज़र Node के माध्यम से अटैच कर सकता है। यदि Chrome कहीं और मौजूद है और कोई ब्राउज़र Node कनेक्टेड नहीं है, तो इसके बजाय रिमोट CDP या Node होस्ट का उपयोग करें।
  • Chrome MCP लक्ष्य और स्नैपशॉट रेफ़रेंस एक MCP सबप्रोसेस तक सीमित होते हैं। उस प्रक्रिया के पुनः शुरू होने के बाद, browser tabs को फिर से चलाएँ, लक्ष्य-विशिष्ट कार्य से पहले स्पष्ट रूप से नया लक्ष्य चुनें और रेफ़रेंस का उपयोग करने से पहले नया स्नैपशॉट लें। प्रत्येक रेफ़रेंस केवल अपने लक्ष्य और नवीनतम स्नैपशॉट के लिए मान्य है। पुराने उपनाम प्रतिस्थापन टैब में स्थानांतरित नहीं किए जाते, भले ही उसका URL मेल खाता हो।
  • Chrome DevTools MCP वर्तमान में पृष्ठ टूल को प्रक्रिया-स्थानीय संख्यात्मक पृष्ठ ID के अनुसार रूट करता है। प्रक्रिया-सीमित हैंडल सबप्रोसेस प्रतिस्थापन के दौरान पुनः उपयोग रोकते हैं, लेकिन पास-पास की टूल कॉल के बीच प्रक्रिया के भीतर ब्राउज़र-कॉन्टेक्स्ट प्रतिस्थापन अब भी किसी कार्रवाई को दोबारा लक्षित कर सकता है। पूरी तरह परमाण्विक रूटिंग के लिए स्थिर लक्ष्य ID हेतु अपस्ट्रीम पृष्ठ-टूल समर्थन आवश्यक है।

कस्टम Chrome MCP लॉन्च

जब डिफ़ॉल्ट npx chrome-devtools-mcp@latest प्रवाह आपकी आवश्यकता के अनुरूप न हो (ऑफ़लाइन होस्ट, पिन किए गए संस्करण, वेंडर किए गए बाइनरी), तो प्रत्येक प्रोफ़ाइल के लिए शुरू किए गए Chrome DevTools MCP सर्वर को ओवरराइड करें:

फ़ील्ड यह क्या करता है
mcpCommand npx के बजाय शुरू किया जाने वाला एक्ज़ीक्यूटेबल। जैसा है वैसा ही रिज़ॉल्व किया जाता है; निरपेक्ष पथ स्वीकार किए जाते हैं।
mcpArgs mcpCommand को अक्षरशः पास की जाने वाली आर्ग्युमेंट ऐरे। डिफ़ॉल्ट chrome-devtools-mcp@latest --autoConnect आर्ग्युमेंट को प्रतिस्थापित करती है।

जब मौजूदा-सत्र प्रोफ़ाइल पर cdpUrl सेट होता है, तो OpenClaw --autoConnect को छोड़ देता है और एंडपॉइंट को स्वचालित रूप से Chrome MCP को अग्रेषित करता है:

  • http(s)://...--browserUrl <url> (DevTools HTTP खोज एंडपॉइंट)।
  • ws(s)://...--wsEndpoint <url> (प्रत्यक्ष CDP WebSocket)।

एंडपॉइंट फ़्लैग और userDataDir को एक साथ उपयोग नहीं किया जा सकता: जब cdpUrl सेट होता है, Chrome MCP लॉन्च के लिए userDataDir को अनदेखा किया जाता है, क्योंकि Chrome MCP किसी प्रोफ़ाइल डायरेक्टरी को खोलने के बजाय एंडपॉइंट के पीछे चल रहे ब्राउज़र से अटैच होता है।

मौजूदा-सत्र सुविधा की सीमाएँ

प्रबंधित openclaw प्रोफ़ाइल की तुलना में, मौजूदा-सत्र ड्राइवर अधिक सीमित होते हैं:

  • स्क्रीनशॉट - पृष्ठ कैप्चर और --ref एलिमेंट कैप्चर काम करते हैं; CSS --element चयनकर्ता काम नहीं करते। पृष्ठ या रेफ़रेंस-आधारित एलिमेंट स्क्रीनशॉट के लिए Playwright आवश्यक नहीं है। (--full-page को किसी भी प्रोफ़ाइल पर --ref या --element के साथ संयोजित नहीं किया जा सकता, केवल मौजूदा-सत्र पर ही नहीं।)
  • कार्रवाइयाँ - click, type, hover, scrollIntoView, drag, और select के लिए स्नैपशॉट रेफ़रेंस आवश्यक हैं (CSS चयनकर्ता नहीं)। click-coords दृश्यमान व्यूपोर्ट निर्देशांकों पर क्लिक करता है और इसके लिए स्नैपशॉट रेफ़रेंस आवश्यक नहीं है। click केवल बायाँ बटन समर्थित करता है (कोई बटन ओवरराइड या मॉडिफ़ायर नहीं)। type में slowly=true समर्थित नहीं है; fill या press का उपयोग करें। press में delayMs समर्थित नहीं है। type, hover, scrollIntoView, drag, select, और fill प्रति-कॉल timeoutMs ओवरराइड का समर्थन नहीं करते; evaluate करता है। select एकल मान स्वीकार करता है। batch समर्थित नहीं है; कार्रवाइयाँ अलग-अलग भेजें।
  • प्रतीक्षा / अपलोड / डायलॉग - wait --url सटीक, सबस्ट्रिंग और ग्लोब पैटर्न का समर्थन करता है (प्रबंधित के समान); wait --load networkidle मौजूदा-सत्र प्रोफ़ाइल पर समर्थित नहीं है (यह प्रबंधित और रॉ/रिमोट CDP प्रोफ़ाइल पर काम करता है)। अपलोड हुक के लिए ref या inputRef आवश्यक है, एक बार में एक फ़ाइल, कोई CSS element नहीं। डायलॉग हुक टाइमआउट ओवरराइड या dialogId का समर्थन नहीं करते।
  • डायलॉग दृश्यता - जब कोई कार्रवाई मोडल डायलॉग खोलती है, तो प्रबंधित ब्राउज़र कार्रवाई प्रतिक्रियाओं में blockedByDialog और browserState.dialogs.pending शामिल होते हैं; स्नैपशॉट में लंबित डायलॉग स्थिति भी शामिल होती है। डायलॉग लंबित होने पर browser dialog --accept/--dismiss --dialog-id <id> से प्रतिक्रिया दें। OpenClaw के बाहर संभाले गए डायलॉग browserState.dialogs.recent के अंतर्गत दिखाई देते हैं।
  • केवल-प्रबंधित सुविधाएँ - PDF निर्यात, डाउनलोड इंटरसेप्शन और responsebody के लिए अभी भी प्रबंधित ब्राउज़र पथ आवश्यक है।

पृथक्करण की गारंटियाँ

  • समर्पित उपयोगकर्ता डेटा डायरेक्टरी: आपकी व्यक्तिगत ब्राउज़र प्रोफ़ाइल को कभी नहीं छूती।
  • समर्पित पोर्ट: डेवलपमेंट वर्कफ़्लो से टकराव रोकने के लिए 9222 से बचती है।
  • नियतात्मक टैब नियंत्रण: tabs पहले suggestedTargetId, फिर स्थिर tabId हैंडल जैसे t1, वैकल्पिक लेबल और रॉ targetId लौटाता है। एजेंटों को suggestedTargetId का पुनः उपयोग करना चाहिए; रॉ ID डीबगिंग और संगतता के लिए उपलब्ध रहते हैं।

ब्राउज़र चयन

स्थानीय रूप से लॉन्च करते समय, OpenClaw पहला उपलब्ध विकल्प चुनता है:

  1. Chrome
  2. Brave
  3. Edge
  4. Chromium
  5. Chrome Canary

आप browser.executablePath से इसे ओवरराइड कर सकते हैं।

प्लेटफ़ॉर्म:

  • macOS: /Applications और ~/Applications की जाँच करता है।
  • Linux: /usr/bin, /snap/bin, /opt/google, /opt/brave.com, /usr/lib/chromium, और /usr/lib/chromium-browser के अंतर्गत सामान्य Chrome/Brave/Edge/Chromium स्थानों की जाँच करता है, साथ ही PLAYWRIGHT_BROWSERS_PATH या ~/.cache/ms-playwright के अंतर्गत Playwright-प्रबंधित Chromium की भी जाँच करता है।
  • Windows: सामान्य इंस्टॉलेशन स्थानों की जाँच करता है।

नियंत्रण API (वैकल्पिक)

स्क्रिप्टिंग और डीबगिंग के लिए, Gateway एक छोटा केवल-लूपबैक HTTP नियंत्रण API और उससे मेल खाने वाला openclaw browser CLI (स्नैपशॉट, रेफ़रेंस, प्रतीक्षा क्षमता-वृद्धि, JSON आउटपुट, डीबग वर्कफ़्लो) उपलब्ध कराता है। पूर्ण संदर्भ के लिए ब्राउज़र नियंत्रण API देखें।

समस्या निवारण

Linux-विशिष्ट समस्याओं (विशेषकर snap Chromium) के लिए, ब्राउज़र समस्या निवारण देखें।

WSL2 Gateway + Windows Chrome स्प्लिट-होस्ट सेटअप के लिए, WSL2 + Windows + रिमोट Chrome CDP समस्या निवारण देखें।

CDP स्टार्टअप विफलता बनाम नेविगेशन SSRF अवरोध

ये अलग-अलग विफलता वर्ग हैं और अलग-अलग कोड पथों की ओर संकेत करते हैं।

  • CDP स्टार्टअप या तत्परता विफलता का अर्थ है कि OpenClaw यह पुष्टि नहीं कर सकता कि ब्राउज़र नियंत्रण तल स्वस्थ है।
  • नेविगेशन SSRF अवरोध का अर्थ है कि ब्राउज़र नियंत्रण तल स्वस्थ है, लेकिन नीति किसी पृष्ठ नेविगेशन लक्ष्य को अस्वीकार कर देती है।

सामान्य उदाहरण:

  • CDP स्टार्टअप या तत्परता विफलता:
    • Chrome CDP websocket for profile "openclaw" is not reachable after start
    • Remote CDP for profile "<name>" is not reachable at <cdpUrl>
    • Port <port> is in use for profile "<name>" but not by openclaw, जब कोई लूपबैक बाहरी CDP सेवा attachOnly: true के बिना कॉन्फ़िगर की गई हो
  • नेविगेशन SSRF अवरोध:
    • open, navigate, स्नैपशॉट या टैब खोलने के प्रवाह ब्राउज़र/नेटवर्क नीति त्रुटि के साथ विफल होते हैं, जबकि start और tabs अब भी काम करते हैं

दोनों को अलग करने के लिए यह न्यूनतम क्रम उपयोग करें:

bash
openclaw browser --browser-profile openclaw startopenclaw browser --browser-profile openclaw tabsopenclaw browser --browser-profile openclaw open https://example.com

परिणामों को कैसे समझें:

  • यदि start, not reachable after start के साथ विफल होता है, तो पहले CDP तत्परता की समस्या दूर करें।
  • यदि start सफल होता है, लेकिन tabs विफल होता है, तो नियंत्रण तल अभी भी अस्वस्थ है। इसे CDP पहुँच समस्या मानें, पृष्ठ-नेविगेशन समस्या नहीं।
  • यदि start और tabs सफल होते हैं, लेकिन open या navigate विफल होता है, तो ब्राउज़र नियंत्रण तल चालू है और विफलता नेविगेशन नीति या लक्ष्य पृष्ठ में है।
  • यदि start, tabs, और open सभी सफल होते हैं, तो मूल प्रबंधित-ब्राउज़र नियंत्रण पथ स्वस्थ है।

महत्वपूर्ण व्यवहार विवरण:

  • जब आप browser.ssrfPolicy कॉन्फ़िगर नहीं करते, तब भी ब्राउज़र कॉन्फ़िगरेशन डिफ़ॉल्ट रूप से विफलता-बंद SSRF नीति ऑब्जेक्ट का उपयोग करता है।
  • स्थानीय लूपबैक openclaw प्रबंधित प्रोफ़ाइल के लिए, CDP स्वास्थ्य जाँच जानबूझकर OpenClaw के अपने स्थानीय नियंत्रण तल हेतु ब्राउज़र SSRF पहुँच प्रवर्तन को छोड़ देती है।
  • नेविगेशन सुरक्षा अलग है। सफल start या tabs परिणाम का अर्थ यह नहीं है कि बाद का open या navigate लक्ष्य अनुमत है।

सुरक्षा मार्गदर्शन:

  • डिफ़ॉल्ट रूप से ब्राउज़र SSRF नीति को शिथिल न करें
  • व्यापक निजी-नेटवर्क पहुँच के बजाय hostnameAllowlist या allowedHostnames जैसे संकीर्ण होस्ट अपवादों को प्राथमिकता दें।
  • dangerouslyAllowPrivateNetwork: true का उपयोग केवल जानबूझकर विश्वसनीय परिवेशों में करें, जहाँ निजी-नेटवर्क ब्राउज़र पहुँच आवश्यक हो और उसकी समीक्षा की गई हो।

एजेंट टूल + नियंत्रण कैसे काम करता है

एजेंट को ब्राउज़र स्वचालन के लिए एक टूल मिलता है:

  • browser - डॉक्टर/स्थिति/शुरू/बंद/टैब/खोलना/फ़ोकस/बंद करना/स्नैपशॉट/स्क्रीनशॉट/नेविगेट/कार्रवाई

इसका मैपिंग इस प्रकार है:

  • browser snapshot एक स्थिर UI ट्री (AI या ARIA) लौटाता है।
  • browser act क्लिक/टाइप/ड्रैग/चयन करने के लिए स्नैपशॉट के ref IDs का उपयोग करता है।
  • browser screenshot पिक्सेल कैप्चर करता है (पूरा पृष्ठ, एलिमेंट या लेबल किए गए रेफ़रेंस)।
  • browser doctor Gateway, Plugin, प्रोफ़ाइल, ब्राउज़र और टैब की तत्परता की जाँच करता है।
  • browser इन्हें स्वीकार करता है:
    • नामित ब्राउज़र प्रोफ़ाइल (openclaw, chrome या remote CDP) चुनने के लिए profile
    • ब्राउज़र कहाँ स्थित है, यह चुनने के लिए target (sandbox | host | node)।
    • सैंडबॉक्स किए गए सत्रों में, target: "host" के लिए agents.defaults.sandbox.browser.allowHostControl=true आवश्यक है।
    • यदि target छोड़ा गया है: सैंडबॉक्स किए गए सत्र डिफ़ॉल्ट रूप से sandbox का और गैर-सैंडबॉक्स सत्र डिफ़ॉल्ट रूप से host का उपयोग करते हैं।
    • यदि ब्राउज़र-सक्षम Node कनेक्ट है, तो टूल उस पर स्वचालित रूप से रूट कर सकता है, जब तक कि आप target="host" या target="node" को पिन न करें।

इससे एजेंट का व्यवहार नियतात्मक बना रहता है और त्रुटि-प्रवण चयनकर्ताओं से बचाव होता है।

संबंधित

Was this useful?
On this page

On this page