المتصفح (بإدارة openclaw)
يمكن لـ OpenClaw تشغيل ملف تعريف مخصص لـ Chrome/Brave/Edge/Chromium يتحكم فيه الوكيل. وهو معزول عن متصفحك الشخصي وتتم إدارته عبر خدمة تحكم محلية صغيرة داخل Gateway (على local loopback فقط). عرض للمبتدئين:- فكّر فيه على أنه متصفح منفصل خاص بالوكيل فقط.
- لا يلمس ملف التعريف
openclawملف تعريف متصفحك الشخصي. - يمكن للوكيل فتح علامات تبويب وقراءة الصفحات والنقر والكتابة ضمن مسار آمن.
- يرتبط ملف التعريف المدمج
userبجلسة Chrome الحقيقية المسجّل الدخول فيها عبر Chrome MCP.
ما الذي تحصل عليه
- ملف تعريف متصفح منفصل باسم openclaw (بلون برتقالي افتراضيًا).
- تحكم حتمي بعلامات التبويب (عرض/فتح/تركيز/إغلاق).
- إجراءات الوكيل (النقر/الكتابة/السحب/الاختيار)، وsnapshots، ولقطات الشاشة، وملفات PDF.
- دعم اختياري لملفات تعريف متعددة (
openclawوworkوremote…).
بدء سريع
openclaw browser مفقودًا بالكامل، أو إذا أخبرك الوكيل بأن أداة المتصفح
غير متاحة، فانتقل إلى أمر أو أداة المتصفح المفقودة.
التحكم عبر plugin
أصبحت أداةbrowser الافتراضية الآن plugin مجمّعًا يُشحن
مفعّلًا افتراضيًا. وهذا يعني أنه يمكنك تعطيله أو استبداله من دون إزالة بقية
نظام plugin في OpenClaw:
browser
نفسه. تتطلب تجربة المتصفح الافتراضية الأمرين التاليين:
- ألا تكون
plugins.entries.browser.enabledمعطلة - وأن تكون
browser.enabled=true
openclaw browser)،
وطريقة gateway (browser.request)، وأداة الوكيل، وخدمة التحكم الافتراضية في المتصفح.
وستبقى إعدادات browser.* كما هي كي يعيد plugin بديل استخدامها.
يملك plugin المتصفح المجمّع الآن أيضًا تنفيذ وقت تشغيل المتصفح.
وتحتفظ النواة فقط بمساعدات Plugin SDK المشتركة بالإضافة إلى إعادة تصدير توافقية لمسارات الاستيراد الداخلية القديمة. عمليًا، فإن إزالة حزمة plugin المتصفح أو استبدالها يزيل مجموعة ميزات المتصفح بدلًا من ترك تنفيذ ثانٍ مملوكًا للنواة.
ما تزال تغييرات إعدادات المتصفح تتطلب إعادة تشغيل Gateway حتى يتمكن plugin المجمّع
من إعادة تسجيل خدمة المتصفح بإعداداته الجديدة.
أمر أو أداة المتصفح المفقودة
إذا أصبحopenclaw browser فجأة أمرًا غير معروف بعد ترقية، أو
أبلغ الوكيل أن أداة المتصفح مفقودة، فالسبب الأكثر شيوعًا هو وجود قائمة
plugins.allow تقييدية لا تتضمن browser.
مثال على إعداد معطّل:
browser إلى قائمة السماح الخاصة بالـ plugin:
- لا يكفي
browser.enabled=trueوحده عند ضبطplugins.allow. - ولا يكفي
plugins.entries.browser.enabled=trueوحده أيضًا عند ضبطplugins.allow. - إن
tools.alsoAllow: ["browser"]لا يحمّل plugin المتصفح المجمّع. فهو يضبط فقط سياسة الأدوات بعد أن يكون plugin قد حُمّل بالفعل. - إذا لم تكن بحاجة إلى قائمة سماح تقييدية للـ plugin، فإن إزالة
plugins.allowتعيد أيضًا سلوك المتصفح المجمّع الافتراضي.
- يكون
openclaw browserأمرًا غير معروف. - تكون
browser.requestمفقودة. - يبلغ الوكيل أن أداة المتصفح غير متاحة أو مفقودة.
ملفات التعريف: openclaw مقابل user
openclaw: متصفح مُدار ومعزول (لا يحتاج إلى إضافة).user: ملف تعريف مدمج للارتباط بـ Chrome MCP لجلسة Chrome الحقيقية المسجّل الدخول فيها.
- الافتراضي: استخدام المتصفح المعزول
openclaw. - فضّل
profile="user"عندما تكون الجلسات الحالية المسجّل الدخول فيها مهمة ويكون المستخدم موجودًا أمام الكمبيوتر للنقر/الموافقة على أي مطالبة ارتباط. profileهو التجاوز الصريح عندما تريد وضع متصفح محددًا.
browser.defaultProfile: "openclaw" إذا أردت الوضع المُدار افتراضيًا.
الإعدادات
توجد إعدادات المتصفح في~/.openclaw/openclaw.json.
- ترتبط خدمة التحكم في المتصفح بـ local loopback على منفذ مشتق من
gateway.port(الافتراضي:18791، أي gateway + 2). - إذا تجاوزت منفذ Gateway (
gateway.portأوOPENCLAW_GATEWAY_PORT)، فإن منافذ المتصفح المشتقة تتحرك للحفاظ على البقاء ضمن “العائلة” نفسها. - تكون القيمة الافتراضية لـ
cdpUrlهي منفذ CDP المحلي المُدار عند عدم ضبطه. - ينطبق
remoteCdpTimeoutMsعلى فحوصات الوصول إلى CDP البعيد (غير local loopback). - ينطبق
remoteCdpHandshakeTimeoutMsعلى فحوصات الوصول إلى WebSocket الخاصة بـ CDP البعيد. - يخضع التنقل/فتح علامة تبويب في المتصفح لحماية SSRF قبل التنقل، ويُعاد التحقق منه بأفضل جهد على عنوان URL النهائي لـ
http(s)بعد التنقل. - في وضع SSRF الصارم، تُفحَص أيضًا عمليات اكتشاف/استطلاع نقاط نهاية CDP البعيدة (
cdpUrl، بما في ذلك عمليات البحث عن/json/version). - تكون
browser.ssrfPolicy.dangerouslyAllowPrivateNetworkمعطلة افتراضيًا. اضبطها علىtrueفقط عندما تثق عمدًا في الوصول إلى المتصفح عبر الشبكة الخاصة. - ما يزال
browser.ssrfPolicy.allowPrivateNetworkمدعومًا كاسم مستعار قديم للتوافق. - تعني
attachOnly: true: “لا تطلق متصفحًا محليًا مطلقًا؛ ارتبط به فقط إذا كان يعمل بالفعل.” - تضفي
colorوcolorالخاصة بكل ملف تعريف لونًا على UI المتصفح حتى تتمكن من معرفة الملف التعريفي النشط. - ملف التعريف الافتراضي هو
openclaw(متصفح مستقل مُدار بواسطة OpenClaw). استخدمdefaultProfile: "user"لاختيار متصفح المستخدم المسجّل الدخول فيه. - ترتيب الاكتشاف التلقائي: متصفح النظام الافتراضي إذا كان مبنيًا على Chromium؛ وإلا فـ Chrome → Brave → Edge → Chromium → Chrome Canary.
- تعيّن ملفات تعريف
openclawالمحليةcdpPort/cdpUrlتلقائيًا — لا تضبطهما إلا لـ CDP البعيد. - يستخدم
driver: "existing-session"Chrome DevTools MCP بدلًا من CDP الخام. لا تضبطcdpUrlمع هذا المشغّل. - اضبط
browser.profiles.<name>.userDataDirعندما يجب على ملف تعريف existing-session الارتباط بملف تعريف مستخدم Chromium غير افتراضي مثل Brave أو Edge.
استخدام Brave (أو متصفح آخر مبني على Chromium)
إذا كان متصفحك الافتراضي في النظام مبنيًا على Chromium (Chrome/Brave/Edge/إلخ)، فسيستخدمه OpenClaw تلقائيًا. اضبطbrowser.executablePath لتجاوز
الاكتشاف التلقائي:
مثال CLI:
التحكم المحلي مقابل البعيد
- التحكم المحلي (الافتراضي): يبدأ Gateway خدمة التحكم على local loopback ويمكنه تشغيل متصفح محلي.
- التحكم البعيد (مضيف node): شغّل مضيف node على الجهاز الذي يحتوي على المتصفح؛ وسيقوم Gateway بتمرير إجراءات المتصفح إليه.
- CDP البعيد: اضبط
browser.profiles.<name>.cdpUrl(أوbrowser.cdpUrl) من أجل الارتباط بمتصفح بعيد مبني على Chromium. في هذه الحالة، لن يقوم OpenClaw بتشغيل متصفح محلي.
- ملفات التعريف المحلية المُدارة: يؤدي
openclaw browser stopإلى إيقاف عملية المتصفح التي شغّلها OpenClaw - ملفات attach-only وCDP البعيدة: يؤدي
openclaw browser stopإلى إغلاق جلسة التحكم النشطة وتحرير تجاوزات محاكاة Playwright/CDP (منفذ العرض، ونظام الألوان، والإعدادات المحلية، والمنطقة الزمنية، ووضع عدم الاتصال، وما شابه ذلك من الحالة)، رغم أن OpenClaw لم يشغّل أي عملية متصفح
- رموزًا مميزة في الاستعلام (مثل
https://provider.example?token=<token>) - مصادقة HTTP Basic (مثل
https://user:pass@provider.example)
/json/* وعند الاتصال
بـ WebSocket الخاص بـ CDP. ويفضَّل استخدام متغيرات البيئة أو مديري الأسرار للرموز
بدلًا من حفظها في ملفات الإعدادات.
وكيل متصفح node (إعداد صفري افتراضي)
إذا كنت تشغّل مضيف node على الجهاز الذي يحتوي على متصفحك، فيمكن لـ OpenClaw توجيه استدعاءات أداة المتصفح تلقائيًا إلى ذلك المضيف من دون أي إعدادات متصفح إضافية. وهذا هو المسار الافتراضي للـ gateways البعيدة. ملاحظات:- يعرض مضيف node خادم التحكم المحلي في المتصفح عبر أمر وكيل.
- تأتي ملفات التعريف من إعدادات
browser.profilesالخاصة بالعقدة نفسها (كما في الوضع المحلي). nodeHost.browserProxy.allowProfilesاختياري. اتركه فارغًا للحصول على السلوك القديم/الافتراضي: تبقى جميع ملفات التعريف المهيأة قابلة للوصول عبر الوكيل، بما في ذلك مسارات إنشاء/حذف ملفات التعريف.- إذا ضبطت
nodeHost.browserProxy.allowProfiles، فإن OpenClaw يعامله كحد أقل الصلاحيات: لا يمكن استهداف إلا ملفات التعريف المدرجة في قائمة السماح، كما تُحظر مسارات إنشاء/حذف ملفات التعريف الدائمة على سطح الوكيل. - عطّله إذا لم تكن تريده:
- على العقدة:
nodeHost.browserProxy.enabled=false - على gateway:
gateway.nodes.browser.mode="off"
- على العقدة:
Browserless (CDP بعيد مستضاف)
Browserless خدمة Chromium مستضافة تكشف عناوين اتصال CDP عبر HTTPS وWebSocket. ويمكن لـ OpenClaw استخدام أي من الشكلين، لكن بالنسبة إلى ملف تعريف متصفح بعيد فإن أبسط خيار هو عنوان WebSocket المباشر من وثائق الاتصال الخاصة بـ Browserless. مثال:- استبدل
<BROWSERLESS_API_KEY>برمز Browserless الحقيقي الخاص بك. - اختر نقطة نهاية المنطقة التي تطابق حساب Browserless الخاص بك (راجع وثائقهم).
- إذا منحك Browserless عنوان HTTPS أساسيًا، فيمكنك إما تحويله إلى
wss://لاتصال CDP مباشر أو الإبقاء على عنوان HTTPS ودع OpenClaw يكتشف/json/version.
مزودو CDP عبر WebSocket المباشر
تكشف بعض خدمات المتصفح المستضافة نقطة نهاية WebSocket مباشرة بدلًا من اكتشاف CDP القياسي المعتمد على HTTP (/json/version). يدعم OpenClaw كلاهما:
- نقاط نهاية HTTP(S) — يستدعي OpenClaw المسار
/json/versionلاكتشاف عنوان WebSocket الخاص بالمصحح، ثم يتصل به. - نقاط نهاية WebSocket (
ws:///wss://) — يتصل OpenClaw مباشرةً، متجاوزًا/json/version. استخدم هذا مع خدمات مثل Browserless، وBrowserbase، أو أي مزود يمنحك عنوان WebSocket.
Browserbase
Browserbase منصة سحابية لتشغيل المتصفحات عديمة الواجهة مع حل CAPTCHA مدمج، ووضع التخفي، ووكلاء residential.- أنشئ حسابًا وانسخ مفتاح API من لوحة Overview.
- استبدل
<BROWSERBASE_API_KEY>بمفتاح Browserbase API الحقيقي. - ينشئ Browserbase جلسة متصفح تلقائيًا عند الاتصال عبر WebSocket، لذلك لا حاجة إلى خطوة إنشاء جلسة يدويًا.
- تسمح الخطة المجانية بجلسة متزامنة واحدة وساعة متصفح واحدة شهريًا. راجع الأسعار لمعرفة حدود الخطط المدفوعة.
- راجع وثائق Browserbase للاطلاع على مرجع API الكامل، وأدلة SDK، وأمثلة التكامل.
الأمان
الأفكار الأساسية:- التحكم في المتصفح يقتصر على local loopback؛ ويمر الوصول عبر مصادقة Gateway أو اقتران العقدة.
- يستخدم HTTP API المستقل للمتصفح على local loopback مصادقة السر المشترك فقط:
مصادقة bearer لرمز gateway، أو
x-openclaw-password، أو HTTP Basic auth مع كلمة مرور gateway المهيأة. - لا تقوم رؤوس هوية Tailscale Serve و
gateway.auth.mode: "trusted-proxy"بمصادقة HTTP API المستقل لهذا المتصفح على local loopback. - إذا كان التحكم في المتصفح مفعّلًا ولم تُهيأ أي مصادقة سر مشترك، فسيقوم OpenClaw
بإنشاء
gateway.auth.tokenتلقائيًا عند بدء التشغيل وحفظه في الإعدادات. - لا يُنشئ OpenClaw ذلك الرمز تلقائيًا عندما يكون
gateway.auth.modeمضبوطًا بالفعل علىpasswordأوnoneأوtrusted-proxy. - أبقِ Gateway وأي مضيفات عقد على شبكة خاصة (Tailscale)؛ وتجنب تعريضها للعامة.
- تعامل مع عناوين URL/الرموز الخاصة بـ CDP البعيد باعتبارها أسرارًا؛ ويفضل استخدام متغيرات البيئة أو مدير أسرار.
- فضّل نقاط النهاية المشفّرة (HTTPS أو WSS) والرموز قصيرة العمر متى أمكن.
- تجنب تضمين الرموز طويلة العمر مباشرةً في ملفات الإعدادات.
ملفات التعريف (متصفحات متعددة)
يدعم OpenClaw ملفات تعريف مسماة متعددة (إعدادات التوجيه). ويمكن أن تكون ملفات التعريف:- بإدارة openclaw: نسخة متصفح مخصصة مبنية على Chromium مع دليل بيانات مستخدم خاص بها + منفذ CDP
- بعيدة: عنوان URL صريح لـ 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 أيضًا الارتباط بملف تعريف متصفح Chromium-based قيد التشغيل عبر خادم Chrome DevTools MCP الرسمي. ويؤدي هذا إلى إعادة استخدام علامات التبويب وحالة تسجيل الدخول المفتوحة بالفعل في ملف تعريف المتصفح هذا. مراجع الخلفية والإعداد الرسمية: ملف التعريف المدمج:user
- يستخدم ملف التعريف المدمج
userالاتصال التلقائي عبر Chrome MCP، والذي يستهدف ملف تعريف Google Chrome المحلي الافتراضي.
userDataDir مع Brave أو Edge أو Chromium أو ملف تعريف Chrome غير افتراضي:
- افتح صفحة الفحص الخاصة بذلك المتصفح لتصحيح الأخطاء عن بُعد.
- فعّل تصحيح الأخطاء عن بُعد.
- أبقِ المتصفح قيد التشغيل ووافق على مطالبة الاتصال عندما يرتبط OpenClaw.
- Chrome:
chrome://inspect/#remote-debugging - Brave:
brave://inspect/#remote-debugging - Edge:
edge://inspect/#remote-debugging
- يعرض
statusالقيمةdriver: existing-session - يعرض
statusالقيمةtransport: chrome-mcp - يعرض
statusالقيمةrunning: true - يعرض
tabsعلامات التبويب المفتوحة بالفعل في المتصفح - يعرض
snapshotمراجع من علامة التبويب الحية المحددة
- أن يكون المتصفح المستهدف المبني على Chromium بالإصدار
144+ - أن يكون تصحيح الأخطاء عن بُعد مفعّلًا في صفحة الفحص الخاصة بذلك المتصفح
- أن المتصفح عرض مطالبة موافقة الارتباط وأنك قبلتها
- يقوم
openclaw doctorبترحيل إعدادات المتصفح القديمة المعتمدة على الإضافة ويتحقق من أن Chrome مثبت محليًا لملفات تعريف الاتصال التلقائي الافتراضية، لكنه لا يستطيع تفعيل تصحيح الأخطاء عن بُعد من جهة المتصفح نيابةً عنك
- استخدم
profile="user"عندما تحتاج إلى حالة المتصفح الخاصة بالمستخدم والمسجّل الدخول فيها. - إذا كنت تستخدم ملف تعريف existing-session مخصصًا، فمرر اسم ملف التعريف الصريح هذا.
- اختر هذا الوضع فقط عندما يكون المستخدم أمام الكمبيوتر للموافقة على مطالبة الارتباط.
- يمكن لـ Gateway أو مضيف العقدة تشغيل
npx chrome-devtools-mcp@latest --autoConnect
- هذا المسار أعلى خطورة من ملف التعريف المعزول
openclawلأنه يمكن أن يتصرف داخل جلسة المتصفح المسجّل الدخول فيها. - لا يشغّل OpenClaw المتصفح لهذا المشغّل؛ بل يرتبط بجلسة موجودة فقط.
- يستخدم OpenClaw هنا تدفق
--autoConnectالرسمي لـ Chrome DevTools MCP. وإذا كانuserDataDirمضبوطًا، فإن OpenClaw يمرره لاستهداف دليل بيانات مستخدم Chromium الصريح ذلك. - تدعم لقطات الشاشة في existing-session التقاط الصفحة والتقاط العناصر عبر
--refمن snapshots، لكنها لا تدعم محددات CSS عبر--element. - تعمل لقطات شاشة الصفحة في existing-session من دون Playwright عبر Chrome MCP.
كما تعمل لقطات العناصر المرجعية (
--ref) هناك أيضًا، لكن لا يمكن الجمع بين--full-pageو--refأو--element. - ما تزال إجراءات existing-session أكثر محدودية من
مسار المتصفح المُدار:
- تتطلب
clickوtypeوhoverوscrollIntoViewوdragوselectمراجع snapshot بدلًا من محددات CSS clickيقتصر على الزر الأيسر فقط (من دون تجاوزات للأزرار أو modifiers)typeلا يدعمslowly=true؛ استخدمfillأوpresspressلا يدعمdelayMs- لا تدعم
hoverوscrollIntoViewوdragوselectوfillوevaluateتجاوزات المهلة لكل استدعاء - يدعم
selectحاليًا قيمة واحدة فقط
- تتطلب
- يدعم
wait --urlفي existing-session الأنماط الدقيقة والجزئية وأنماط glob مثل برامج تشغيل المتصفح الأخرى. أماwait --load networkidleفغير مدعوم بعد. - تتطلب hooks الرفع في existing-session
refأوinputRef، وتدعم ملفًا واحدًا في كل مرة، ولا تدعم استهداف CSS عبرelement. - لا تدعم hooks مربعات الحوار في existing-session تجاوزات المهلة.
- ما تزال بعض الميزات تتطلب مسار المتصفح المُدار، بما في ذلك
إجراءات الدُفعات، وتصدير PDF، واعتراض التنزيلات، و
responsebody. - إن existing-session محلي للمضيف. فإذا كان Chrome موجودًا على جهاز آخر أو ضمن مساحة اسم شبكة مختلفة، فاستخدم CDP البعيد أو مضيف عقدة بدلًا من ذلك.
ضمانات العزل
- دليل بيانات مستخدم مخصص: لا يلمس ملف تعريف متصفحك الشخصي مطلقًا.
- منافذ مخصصة: يتجنب
9222لمنع التعارض مع تدفقات العمل التطويرية. - تحكم حتمي بعلامات التبويب: استهدف علامات التبويب عبر
targetId، وليس “آخر علامة تبويب”.
اختيار المتصفح
عند التشغيل محليًا، يختار OpenClaw أول متصفح متاح:- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
browser.executablePath.
المنصات:
- macOS: يتحقق من
/Applicationsو~/Applications. - Linux: يبحث عن
google-chromeوbraveوmicrosoft-edgeوchromiumوغيرها. - Windows: يتحقق من مواقع التثبيت الشائعة.
Control API (اختياري)
للتكاملات المحلية فقط، يعرّض Gateway HTTP API صغيرًا على local loopback:- الحالة/البدء/الإيقاف:
GET /وPOST /startوPOST /stop - علامات التبويب:
GET /tabsوPOST /tabs/openوPOST /tabs/focusوDELETE /tabs/:targetId - snapshot/لقطة الشاشة:
GET /snapshotوPOST /screenshot - الإجراءات:
POST /navigateوPOST /act - hooks:
POST /hooks/file-chooserوPOST /hooks/dialog - التنزيلات:
POST /downloadوPOST /wait/download - تصحيح الأخطاء:
GET /consoleوPOST /pdf - تصحيح الأخطاء:
GET /errorsوGET /requestsوPOST /trace/startوPOST /trace/stopوPOST /highlight - الشبكة:
POST /response/body - الحالة:
GET /cookiesوPOST /cookies/setوPOST /cookies/clear - الحالة:
GET /storage/:kindوPOST /storage/:kind/setوPOST /storage/:kind/clear - الإعدادات:
POST /set/offlineوPOST /set/headersوPOST /set/credentialsوPOST /set/geolocationوPOST /set/mediaوPOST /set/timezoneوPOST /set/localeوPOST /set/device
?profile=<name>.
إذا كانت مصادقة gateway بالسر المشترك مهيأة، فإن مسارات HTTP الخاصة بالمتصفح تتطلب المصادقة أيضًا:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>أو HTTP Basic auth باستخدام كلمة المرور هذه
- لا يستهلك Browser API المستقل هذا على local loopback وضع trusted-proxy أو رؤوس هوية Tailscale Serve.
- إذا كانت قيمة
gateway.auth.modeهيnoneأوtrusted-proxy، فإن مسارات المتصفح هذه على local loopback لا ترث أوضاع الهوية تلك؛ لذا أبقها على local loopback فقط.
عقد أخطاء /act
يستخدم POST /act استجابة خطأ منظمة لإخفاقات التحقق والسياسات
على مستوى المسار:
code:
ACT_KIND_REQUIRED(HTTP 400): الحقلkindمفقود أو غير معروف.ACT_INVALID_REQUEST(HTTP 400): فشل تطبيع حمولة الإجراء أو التحقق منها.ACT_SELECTOR_UNSUPPORTED(HTTP 400): استُخدمselectorمع نوع إجراء غير مدعوم.ACT_EVALUATE_DISABLED(HTTP 403): تم تعطيلevaluate(أوwait --fn) عبر الإعدادات.ACT_TARGET_ID_MISMATCH(HTTP 403): يتعارضtargetIdذي المستوى الأعلى أو المجمع مع هدف الطلب.ACT_EXISTING_SESSION_UNSUPPORTED(HTTP 501): الإجراء غير مدعوم لملفات تعريف existing-session.
{ "error": "<message>" } من دون
حقل code.
متطلب Playwright
تتطلب بعض الميزات Playwright. إذا لم يكن Playwright مثبتًا، فستعيد نقاط النهاية تلك خطأ 501 واضحًا. ما الذي ما يزال يعمل من دون Playwright:- ARIA snapshots
- لقطات شاشة الصفحة لمتصفح
openclawالمُدار عندما يكون WebSocket الخاص بـ CDP لكل علامة تبويب متاحًا - لقطات شاشة الصفحة لملفات تعريف
existing-session/ Chrome MCP - لقطات الشاشة المستندة إلى
--refفيexisting-sessionمن ناتج snapshot
navigateact- AI snapshots / role snapshots
- لقطات شاشة العناصر عبر محددات CSS (
--element) - تصدير PDF الكامل للمتصفح
--full-page؛ إذ يعيد المسار الرسالة fullPage is not supported for element screenshots.
إذا ظهرت لك الرسالة Playwright is not available in this gateway build، فثبّت
حزمة Playwright الكاملة (وليس playwright-core) ثم أعد تشغيل gateway، أو أعد تثبيت
OpenClaw مع دعم المتصفح.
تثبيت Playwright في Docker
إذا كان Gateway يعمل داخل Docker، فتجنبnpx playwright (بسبب تعارضات npm override).
واستخدم CLI المضمن بدلًا من ذلك:
PLAYWRIGHT_BROWSERS_PATH (مثلًا،
/home/node/.cache/ms-playwright) وتأكد من أن /home/node محفوظ عبر
OPENCLAW_HOME_VOLUME أو bind mount. راجع Docker.
كيف يعمل (داخليًا)
التدفق عالي المستوى:- يقبل خادم تحكم صغير طلبات HTTP.
- ويتصل بالمتصفحات المبنية على Chromium (Chrome/Brave/Edge/Chromium) عبر CDP.
- وللإجراءات المتقدمة (النقر/الكتابة/snapshot/PDF)، يستخدم Playwright فوق CDP.
- وعندما يكون Playwright مفقودًا، لا تتوفر إلا العمليات التي لا تعتمد على Playwright.
مرجع CLI السريع
تقبل جميع الأوامر--browser-profile <name> لاستهداف ملف تعريف محدد.
كما تقبل جميع الأوامر --json للحصول على مخرجات قابلة للقراءة آليًا (بحمولات مستقرة).
الأساسيات:
openclaw browser statusopenclaw browser startopenclaw browser stopopenclaw browser tabsopenclaw browser tabopenclaw browser tab newopenclaw browser tab select 2openclaw browser tab close 2openclaw browser open https://example.comopenclaw browser focus abcd1234openclaw browser close abcd1234
openclaw browser screenshotopenclaw browser screenshot --full-pageopenclaw browser screenshot --ref 12openclaw browser screenshot --ref e12openclaw browser snapshotopenclaw browser snapshot --format aria --limit 200openclaw browser snapshot --interactive --compact --depth 6openclaw browser snapshot --efficientopenclaw browser snapshot --labelsopenclaw browser snapshot --selector "#main" --interactiveopenclaw browser snapshot --frame "iframe#main" --interactiveopenclaw browser console --level error
- بالنسبة إلى ملفات التعريف attach-only وCDP البعيدة، يظل
openclaw browser stopهو أمر التنظيف الصحيح بعد الاختبارات. فهو يغلق جلسة التحكم النشطة ويمسح تجاوزات المحاكاة المؤقتة بدلًا من إنهاء المتصفح الأساسي. openclaw browser errors --clearopenclaw browser requests --filter api --clearopenclaw browser pdfopenclaw browser responsebody "**/api" --max-chars 5000
openclaw browser navigate https://example.comopenclaw browser resize 1280 720openclaw browser click 12 --doubleopenclaw browser click e12 --doubleopenclaw browser type 23 "hello" --submitopenclaw browser press Enteropenclaw browser hover 44openclaw browser scrollintoview e12openclaw browser drag 10 11openclaw browser select 9 OptionA OptionBopenclaw browser download e12 report.pdfopenclaw browser waitfordownload report.pdfopenclaw browser upload /tmp/openclaw/uploads/file.pdfopenclaw browser fill --fields '[{"ref":"1","type":"text","value":"Ada"}]'openclaw browser dialog --acceptopenclaw browser wait --text "Done"openclaw browser wait "#main" --url "**/dash" --load networkidle --fn "window.ready===true"openclaw browser evaluate --fn '(el) => el.textContent' --ref 7openclaw browser highlight e12openclaw browser trace startopenclaw browser trace stop
openclaw browser cookiesopenclaw browser cookies set session abc123 --url "https://example.com"openclaw browser cookies clearopenclaw browser storage local getopenclaw browser storage local set theme darkopenclaw browser storage session clearopenclaw browser set offline onopenclaw browser set headers --headers-json '{"X-Debug":"1"}'openclaw browser set credentials user passopenclaw browser set credentials --clearopenclaw browser set geo 37.7749 -122.4194 --origin "https://example.com"openclaw browser set geo --clearopenclaw browser set media darkopenclaw browser set timezone America/New_Yorkopenclaw browser set locale en-USopenclaw browser set device "iPhone 14"
- إن
uploadوdialogاستدعاءات تهيئة مسبقة؛ شغّلهما قبل النقر/الضغط الذي يؤدي إلى فتح محدد الملفات/مربع الحوار. - تُقيَّد مسارات إخراج التنزيل والتتبع بجذور temp الخاصة بـ OpenClaw:
- التتبعات:
/tmp/openclaw(الرجوع إلى:${os.tmpdir()}/openclaw) - التنزيلات:
/tmp/openclaw/downloads(الرجوع إلى:${os.tmpdir()}/openclaw/downloads)
- التتبعات:
- تُقيَّد مسارات الرفع بجذر رفع temp خاص بـ OpenClaw:
- الرفع:
/tmp/openclaw/uploads(الرجوع إلى:${os.tmpdir()}/openclaw/uploads)
- الرفع:
- يمكن لـ
uploadأيضًا ضبط مدخلات الملفات مباشرةً عبر--input-refأو--element. snapshot:--format ai(الافتراضي عند تثبيت Playwright): يعيد AI snapshot مع مراجع رقمية (aria-ref="<n>").--format aria: يعيد شجرة إمكانية الوصول (من دون مراجع؛ للفحص فقط).--efficient(أو--mode efficient): إعداد مسبق مضغوط لـ role snapshot (تفاعلي + مضغوط + عمق +maxCharsأقل).- الإعداد الافتراضي في التهيئة (للأداة/CLI فقط): اضبط
browser.snapshotDefaults.mode: "efficient"لاستخدام snapshots الفعّالة عندما لا يمرر المستدعي وضعًا (راجع إعدادات Gateway). - تفرض خيارات role snapshot (
--interactiveو--compactو--depthو--selector) role snapshot مع مراجع مثلref=e12. - يقيّد
--frame "<iframe selector>"role snapshots إلى iframe (ويقترن بمراجع role مثلe12). - ينتج
--interactiveقائمة مسطحة وسهلة الاختيار للعناصر التفاعلية (وهو الأفضل لتوجيه الإجراءات). - يضيف
--labelsلقطة شاشة للمنفذ الظاهر فقط مع تسميات refs متراكبة (ويطبعMEDIA:<path>).
- تتطلب
click/type/إلخ قيمةrefمنsnapshot(إما رقمية12أو role ref مثلe12). ومحددات CSS غير مدعومة عمدًا للإجراءات.
snapshots وrefs
يدعم OpenClaw نمطين من “snapshot”:-
AI snapshot (مراجع رقمية):
openclaw browser snapshot(الافتراضي؛--format ai)- الناتج: snapshot نصي يتضمن مراجع رقمية.
- الإجراءات:
openclaw browser click 12وopenclaw browser type 23 "hello". - داخليًا، يُحل المرجع عبر
aria-refالخاصة بـ Playwright.
-
Role snapshot (مراجع role مثل
e12): openclaw browser snapshot --interactive(أو--compactأو--depthأو--selectorأو--frame)- الناتج: قائمة/شجرة قائمة على role تتضمن
[ref=e12](و[nth=1]اختياريًا). - الإجراءات:
openclaw browser click e12وopenclaw browser highlight e12. - داخليًا، يُحل المرجع عبر
getByRole(...)(بالإضافة إلىnth()للتكرارات). - أضف
--labelsلتضمين لقطة شاشة للمنفذ الظاهر مع تسمياتe12متراكبة.
- الناتج: قائمة/شجرة قائمة على role تتضمن
- إن refs ليست مستقرة عبر التنقلات؛ وإذا فشل شيء ما، فأعد تشغيل
snapshotواستخدم ref جديدًا. - إذا أُخذ role snapshot باستخدام
--frame، فسيتم تقييد role refs بذلك iframe حتى role snapshot التالي.
تحسينات wait
يمكنك الانتظار لأكثر من مجرد الوقت/النص:
- الانتظار لعنوان URL (مع دعم glob من Playwright):
openclaw browser wait --url "**/dash"
- الانتظار لحالة التحميل:
openclaw browser wait --load networkidle
- الانتظار لشرط JavaScript:
openclaw browser wait --fn "window.ready===true"
- الانتظار حتى يصبح محدد مرئيًا:
openclaw browser wait "#main"
تدفقات تصحيح الأخطاء
عندما يفشل إجراء ما (مثل “not visible” أو “strict mode violation” أو “covered”):openclaw browser snapshot --interactive- استخدم
click <ref>/type <ref>(وفضّل role refs في الوضع التفاعلي) - إذا استمر الفشل: استخدم
openclaw browser highlight <ref>لمعرفة ما الذي يستهدفه Playwright - إذا كانت الصفحة تتصرف بشكل غريب:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- لتصحيح أعمق: سجّل تتبعًا:
openclaw browser trace start- أعد إنتاج المشكلة
openclaw browser trace stop(يطبعTRACE:<path>)
مخرجات JSON
--json مخصص للبرمجة النصية والأدوات المنظمة.
أمثلة:
refs بالإضافة إلى كتلة stats صغيرة (الأسطر/الأحرف/المراجع/العناصر التفاعلية) حتى تتمكن الأدوات من الاستدلال على حجم الحمولة وكثافتها.
عناصر التحكم في الحالة والبيئة
هذه مفيدة لتدفقات “اجعل الموقع يتصرف مثل X”:- ملفات تعريف الارتباط:
cookiesوcookies setوcookies clear - التخزين:
storage local|session get|set|clear - عدم الاتصال:
set offline on|off - الرؤوس:
set headers --headers-json '{"X-Debug":"1"}'(ما يزال الشكل القديمset headers --json '{"X-Debug":"1"}'مدعومًا) - مصادقة HTTP basic:
set credentials user pass(أو--clear) - الموقع الجغرافي:
set geo <lat> <lon> --origin "https://example.com"(أو--clear) - الوسائط:
set media dark|light|no-preference|none - المنطقة الزمنية / الإعدادات المحلية:
set timezone ...وset locale ... - الجهاز / منفذ العرض:
set device "iPhone 14"(إعدادات Playwright المسبقة للأجهزة)set viewport 1280 720
الأمان والخصوصية
- قد يحتوي ملف تعريف متصفح openclaw على جلسات مسجّل الدخول فيها؛ لذا تعامل معه على أنه حساس.
- ينفّذ
browser act kind=evaluate/openclaw browser evaluateوwait --fnJavaScript عشوائيًا في سياق الصفحة. ويمكن لـ prompt injection توجيه ذلك. عطّله باستخدامbrowser.evaluateEnabled=falseإذا لم تكن بحاجة إليه. - بالنسبة إلى ملاحظات تسجيل الدخول ومكافحة الروبوتات (X/Twitter، إلخ)، راجع تسجيل الدخول في المتصفح + النشر على X/Twitter.
- أبقِ Gateway/مضيف العقدة خاصًا (على local loopback أو tailnet فقط).
- نقاط نهاية CDP البعيدة قوية؛ لذا قم بتمريرها وحمايتها.
استكشاف الأخطاء وإصلاحها
بالنسبة إلى المشكلات الخاصة بـ Linux (خصوصًا snap Chromium)، راجع استكشاف أخطاء المتصفح وإصلاحها. وبالنسبة إلى إعدادات المضيف المنقسم بين WSL2 Gateway وWindows Chrome، راجع استكشاف أخطاء WSL2 + Windows + CDP البعيد لـ Chrome وإصلاحها.أدوات الوكيل + كيف يعمل التحكم
يحصل الوكيل على أداة واحدة لأتمتة المتصفح:browser— الحالة/البدء/الإيقاف/علامات التبويب/الفتح/التركيز/الإغلاق/snapshot/لقطة الشاشة/التنقل/الإجراء
- يعيد
browser snapshotشجرة UI مستقرة (AI أو ARIA). - يستخدم
browser actمعرّفاتrefمن snapshot للنقر/الكتابة/السحب/الاختيار. - يلتقط
browser screenshotالبكسلات (صفحة كاملة أو عنصرًا). - تقبل
browser:profileلاختيار ملف تعريف متصفح مسمّى (openclaw أو chrome أو CDP بعيد).target(sandbox|host|node) لاختيار مكان وجود المتصفح.- في الجلسات المعزولة، يتطلب
target: "host"القيمةagents.defaults.sandbox.browser.allowHostControl=true. - إذا حُذفت قيمة
target: تكون القيمة الافتراضية في الجلسات المعزولةsandbox، وفي الجلسات غير المعزولةhost. - إذا كانت هناك عقدة متصلة تدعم المتصفح، فقد تُوجَّه الأداة إليها تلقائيًا ما لم تثبّت
target="host"أوtarget="node".
ذو صلة
- نظرة عامة على الأدوات — جميع أدوات الوكيل المتاحة
- العزل — التحكم في المتصفح في البيئات المعزولة
- الأمان — مخاطر التحكم في المتصفح وتقويته