Tools

مرورگر (مدیریت‌شده توسط OpenClaw)

OpenClaw می‌تواند یک پروفایل اختصاصی Chrome/Brave/Edge/Chromium اجرا کند که عامل آن را کنترل می‌کند. این پروفایل از طریق یک سرویس کنترل محلی کوچک درون Gateway (فقط loopback) اجرا می‌شود و از مرورگر شخصی شما جدا است.

  • آن را یک مرورگر جداگانه و مخصوص عامل در نظر بگیرید. پروفایل openclaw هرگز با پروفایل مرورگر شخصی شما تماس ندارد.
  • عامل در این محیط جداشده زبانه‌ها را باز می‌کند، صفحه‌ها را می‌خواند، کلیک می‌کند و متن وارد می‌کند.
  • در عوض، پروفایل داخلی user از طریق Chrome DevTools MCP به نشست واقعی و واردشده شما در Chrome متصل می‌شود.

آنچه دریافت می‌کنید

  • یک پروفایل مرورگر جداگانه با نام openclaw (با رنگ تأکیدی نارنجی به‌صورت پیش‌فرض).
  • کنترل قطعی زبانه‌ها (فهرست‌کردن/بازکردن/متمرکزکردن/بستن).
  • کنش‌های عامل (کلیک/تایپ/کشیدن/انتخاب)، عکس‌های لحظه‌ای، اسکرین‌شات‌ها و PDFها.
  • پروفایل‌های مبتنی بر Playwright، پیمایش‌های مستقیم به پیوست‌ها را در پوشه دانلودهای مدیریت‌شده ذخیره می‌کنند و پس از اعتبارسنجی خط‌مشی URL نهایی، فراداده { url, suggestedFilename, path } را بازمی‌گردانند.
  • کنش‌های عامل مبتنی بر Playwright، هنگامی که کنش بلافاصله یک یا چند دانلود را آغاز کند، یک آرایه downloads با همان فراداده مدیریت‌شده بازمی‌گردانند.
  • یک skill همراه browser-automation که هنگام فعال‌بودن Plugin مرورگر، چرخه بازیابی عکس لحظه‌ای، زبانه پایدار، ارجاع منقضی و مانع نیازمند اقدام دستی را به عامل‌ها آموزش می‌دهد.
  • پشتیبانی اختیاری از چند پروفایل (openclaw، work، remote، ...).

این مرورگر، مرورگر روزمره شما نیست. این یک محیط امن و جداشده برای خودکارسازی و تأیید توسط عامل است.

در macOS می‌توانید کوکی‌ها را به‌صراحت از یک پروفایل سیستمی خانواده Chrome به یک پروفایل مدیریت‌شده جداگانه کپی کنید. مرورگر مدیریت‌شده همچنان از پوشه داده کاربر خودش استفاده می‌کند؛ فقط کوکی‌های انتخاب‌شده کپی می‌شوند و حافظه محلی و IndexedDB باقی می‌مانند. برای فرمان‌های واردکردن و محدودیت‌ها، به پروفایل‌ها یا مرجع CLI ‏openclaw browser مراجعه کنید.

شروع سریع

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، ‏CLI ‏openclaw browser، روش Gateway ‏browser.request، ابزار عامل و سرویس کنترل را به‌عنوان یک واحد حذف می‌کند؛ پیکربندی browser.* شما برای جایگزین دست‌نخورده باقی می‌ماند.

تغییرات پیکربندی مرورگر به راه‌اندازی مجدد Gateway نیاز دارند تا Plugin بتواند سرویس خود را دوباره ثبت کند.

راهنمای عامل

نکته پروفایل ابزار: tools.profile: "coding" شامل web_search و web_fetch است، اما ابزار کامل browser را شامل نمی‌شود. برای اینکه عامل یا یک عامل فرعی ایجادشده بتواند از خودکارسازی مرورگر استفاده کند، مرورگر را در مرحله پروفایل اضافه کنید:

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

برای یک عامل منفرد، از agents.entries.*.tools.alsoAllow: ["browser"] استفاده کنید. tools.subagents.tools.allow: ["browser"] به‌تنهایی کافی نیست، زیرا خط‌مشی عامل فرعی پس از پالایش پروفایل اعمال می‌شود.

Plugin مرورگر با دو سطح راهنمای عامل ارائه می‌شود:

  • شرح ابزار browser قرارداد فشرده و همیشه‌فعال را دربر دارد: پروفایل درست را انتخاب کنید، ارجاع‌ها را در همان زبانه نگه دارید، از tabId/برچسب‌ها برای هدف‌گیری زبانه استفاده کنید و برای کار چندمرحله‌ای، skill مرورگر را بارگذاری کنید.
  • skill همراه browser-automation چرخه عملیاتی طولانی‌تر را دربر دارد: ابتدا وضعیت/زبانه‌ها را بررسی کنید، زبانه‌های کار را برچسب بزنید، پیش از اقدام عکس لحظه‌ای بگیرید، پس از تغییرات رابط کاربری دوباره عکس لحظه‌ای بگیرید، ارجاع‌های منقضی را یک‌بار بازیابی کنید و ورود/2FA/captcha یا موانع دوربین/میکروفون را به‌جای حدس‌زدن، به‌عنوان اقدام دستی گزارش دهید.

هنگامی که Plugin فعال باشد، skillهای همراه آن در فهرست skillهای در دسترس عامل نمایش داده می‌شوند. دستورالعمل‌های کامل 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 DevTools MCP برای نشست واقعی و واردشده Chrome شما. نخستین باری که 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" },    },  },}

browser.snapshotDefaults.mode: "efficient" حالت پیش‌فرض استخراج snapshot را هنگامی تغییر می‌دهد که فراخواننده snapshotFormat یا mode صریحی ارسال نکند؛ برای گزینه‌های عکس لحظه‌ای در هر فراخوانی، API کنترل مرورگر را ببینید.

مالکیت پاک‌سازی زبانه‌ها

پاک‌سازی زبانه‌های نشست فقط بر زبانه‌هایی اعمال می‌شود که ابزار مرورگر OpenClaw با action: "open" ایجاد کرده است. OpenClaw زبانه‌هایی را که از قبل باز بوده‌اند، توسط کاربر باز شده‌اند یا مالکیت نامعلومی دارند، به مالکیت خود درنمی‌آورد. بلوک browser.tabCleanup جاروب‌های دوره‌ای بیکاری و سقف را برای نشست‌های اصلی کنترل می‌کند؛ غیرفعال‌کردن آن، پاک‌سازی صریح چرخه عمر نشست را غیرفعال نمی‌کند.

برای بازکردن‌های محلی میزبان، مالکیت با یک هدف بومی و پایدار CDP و هویت مرورگر در وضعیت SQLite مشترک ذخیره می‌شود. این رکوردها پس از راه‌اندازی مجدد Gateway باقی می‌مانند و همچنان واجد شرایط /new و دیگر پاک‌سازی‌های چرخه عمر نشست هستند؛ پاک‌سازی چرخه عمر نشست شامل پایان‌یافتن نشست‌های عامل فرعی، cron و ACP است. رکوردهایی که هدف قابل‌مشاهده برای ابزارشان همان هدف بومی CDP است، پس از راه‌اندازی مجدد همچنان واجد شرایط جاروب‌های بیکاری و سقف هر نشست می‌مانند. دستگیره‌های هدف Chrome MCP محلیِ فرایند هستند؛ بنابراین رکوردهای سرد نشست موجود، به‌جای به‌خطرانداختن یک جاروب بیکاری بر فعالیتی که پس از راه‌اندازی مجدد نمی‌توان آن را با اطمینان منتسب کرد، منتظر پاک‌سازی چرخه عمر می‌مانند. این مسیر پایدار می‌تواند پروفایل‌های مدیریت‌شده OpenClaw، پروفایل‌های عادی CDP راه دور و پروفایل‌های نشست موجود با cdpUrl صریح را پوشش دهد، مشروط بر اینکه OpenClaw بتواند هم هدف بومی و هم هویت پایدار مرورگر را تشخیص دهد. پیش از بستن یک رکورد پایدار، OpenClaw بررسی می‌کند که پروفایل پیکربندی‌شده و نمونه مرورگر همچنان مطابقت دارند.

--autoConnect مربوط به Chrome MCP، نقاط پایانی 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 نتیجه عادی تصویر را نگه می‌دارد تا مدل اصلی بتواند نماگرفت را مستقیماً بخواند.

درگاه‌ها و دسترسی‌پذیری
  • سرویس کنترل روی loopback و در درگاهی مشتق‌شده از gateway.port متصل می‌شود (پیش‌فرض 18791 = gateway + 2). OPENCLAW_GATEWAY_PORT بر gateway.port اولویت دارد؛ هرکدام درگاه‌های مشتق‌شده در همان خانواده را جابه‌جا می‌کند.
  • پروفایل‌های محلی openclaw، مقادیر cdpPort/cdpUrl را به‌طور خودکار از محدوده‌ای که 9 درگاه بالاتر از درگاه کنترل آغاز می‌شود تخصیص می‌دهند (پیش‌فرض 18800-18899)؛ این مقادیر را فقط برای پروفایل‌های CDP راه‌دور یا اتصال به نقطه پایانی نشست موجود تنظیم کنید. در صورت تنظیم‌نشدن، cdpUrl به‌طور پیش‌فرض از درگاه CDP محلی مدیریت‌شده استفاده می‌کند.
  • دسترسی‌پذیری CDP راه‌دور و attachOnly، دست‌دهی‌های WebSocket و راه‌اندازی Chrome مدیریت‌شده محلی، مهلت‌های داخلی دارند.
  • شکست‌های مکرر در راه‌اندازی/آماده‌شدن Chrome مدیریت‌شده، به‌ازای هر پروفایل با قطع‌کننده مدار مهار می‌شوند. پس از چند شکست پیاپی، OpenClaw به‌جای ایجاد Chromium در هر فراخوانی ابزار مرورگر، تلاش‌های جدید راه‌اندازی را برای مدت کوتاهی متوقف می‌کند. مشکل راه‌اندازی را برطرف کنید، اگر مرورگر لازم نیست آن را غیرفعال کنید، یا پس از رفع مشکل Gateway را بازراه‌اندازی کنید.
سیاست SSRF
  • درخواست‌های پیمایش مرورگر و بازکردن زبانه، پیش از اجرا بررسی می‌شوند. هنگام عملیات و دوره تنفس محدود پس از آن، تعاملات محافظت‌شده Playwright (کلیک، کلیک مختصاتی، نگه‌داشتن نشانگر، کشیدن، پیمایش، انتخاب، فشردن، تایپ، پرکردن فرم و ارزیابی) بارگذاری اسناد سطح‌بالا و زیرفریم را که سیاست رد کرده است، پیش از ارسال بایت‌های درخواست HTTP رهگیری می‌کنند و سپس در حد توان، URL نهایی http(s) را دوباره بررسی می‌کنند.
  • پیش از هر راه‌اندازی تازه Chrome مدیریت‌شده توسط OpenClaw، این سامانه در حد توان پیش‌بینی شبکه را غیرفعال می‌کند تا پیش‌اتصال حدسی مشاهده‌شده Chromium برای آن بارگذاری‌های ردشده سرکوب شود. این دفاع در عمق است، نه مرز سیاست: مرورگری که در چند بازراه‌اندازی سرویس کنترل دوباره استفاده شود و دیگر بک‌اندهای مرورگر ممکن است این سخت‌سازی را نداشته باشند. مسیریابی Playwright همچنان دیوار آتش شبکه نیست و پرش‌های تغییرمسیر، نخستین درخواست یک پنجره بازشو، ترافیک Service Worker، کد صفحه‌ای که پس از بازه محدود محافظ اجرا می‌شود یا همه مسیرهای پس‌زمینه/زیرمنبع را رهگیری نمی‌کند. جداسازی کامل خروجی به جداسازی در سمت مالک یا یک پروکسی اعمال‌کننده سیاست نیاز دارد.
  • در حالت سخت‌گیرانه SSRF، کشف نقطه پایانی CDP راه‌دور و کاوش‌های /json/version (cdpUrl) نیز بررسی می‌شوند.
  • متغیرهای محیطی HTTP_PROXY، HTTPS_PROXY، ALL_PROXY و NO_PROXY مربوط به Gateway/ارائه‌دهنده، مرورگر مدیریت‌شده توسط OpenClaw را به‌طور خودکار پروکسی نمی‌کنند. Chrome مدیریت‌شده به‌طور پیش‌فرض مستقیماً اجرا می‌شود تا تنظیمات پروکسی ارائه‌دهنده بررسی‌های SSRF مرورگر را تضعیف نکنند.
  • کاوش‌های آمادگی CDP محلی مدیریت‌شده توسط OpenClaw و اتصال‌های DevTools WebSocket برای نقطه پایانی دقیق loopback راه‌اندازی‌شده، پروکسی شبکه مدیریت‌شده را دور می‌زنند؛ بنابراین وقتی پروکسی اپراتور خروجی loopback را مسدود می‌کند، openclaw browser start همچنان کار می‌کند.
  • برای پروکسی‌کردن خود مرورگر مدیریت‌شده، پرچم‌های صریح پروکسی Chrome را از طریق browser.extraArgs ارسال کنید، مانند --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 آن فرایندهای مرورگر را راه‌اندازی نمی‌کند.
  • در میزبان‌های Linux بدون DISPLAY یا WAYLAND_DISPLAY، پروفایل‌های مدیریت‌شده محلی هنگامی که نه محیط و نه پیکربندی پروفایل/سراسری حالت دارای رابط گرافیکی را صریحاً انتخاب نکرده باشند، به‌طور خودکار بدون رابط گرافیکی اجرا می‌شوند. از فرم بدون ابهام در سطح مرورگر 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 بتوانند بدون تطبیق متن پیام، راهکار اصلاحی درست را انتخاب کنند.
  • برای یک پروفایل مدیریت‌شده محلی در حال اجرا، وضعیت و doctor از نقطه پایانی CDP سطح مرورگر Chrome درباره رندرکننده، بک‌اند، دستگاه/درایور، وضعیت قابلیت‌ها، راهکارهای موقت درایور و توانمندی‌های ویدیویی شتاب‌یافته پرس‌وجو می‌کنند. نتیجه برای همان فرایند مرورگر در حافظه نهان ذخیره می‌شود و به‌طور کامل از طریق openclaw browser --json status ارائه می‌شود. یک فراخوانی منفعل وضعیت، Chrome را راه‌اندازی نمی‌کند. مرورگرهای نشست موجود، افزونه، CDP راه‌دور و sandbox جدا باقی می‌مانند و از طریق این مسیر میزبان مدیریت‌شده بررسی نمی‌شوند.
  • Chrome مدیریت‌شده بدون رابط گرافیکی همچنان از پیش‌فرض محافظه‌کارانه --disable-gpu استفاده می‌کند. عیب‌یابی‌ها شتاب‌دهی را فعال نمی‌کنند، تنظیم سراسری شتاب‌دهی اضافه نمی‌کنند و به مرورگر sandbox دسترسی دستگاه نمی‌دهند.
  • executablePath را می‌توان به‌صورت سراسری یا برای هر پروفایل مدیریت‌شده محلی تنظیم کرد. مقادیر هر پروفایل، browser.executablePath را بازنویسی می‌کنند؛ بنابراین پروفایل‌های مدیریت‌شده مختلف می‌توانند مرورگرهای مبتنی بر Chromium متفاوتی را راه‌اندازی کنند. هر دو فرم، ~ را برای پوشه خانگی سیستم‌عامل می‌پذیرند.
  • color (در سطح بالا و هر پروفایل) رابط کاربری مرورگر را رنگ‌آمیزی می‌کند تا بتوانید ببینید کدام پروفایل فعال است.
  • پروفایل پیش‌فرض openclaw است (مستقل مدیریت‌شده). برای استفاده از مرورگر کاربرِ واردشده، defaultProfile: "user" را انتخاب کنید.
  • ترتیب تشخیص خودکار: اگر مرورگر پیش‌فرض سیستم مبتنی بر Chromium باشد، همان؛ در غیر این صورت Chrome، Brave، Edge، Chromium، Chrome Canary.
  • driver: "existing-session" به‌جای CDP خام از Chrome DevTools MCP استفاده می‌کند. می‌تواند از طریق اتصال خودکار Chrome MCP، یا وقتی از قبل یک نقطه پایانی DevTools برای مرورگر در حال اجرا دارید از طریق cdpUrl، متصل شود.
  • driver: "extension" مرورگر Chrome واردشده شما را از طریق افزونه Chrome متعلق به OpenClaw کنترل می‌کند. رله مالک نقطه پایانی loopback خود است؛ بنابراین این پروفایل‌ها cdpUrl را نمی‌پذیرند. این تنها حالت مرورگر واردشده‌ای است که بدون حضور کسی پای رایانه کار می‌کند.
  • وقتی یک پروفایل نشست موجود باید به پروفایل کاربری غیراستاندارد Chromium (Brave، Edge و غیره) متصل شود، browser.profiles.<name>.userDataDir را تنظیم کنید. این مسیر همچنین ~ را برای پوشه خانگی سیستم‌عامل می‌پذیرد.

استفاده از Brave یا مرورگر دیگری مبتنی بر Chromium

اگر مرورگر پیش‌فرض سیستم شما مبتنی بر Chromium باشد (Chrome/Brave/Edge/و غیره)، OpenClaw به‌طور خودکار از آن استفاده می‌کند. برای بازنویسی تشخیص خودکار، browser.executablePath را تنظیم کنید. مقادیر executablePath در سطح بالا و هر پروفایل، ~ را برای پوشه خانگی سیستم‌عامل می‌پذیرند:

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 سرویس کنترل loopback را راه‌اندازی می‌کند و می‌تواند یک مرورگر محلی را اجرا کند.
  • کنترل راه‌دور (میزبان Node): یک میزبان Node را روی دستگاهی که مرورگر دارد اجرا کنید؛ Gateway عملیات مرورگر را از طریق آن پروکسی می‌کند.
  • CDP راه‌دور: مقدار browser.profiles.<name>.cdpUrl (یا browser.cdpUrl) را تنظیم کنید تا به یک مرورگر راه‌دور مبتنی بر Chromium متصل شوید. در این حالت، OpenClaw مرورگر محلی را راه‌اندازی نمی‌کند.
  • برای سرویس‌های CDP مدیریت‌شده خارجی روی loopback (برای مثال Browserless در Docker که روی 127.0.0.1 منتشر شده است)، attachOnly: true را نیز تنظیم کنید. CDP روی loopback بدون attachOnly به‌عنوان پروفایل مرورگر محلی مدیریت‌شده توسط OpenClaw در نظر گرفته می‌شود.
  • headless فقط بر پروفایل‌های مدیریت‌شده محلی که OpenClaw راه‌اندازی می‌کند اثر دارد. این گزینه مرورگرهای نشست موجود یا CDP راه‌دور را بازراه‌اندازی یا تغییر نمی‌دهد.
  • executablePath از همان قاعده پروفایل مدیریت‌شده محلی پیروی می‌کند. تغییر آن در یک پروفایل مدیریت‌شده محلی در حال اجرا، آن پروفایل را برای بازراه‌اندازی/همگام‌سازی علامت‌گذاری می‌کند تا راه‌اندازی بعدی از فایل اجرایی جدید استفاده کند.

رفتار توقف بر اساس حالت پروفایل متفاوت است:

  • پروفایل‌های مدیریت‌شده محلی: openclaw browser stop فرایند مرورگری را که OpenClaw راه‌اندازی کرده است متوقف می‌کند
  • پروفایل‌های صرفاً اتصال و CDP راه‌دور: openclaw browser stop نشست کنترل فعال را می‌بندد و بازنویسی‌های شبیه‌سازی Playwright/CDP (ناحیه دید، طرح رنگ، منطقه زبانی، منطقه زمانی، حالت آفلاین و وضعیت‌های مشابه) را آزاد می‌کند، حتی اگر OpenClaw هیچ فرایند مرورگری را راه‌اندازی نکرده باشد

نشانی‌های CDP راه‌دور می‌توانند شامل احراز هویت باشند:

  • توکن‌های پرس‌وجو (برای مثال، https://provider.example?token=<token>)
  • احراز هویت HTTP Basic (برای مثال، https://user:pass@provider.example)

OpenClaw هنگام فراخوانی نقاط پایانی /json/* و هنگام اتصال به WebSocket مربوط به CDP، احراز هویت را حفظ می‌کند. برای توکن‌ها، به‌جای ثبت آن‌ها در فایل‌های پیکربندی، متغیرهای محیطی یا مدیرهای اسرار را ترجیح دهید.

پراکسی مرورگر Node (پیش‌فرض بدون نیاز به پیکربندی)

اگر روی دستگاهی که مرورگرتان در آن قرار دارد یک میزبان Node اجرا کنید، OpenClaw می‌تواند فراخوانی‌های ابزار مرورگر را بدون هیچ پیکربندی اضافی مرورگر، به‌طور خودکار به آن Node هدایت کند. این مسیر پیش‌فرض برای Gatewayهای راه دور است.

نکات:

  • میزبان Node، سرور محلی کنترل مرورگر خود را از طریق یک فرمان پراکسی ارائه می‌کند.
  • پروفایل‌ها از پیکربندی browser.profiles خود Node می‌آیند (همانند حالت محلی).
  • فرمان پراکسی، صرف‌نظر از 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 است که نشانی‌های اتصال CDP را از طریق HTTPS و WebSocket ارائه می‌کند. OpenClaw می‌تواند از هر دو شکل استفاده کند، اما برای یک پروفایل مرورگر راه دور، ساده‌ترین گزینه نشانی مستقیم WebSocket از مستندات اتصال Browserless است.

مثال:

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 به شما می‌دهد، می‌توانید آن را برای اتصال مستقیم CDP به wss:// تبدیل کنید یا نشانی HTTPS را نگه دارید و اجازه دهید 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 همچنین باید یک نقطه پایانی منطبق و قابل دسترسی را اعلام کند؛ مقدار EXTERNAL در Browserless را روی همان پایه WebSocket عمومی نسبت به OpenClaw تنظیم کنید، مانند ws://127.0.0.1:3000، ws://browserless:3000، یا یک نشانی پایدار در شبکه خصوصی Docker. اگر /json/version مقدار webSocketDebuggerUrl را بازگرداند که به نشانی غیرقابل دسترسی برای OpenClaw اشاره می‌کند، ممکن است CDP HTTP سالم به نظر برسد، درحالی‌که پیوست WebSocket همچنان ناموفق است.

برای یک پروفایل Browserless حلقه‌بازگشت، attachOnly را تنظیم‌نشده رها نکنید. بدون attachOnly، OpenClaw پورت حلقه‌بازگشت را یک پروفایل مرورگر محلی مدیریت‌شده در نظر می‌گیرد و ممکن است گزارش دهد پورت در حال استفاده است، اما در مالکیت OpenClaw نیست.

ارائه‌دهندگان CDP با WebSocket مستقیم

برخی سرویس‌های مرورگر میزبانی‌شده، به‌جای کشف استاندارد CDP مبتنی بر HTTP (/json/version)، یک نقطه پایانی WebSocket مستقیم ارائه می‌کنند. OpenClaw سه شکل نشانی CDP را می‌پذیرد و راهبرد اتصال مناسب را به‌طور خودکار انتخاب می‌کند:

  • کشف HTTP(S) - http://host[:port] یا https://host[:port]. OpenClaw برای کشف نشانی اشکال‌زدایی WebSocket، /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 به آن ریشه نیز بازمی‌گردد. این کار اجازه می‌دهد یک ws:// بدون مسیر که به Chrome محلی اشاره می‌کند همچنان متصل شود، زیرا Chrome ارتقای WebSocket را فقط در مسیر مشخص هر هدف از /json/version می‌پذیرد، درحالی‌که ارائه‌دهندگان میزبانی‌شده همچنان می‌توانند از نقطه پایانی WebSocket ریشه خود استفاده کنند، زمانی که نقطه پایانی کشف آن‌ها نشانی کوتاه‌عمری را اعلام می‌کند که برای CDP در Playwright مناسب نیست.

openclaw browser doctor از همان منطق ابتدا کشف و سپس جایگزینی WebSocket مانند پیوست زمان اجرا استفاده می‌کند؛ بنابراین نشانی ریشه بدون مسیری که با موفقیت متصل می‌شود، در عیب‌یابی به‌عنوان غیرقابل دسترسی گزارش نمی‌شود.

Browserbase

Browserbase یک پلتفرم ابری برای اجرای مرورگرهای بدون رابط کاربری با حل داخلی CAPTCHA، حالت پنهان‌کاری و پراکسی‌های مسکونی است.

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

نکات:

  • ثبت‌نام کنید و API Key خود را از داشبورد Overview کپی کنید.
  • &lt;BROWSERBASE_API_KEY&gt; را با کلید API واقعی Browserbase خود جایگزین کنید.
  • Browserbase هنگام اتصال WebSocket به‌طور خودکار یک نشست مرورگر ایجاد می‌کند؛ بنابراین به مرحله ایجاد دستی نشست نیازی نیست.
  • برای محدودیت‌های فعلی سطح رایگان و طرح‌های پولی، قیمت‌گذاری را ببینید.
  • برای مرجع کامل API، راهنماهای SDK و مثال‌های یکپارچه‌سازی، مستندات Browserbase را ببینید.

Notte

Notte یک پلتفرم ابری برای اجرای مرورگرهای بدون رابط کاربری، با پنهان‌کاری داخلی، پراکسی‌های مسکونی و یک Gateway WebSocket بومی CDP است.

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; را با کلید API واقعی Notte خود جایگزین کنید.
  • Notte هنگام اتصال WebSocket به‌طور خودکار یک نشست مرورگر ایجاد می‌کند؛ بنابراین به ایجاد دستی نشست نیازی نیست. با قطع اتصال WebSocket، نشست از بین می‌رود.
  • برای محدودیت‌های فعلی سطح رایگان و طرح‌های پولی، قیمت‌گذاری را ببینید.
  • برای مرجع کامل API، راهنماهای SDK و مثال‌های یکپارچه‌سازی، مستندات Notte را ببینید.

امنیت

نکات کلیدی:

  • کنترل مرورگر فقط روی حلقه‌بازگشت در دسترس است؛ دسترسی از طریق احراز هویت Gateway یا جفت‌سازی Node انجام می‌شود.
  • API مستقل HTTP مرورگر روی حلقه‌بازگشت، فقط از احراز هویت با راز مشترک استفاده می‌کند: احراز هویت bearer با توکن Gateway، x-openclaw-password، یا احراز هویت HTTP Basic با گذرواژه پیکربندی‌شده Gateway.
  • سرآیندهای هویت 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 راه دور را راز در نظر بگیرید؛ متغیرهای محیطی یا یک مدیر اسرار را ترجیح دهید.

پروفایل‌ها (چندمرورگری)

OpenClaw از چند پروفایل نام‌گذاری‌شده (پیکربندی‌های مسیریابی) پشتیبانی می‌کند. پروفایل‌ها می‌توانند از این نوع‌ها باشند:

  • مدیریت‌شده توسط OpenClaw: یک نمونه اختصاصی مرورگر مبتنی بر Chromium با پوشه داده کاربر و پورت CDP مخصوص خود
  • راه دور: یک نشانی صریح CDP (مرورگر مبتنی بر Chromium که در جای دیگری اجرا می‌شود)
  • نشست موجود: پروفایل موجود Chrome شما از طریق اتصال خودکار Chrome DevTools MCP

پیش‌فرض‌ها:

  • پروفایل openclaw در صورت نبودن، به‌طور خودکار ایجاد می‌شود.
  • پروفایل user برای پیوست به نشست موجود Chrome MCP داخلی است.
  • پروفایل‌های نشست موجود، به‌جز user، نیازمند فعال‌سازی صریح هستند؛ آن‌ها را با --driver existing-session ایجاد کنید.
  • پورت‌های محلی CDP به‌طور پیش‌فرض از محدوده 18800-18899 تخصیص می‌یابند.
  • حذف یک پروفایل، پوشه داده محلی آن را به سطل زباله منتقل می‌کند.

همه نقاط پایانی کنترل، ?profile=<name> را می‌پذیرند؛ CLI از --browser-profile استفاده می‌کند.

نشست موجود از طریق Chrome DevTools MCP

OpenClaw همچنین می‌تواند از طریق سرور رسمی Chrome DevTools MCP به یک پروفایل در حال اجرای مرورگر مبتنی بر Chromium متصل شود. در این حالت، برگه‌ها و وضعیت ورود که از قبل در آن پروفایل مرورگر باز هستند، دوباره استفاده می‌شوند.

منابع رسمی پیش‌زمینه و راه‌اندازی:

پروفایل داخلی: user. اگر نام، رنگ یا پوشه داده مرورگر متفاوتی می‌خواهید، پروفایل سفارشی نشست موجود خود را ایجاد کنید.

به‌طور پیش‌فرض، پروفایل داخلی user از اتصال خودکار Chrome MCP استفاده می‌کند که پروفایل محلی پیش‌فرض Google Chrome را هدف می‌گیرد. برای Brave، Edge، Chromium یا پروفایل غیراصلی Chrome از userDataDir استفاده کنید. ~ به پوشه خانه سیستم‌عامل شما بسط می‌یابد:

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 صریح راه‌اندازی شده است، browser.profiles.<name>.cdpUrl را روی همان نقطهٔ پایانی DevTools تنظیم کنید، نه اینکه به اتصال خودکار Chrome MCP متکی باشید
  • openclaw doctor پیکربندی قدیمی مرورگر مبتنی بر افزونه را مهاجرت می‌دهد و بررسی می‌کند که Chrome برای پروفایل‌های پیش‌فرض اتصال خودکار به‌صورت محلی نصب شده باشد، اما نمی‌تواند اشکال‌زدایی راه‌دور سمت مرورگر را برای شما فعال کند

استفادهٔ عامل:

  • وقتی به وضعیت واردشدهٔ مرورگر کاربر نیاز دارید، از profile="user" استفاده کنید.
  • اگر از یک پروفایل سفارشی نشست موجود استفاده می‌کنید، نام صریح آن پروفایل را ارسال کنید.
  • این حالت را فقط زمانی انتخاب کنید که کاربر پای رایانه است تا درخواست پیوست‌شدن را تأیید کند.
  • میزبان Gateway یا Node می‌تواند npx chrome-devtools-mcp@latest --autoConnect را راه‌اندازی کند.

نکته‌ها:

  • این مسیر نسبت به پروفایل ایزولهٔ openclaw پرخطرتر است، زیرا می‌تواند درون نشست واردشدهٔ مرورگر شما عمل کند.
  • OpenClaw مرورگر را برای این درایور راه‌اندازی نمی‌کند؛ فقط به آن پیوست می‌شود.
  • OpenClaw در اینجا از جریان رسمی --autoConnect در Chrome DevTools MCP استفاده می‌کند. اگر userDataDir تنظیم شده باشد، برای هدف‌گیری آن دایرکتوری دادهٔ کاربر عیناً ارسال می‌شود.
  • نشست موجود می‌تواند روی میزبان انتخاب‌شده یا از طریق یک Node مرورگر متصل پیوست شود. اگر Chrome جای دیگری اجرا می‌شود و هیچ Node مرورگری متصل نیست، به‌جای آن از CDP راه‌دور یا یک میزبان Node استفاده کنید.
  • هدف‌های Chrome MCP و ارجاع‌های اسنپ‌شات به یک زیرفرایند MCP محدود می‌شوند. پس از راه‌اندازی مجدد آن فرایند، دوباره browser tabs را اجرا کنید، پیش از کار مختص هدف صراحتاً یک هدف تازه انتخاب کنید و پیش از استفاده از ارجاع‌ها اسنپ‌شات جدیدی بگیرید. هر ارجاع فقط برای هدف خود و جدیدترین اسنپ‌شات معتبر است. نام‌های مستعار قدیمی به زبانهٔ جایگزین منتقل نمی‌شوند، حتی اگر URL آن یکسان باشد.
  • Chrome DevTools MCP در حال حاضر ابزارهای صفحه را بر اساس یک شناسهٔ عددی صفحه و محلی به فرایند مسیریابی می‌کند. دستگیره‌های محدود به فرایند از استفادهٔ مجدد میان جایگزینی زیرفرایندها جلوگیری می‌کنند، اما جایگزینی زمینهٔ مرورگر درون همان فرایند میان دو فراخوانی متوالی ابزار همچنان می‌تواند یک کنش را به هدف دیگری هدایت کند. مسیریابی کاملاً اتمی به پشتیبانی بالادستی ابزار صفحه از شناسه‌های پایدار هدف نیاز دارد.

راه‌اندازی سفارشی 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> (نقطهٔ پایانی کشف HTTP در DevTools).
  • ws(s)://...--wsEndpoint <url> (WebSocket مستقیم CDP).

پرچم‌های نقطهٔ پایانی و userDataDir را نمی‌توان ترکیب کرد: وقتی cdpUrl تنظیم شده باشد، userDataDir برای راه‌اندازی Chrome MCP نادیده گرفته می‌شود، زیرا 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 از الگوهای دقیق، زیررشته‌ای و glob پشتیبانی می‌کند (همانند حالت مدیریت‌شده)؛ wait --load networkidle در پروفایل‌های نشست موجود پشتیبانی نمی‌شود (در پروفایل‌های مدیریت‌شده و CDP خام/راه‌دور کار می‌کند). قلاب‌های بارگذاری به ref یا inputRef نیاز دارند، هر بار یک فایل، بدون element از نوع CSS. قلاب‌های گفت‌وگو از بازنویسی مهلت زمانی یا 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 دوباره استفاده کنند؛ شناسه‌های خام برای اشکال‌زدایی و سازگاری همچنان در دسترس‌اند.

انتخاب مرورگر

هنگام راه‌اندازی محلی، OpenClaw نخستین گزینهٔ موجود را انتخاب می‌کند:

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

می‌توانید با browser.executablePath آن را بازنویسی کنید.

سکوها:

  • macOS: ‏/Applications و ~/Applications را بررسی می‌کند.
  • Linux: مکان‌های رایج Chrome/Brave/Edge/Chromium را زیر /usr/bin، /snap/bin، /opt/google، /opt/brave.com، /usr/lib/chromium و /usr/lib/chromium-browser، به‌علاوهٔ Chromium مدیریت‌شده توسط Playwright را زیر PLAYWRIGHT_BROWSERS_PATH یا ~/.cache/ms-playwright بررسی می‌کند.
  • Windows: مکان‌های رایج نصب را بررسی می‌کند.

API کنترل (اختیاری)

برای اسکریپت‌نویسی و اشکال‌زدایی، Gateway یک API کنترل HTTP محدود به loopback کوچک به‌همراه یک CLI متناظر openclaw browser ارائه می‌کند (اسنپ‌شات‌ها، ارجاع‌ها، قابلیت‌های تقویت‌شدهٔ انتظار، خروجی JSON، جریان‌های کاری اشکال‌زدایی). برای مرجع کامل، به API کنترل مرورگر مراجعه کنید.

عیب‌یابی

برای مشکلات مختص Linux (به‌ویژه Chromium مبتنی بر snap)، به عیب‌یابی مرورگر مراجعه کنید.

برای پیکربندی‌های میزبان تفکیک‌شدهٔ WSL2 Gateway و Windows Chrome، به عیب‌یابی WSL2 + Windows + ‏CDP راه‌دور Chrome مراجعه کنید.

شکست راه‌اندازی 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 روی loopback بدون 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 با حالت شکستِ بسته استفاده می‌کند.
  • برای پروفایل مدیریت‌شدهٔ محلی و loopback با نام openclaw، بررسی‌های سلامت CDP عمداً اعمال دسترسی‌پذیری SSRF مرورگر را برای صفحهٔ کنترل محلی خود OpenClaw نادیده می‌گیرند.
  • محافظت ناوبری جداگانه است. موفقیت نتیجهٔ start یا tabs به این معنا نیست که یک هدف بعدی open یا navigate مجاز است.

راهنمای امنیتی:

  • سیاست SSRF مرورگر را به‌طور پیش‌فرض کاهش ندهید.
  • استثناهای محدود میزبان مانند hostnameAllowlist یا allowedHostnames را به دسترسی گسترده به شبکهٔ خصوصی ترجیح دهید.
  • از dangerouslyAllowPrivateNetwork: true فقط در محیط‌های عمداً مورداعتماد استفاده کنید که دسترسی مرورگر به شبکهٔ خصوصی در آن‌ها لازم و بازبینی شده است.

ابزارهای عامل + نحوهٔ کار کنترل

عامل برای خودکارسازی مرورگر یک ابزار دریافت می‌کند:

  • browser - doctor/status/start/stop/tabs/open/focus/close/snapshot/screenshot/navigate/act

نگاشت آن:

  • browser snapshot یک درخت پایدار رابط کاربری (AI یا ARIA) برمی‌گرداند.
  • browser act از شناسه‌های اسنپ‌شات ref برای کلیک/تایپ/کشیدن/انتخاب استفاده می‌کند.
  • browser screenshot پیکسل‌ها را ثبت می‌کند (کل صفحه، عنصر یا ارجاع‌های برچسب‌دار).
  • browser doctor آماده‌بودن Gateway، افزونه، پروفایل، مرورگر و زبانه را بررسی می‌کند.
  • browser موارد زیر را می‌پذیرد:
    • profile برای انتخاب یک پروفایل نام‌گذاری‌شده مرورگر (openclaw، chrome یا CDP راه‌دور).
    • 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