openclaw browser،
وأنماط البرمجة النصية (اللقطات، وrefs، والانتظارات، وتدفقات التصحيح).
واجهة Control API (اختيارية)
بالنسبة إلى التكاملات المحلية فقط، يكشف Gateway عن واجهة HTTP API صغيرة على loopback:- الحالة/البدء/الإيقاف:
GET /وPOST /startوPOST /stop - علامات التبويب:
GET /tabsوPOST /tabs/openوPOST /tabs/focusوDELETE /tabs/:targetId - اللقطة/لقطة الشاشة:
GET /snapshotوPOST /screenshot - الإجراءات:
POST /navigateوPOST /act - الخطافات:
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 باستخدام تلك الكلمة
- لا تستهلك واجهة API المستقلة هذه الخاصة بالمتصفح على loopback رؤوس trusted-proxy أو رؤوس الهوية الخاصة بـ Tailscale Serve.
- إذا كانت
gateway.auth.modeمساوية لـnoneأوtrusted-proxy، فإن مسارات المتصفح هذه على loopback لا ترث أوضاع الهوية الحاملة هذه؛ لذا أبقها على 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
تتطلب بعض الميزات (navigate/act/AI snapshot/role snapshot، ولقطات شاشة العناصر، وPDF) وجود Playwright. وإذا لم يكن Playwright مثبتًا، فستعيد تلك النقاط النهاية خطأ 501 واضحًا. ما الذي لا يزال يعمل من دون Playwright:- لقطات ARIA
- لقطات الصفحة لمتصفح
openclawالمُدار عندما يكون WebSocket لكل علامة تبويب عبر CDP متاحًا - لقطات الصفحة لملفات
existing-session/ Chrome MCP - لقطات
--refالقائمة على existing-session من مخرجات snapshot
navigateact- لقطات AI / لقطات الأدوار
- لقطات عناصر CSS selector (
--element) - تصدير PDF الكامل للمتصفح
--full-page; إذ يعيد المسار رسالة أن fullPage is not supported for element screenshots.
إذا رأيت Playwright is not available in this gateway build، فأصلح تبعيات وقت تشغيل
Plugin المتصفح المضمّنة بحيث يتم تثبيت playwright-core،
ثم أعد تشغيل gateway. وبالنسبة إلى التثبيتات المعلبة، شغّل openclaw doctor --fix.
أما في Docker، فثبّت أيضًا ملفات Chromium التنفيذية كما هو موضح أدناه.
تثبيت Playwright في Docker
إذا كانت Gateway تعمل داخل Docker، فتجنبnpx playwright (بسبب تعارضات تجاوز npm).
واستخدم CLI المضمّنة بدلًا من ذلك:
PLAYWRIGHT_BROWSERS_PATH (مثلًا،
/home/node/.cache/ms-playwright) وتأكد من أن /home/node محفوظ عبر
OPENCLAW_HOME_VOLUME أو عبر bind mount. راجع Docker.
كيف يعمل (داخليًا)
يقبل خادم تحكم صغير على loopback طلبات HTTP ويتصل بالمتصفحات المعتمدة على Chromium عبر CDP. وتعمل الإجراءات المتقدمة (click/type/snapshot/PDF) عبر Playwright فوق CDP؛ وعندما يكون Playwright مفقودًا، لا تتوفر إلا العمليات غير المعتمدة على Playwright. ويرى الوكيل واجهة مستقرة واحدة بينما تتبدل المتصفحات والملفات المحلية/البعيدة تحتها بحرية.مرجع CLI سريع
تقبل جميع الأوامر--browser-profile <name> لاستهداف ملف شخصي محدد، و--json للإخراج القابل للقراءة آليًا.
الأساسيات: الحالة، وعلامات التبويب، وopen/focus/close
الأساسيات: الحالة، وعلامات التبويب، وopen/focus/close
الفحص: screenshot, snapshot, console, errors, requests
الفحص: screenshot, snapshot, console, errors, requests
الإجراءات: navigate, click, type, drag, wait, evaluate
الإجراءات: navigate, click, type, drag, wait, evaluate
الحالة: cookies, storage, offline, headers, geo, device
الحالة: cookies, storage, offline, headers, geo, device
uploadوdialogهما استدعاءان من نوع arming؛ شغّلهما قبل النقر/الضغط الذي يفتح منتقي الملفات/مربع الحوار.- تتطلب
click/type/إلخ وجودrefمنsnapshot(رقمي12أو مرجع دورe12). ولا يتم دعم محددات CSS عمدًا للإجراءات. - تكون مسارات التنزيل، والتتبع، والرفع مقيّدة إلى جذور temp الخاصة بـ OpenClaw:
/tmp/openclaw{,/downloads,/uploads}(والرجوع الاحتياطي:${os.tmpdir()}/openclaw/...). - يمكن لـ
uploadأيضًا ضبط مدخلات الملفات مباشرة عبر--input-refأو--element.
--format ai(الافتراضي مع Playwright): لقطة AI مع refs رقمية (aria-ref="<n>").--format aria: شجرة إمكانية الوصول، من دون refs؛ للفحص فقط.--efficient(أو--mode efficient): إعداد مسبق مضغوط للقطات الأدوار. اضبطbrowser.snapshotDefaults.mode: "efficient"لجعل هذا هو الافتراضي (راجع إعدادات Gateway).- تؤدي
--interactiveو--compactو--depthو--selectorإلى فرض لقطة أدوار مع refs من الشكلref=e12. وتقيّد--frame "<iframe>"لقطات الأدوار داخل iframe. - تضيف
--labelsلقطة شاشة داخل viewport مع وسوم refs متراكبة (وتطبعMEDIA:<path>).
اللقطات وrefs
يدعم OpenClaw نمطين من “snapshot”:-
AI snapshot (refs رقمية):
openclaw browser snapshot(الافتراضي؛--format ai)- المخرجات: لقطة نصية تتضمن refs رقمية.
- الإجراءات:
openclaw browser click 12، openclaw browser type 23 "hello". - داخليًا، يتم حلّ المرجع عبر
aria-refالخاصة بـ Playwright.
-
Role snapshot (refs أدوار مثل
e12): openclaw browser snapshot --interactive(أو--compactأو--depthأو--selectorأو--frame)- المخرجات: قائمة/شجرة قائمة على الأدوار مع
[ref=e12](واختياريًا[nth=1]). - الإجراءات:
openclaw browser click e12، openclaw browser highlight e12. - داخليًا، يتم حلّ المرجع عبر
getByRole(...)(بالإضافة إلىnth()عند التكرارات). - أضف
--labelsلتضمين لقطة شاشة داخل viewport مع وسومe12متراكبة.
- المخرجات: قائمة/شجرة قائمة على الأدوار مع
- ليست refs ثابتة عبر التنقلات؛ فإذا فشل شيء ما، فأعد تشغيل
snapshotواستخدم ref جديدة. - إذا تم التقاط role snapshot باستخدام
--frame، فسيتم تقييد refs الأدوار إلى ذلك iframe حتى role snapshot التالية.
تحسينات الانتظار
يمكنك الانتظار لأكثر من مجرد الزمن/النص:- الانتظار لعنوان URL (مع دعم globs بواسطة Playwright):
openclaw browser wait --url "**/dash"
- الانتظار لحالة التحميل:
openclaw browser wait --load networkidle
- الانتظار لشرط JS:
openclaw browser wait --fn "window.ready===true"
- الانتظار حتى يصبح selector مرئيًا:
openclaw browser wait "#main"
تدفقات تصحيح الأخطاء
عندما يفشل إجراء ما (مثل “not visible”، أو “strict mode violation”، أو “covered”):openclaw browser snapshot --interactive- استخدم
click <ref>/type <ref>(وفضّل refs الأدوار في الوضع التفاعلي) - إذا استمر الفشل: استخدم
openclaw browser highlight <ref>لرؤية ما الذي تستهدفه Playwright - إذا تصرفت الصفحة بشكل غريب:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- من أجل تصحيح أعمق: سجّل trace:
openclaw browser trace start- أعد إنتاج المشكلة
openclaw browser trace stop(يطبعTRACE:<path>)
إخراج JSON
يُستخدم--json للبرمجة النصية والأدوات المنظمة.
أمثلة:
refs بالإضافة إلى كتلة stats صغيرة (lines/chars/refs/interactive) حتى تتمكن الأدوات من التفكير في حجم الحمولة وكثافتها.
عناصر التحكم في الحالة والبيئة
هذه مفيدة في تدفقات عمل “اجعل الموقع يتصرف مثل X”:- Cookies:
cookiesوcookies setوcookies clear - Storage:
storage local|session get|set|clear - Offline:
set offline on|off - Headers:
set headers --headers-json '{"X-Debug":"1"}'(لا يزال الصياغة القديمةset headers --json '{"X-Debug":"1"}'مدعومة) - مصادقة HTTP basic:
set credentials user pass(أو--clear) - Geolocation:
set geo <lat> <lon> --origin "https://example.com"(أو--clear) - Media:
set media dark|light|no-preference|none - Timezone / locale:
set timezone ...، set locale ... - Device / viewport:
set device "iPhone 14"(إعدادات أجهزة Playwright المسبقة)set viewport 1280 720
الأمان والخصوصية
- قد يحتوي ملف المتصفح الشخصي
openclawعلى جلسات مسجّل الدخول؛ لذا تعامل معه على أنه حساس. - إن
browser act kind=evaluate/ openclaw browser evaluateوwait --fnتنفذ JavaScript عشوائيًا في سياق الصفحة. ويمكن لحقن prompt توجيه ذلك. عطّله باستخدامbrowser.evaluateEnabled=falseإذا لم تكن بحاجة إليه. - لتسجيلات الدخول وملاحظات مكافحة الروبوتات (X/Twitter، إلخ)، راجع تسجيل الدخول في المتصفح + النشر على X/Twitter.
- أبقِ Gateway/node host خاصًا (على loopback أو tailnet فقط).
- نقاط نهاية CDP البعيدة قوية؛ قم بإنشاء نفق لها واحمها.
ذو صلة
- المتصفح — نظرة عامة، والإعدادات، والملفات الشخصية، والأمان
- تسجيل الدخول في المتصفح — تسجيل الدخول إلى المواقع
- استكشاف أخطاء المتصفح على Linux وإصلاحها
- استكشاف أخطاء المتصفح على WSL2 وإصلاحها