openclaw browser،
وأنماط البرمجة النصية (اللقطات، والمراجع، والانتظار، وتدفقات التصحيح).
واجهة API للتحكم (اختيارية)
للتكاملات المحلية فقط، يوفّر Gateway واجهة HTTP API صغيرة عبر local loopback. هذا الخادم المستقل اختياري — اضبط متغير البيئةOPENCLAW_EAGER_BROWSER_CONTROL_SERVER=1 في بيئة خدمة Gateway
وأعد تشغيل Gateway قبل أن تصبح نقاط نهاية HTTP متاحة. من دون
هذا المتغير، يظل تشغيل التحكم في المتصفح يعمل عبر CLI
وأدوات الوكيل، لكن لا شيء يستمع على منفذ تحكم 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 - الأذونات:
POST /permissions/grant - التصحيح:
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>. يطلب POST /start?headless=true
تشغيلاً لمرة واحدة بلا واجهة رسومية للملفات الشخصية المحلية المُدارة من دون تغيير
تهيئة المتصفح المحفوظة؛ وترفض ملفات التعريف من نوع الإرفاق فقط وCDP البعيد والجلسات القائمة
هذا التجاوز لأن OpenClaw لا يشغّل عمليات تلك المتصفحات.
بالنسبة إلى نقاط نهاية علامات التبويب، targetId هو اسم حقل التوافق. يُفضّل تمرير
suggestedTargetId من GET /tabs أو POST /tabs/open؛ كما تُقبل التسميات ومقابض tabId
مثل t1. ما تزال معرفات أهداف CDP الخام وبادئات معرف الهدف الخام الفريدة
تعمل، لكنها مقابض تشخيصية متقلبة.
إذا كانت مصادقة Gateway بالسر المشترك مهيأة، فإن مسارات HTTP للمتصفح تتطلب المصادقة أيضاً:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>أو مصادقة HTTP Basic باستخدام كلمة المرور تلك
- لا تستهلك واجهة API المستقلة هذه لمتصفح loopback ترويسات هوية الوكيل الموثوق أو 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): الإجراء غير مدعوم لملفات تعريف الجلسات القائمة.
{ "error": "<message>" } من دون حقل
code.
متطلب Playwright
تتطلب بعض الميزات (التنقل/الإجراء/لقطة الذكاء الاصطناعي/لقطة الدور، ولقطات شاشة العناصر، وPDF) وجود Playwright. إذا لم يكن Playwright مثبتاً، تُرجع تلك النقاط خطأ 501 واضحاً. ما يزال يعمل من دون Playwright:- لقطات ARIA
- لقطات إمكانية الوصول بنمط الدور (
--interactive,--compact,--depth,--efficient) عند توفر WebSocket لكل علامة تبويب عبر CDP. هذا بديل للفحص واكتشاف المراجع؛ ويظل Playwright محرك الإجراءات الأساسي. - لقطات شاشة الصفحة لمتصفح
openclawالمُدار عند توفر WebSocket لكل علامة تبويب عبر CDP - لقطات شاشة الصفحة لملفات تعريف
existing-session/ Chrome MCP - لقطات شاشة
existing-sessionالمستندة إلى المراجع (--ref) من ناتج اللقطة
navigateact- لقطات الذكاء الاصطناعي التي تعتمد على تنسيق لقطة الذكاء الاصطناعي الأصلي في Playwright
- لقطات شاشة العناصر بمحدد CSS (
--element) - تصدير PDF كامل للمتصفح
--full-page؛ يُرجع المسار fullPage is not supported for element screenshots.
إذا رأيت Playwright is not available in this gateway build، فإن حزمة
Gateway تفتقد اعتماد تشغيل المتصفح الأساسي. أعد تثبيت OpenClaw أو حدّثه،
ثم أعد تشغيل Gateway. بالنسبة إلى Docker، ثبّت أيضاً ثنائيات متصفح Chromium
كما هو موضح أدناه.
تثبيت Docker Playwright
إذا كان Gateway لديك يعمل في Docker، فتجنبnpx playwright (تعارضات تجاوز npm).
بالنسبة إلى الصور المخصصة، ادمج Chromium داخل الصورة:
PLAYWRIGHT_BROWSERS_PATH (على سبيل المثال،
/home/node/.cache/ms-playwright) وتأكد من أن /home/node محفوظ عبر
OPENCLAW_HOME_VOLUME أو ربط تحميل. يكتشف OpenClaw تلقائياً Chromium المحفوظ
على Linux. راجع Docker.
كيف يعمل (داخلي)
يقبل خادم تحكم loopback صغير طلبات HTTP ويتصل بالمتصفحات المستندة إلى Chromium عبر CDP. تمر الإجراءات المتقدمة (النقر/الكتابة/اللقطة/PDF) عبر Playwright فوق CDP؛ وعند غياب Playwright، لا تتوفر إلا العمليات غير المعتمدة على Playwright. يرى الوكيل واجهة مستقرة واحدة بينما تتبدل المتصفحات والملفات الشخصية المحلية/البعيدة بحرية تحتها.مرجع CLI السريع
تقبل كل الأوامر--browser-profile <name> لاستهداف ملف تعريف محدد، و--json للحصول على إخراج قابل للقراءة آلياً.
الأساسيات: الحالة، علامات التبويب، الفتح/التركيز/الإغلاق
الأساسيات: الحالة، علامات التبويب، الفتح/التركيز/الإغلاق
الفحص: لقطة شاشة، لقطة، وحدة التحكم، الأخطاء، الطلبات
الفحص: لقطة شاشة، لقطة، وحدة التحكم، الأخطاء، الطلبات
الإجراءات: التنقل، النقر، الكتابة، السحب، الانتظار، التقييم
الإجراءات: التنقل، النقر، الكتابة، السحب، الانتظار، التقييم
الحالة: ملفات تعريف الارتباط، التخزين، عدم الاتصال، الترويسات، الموقع الجغرافي، الجهاز
الحالة: ملفات تعريف الارتباط، التخزين، عدم الاتصال، الترويسات، الموقع الجغرافي، الجهاز
uploadوdialogهما استدعاءان للتهيئة؛ شغّلهما قبل النقرة/الضغط الذي يفعّل منتقي الملفات/مربع الحوار. إذا فتح إجراء نافذة مشروطة، تتضمن استجابة الإجراءblockedByDialogوbrowserState.dialogs.pending؛ مرّر ذلكdialogIdللرد مباشرة. تظهر مربعات الحوار التي عولجت خارج OpenClaw تحتbrowserState.dialogs.recent.- تتطلب
click/type/إلخ وجودrefمنsnapshot(رقمي12، أو مرجع دورe12، أو مرجع ARIA قابل للإجراءax12). محددات CSS غير مدعومة عمداً للإجراءات. استخدمclick-coordsعندما يكون موضع إطار العرض المرئي هو الهدف الموثوق الوحيد. - مسارات التنزيل والتتبع مقيدة بجذور OpenClaw المؤقتة:
/tmp/openclaw{,/downloads}(البديل:${os.tmpdir()}/openclaw/...). - يقبل
uploadالملفات من جذر التحميلات المؤقت في OpenClaw والوسائط الواردة المُدارة من OpenClaw. يمكن الإشارة إلى الوسائط الواردة المُدارة بصيغةmedia://inbound/<id>، أوmedia/inbound/<id>نسبةً إلى صندوق العزل، أو مسار محلول داخل دليل الوسائط الواردة المُدار. ما تزال مراجع الوسائط المتداخلة، والتنقل عبر المسارات، والروابط الرمزية، والروابط الصلبة، والمسارات المحلية العشوائية مرفوضة. - يمكن لـ
uploadأيضاً ضبط مدخلات الملفات مباشرة عبر--input-refأو--element.
suggestedTargetId من tabs في النصوص البرمجية.
نظرة سريعة على أعلام اللقطات:
--format ai(الافتراضي مع Playwright): لقطة ذكاء اصطناعي بمراجع رقمية (aria-ref="<n>").--format aria: شجرة إمكانية الوصول بمراجعaxN. عند توفر Playwright، يربط OpenClaw المراجع بمعرفات DOM الخلفية في الصفحة الحية حتى تتمكن الإجراءات اللاحقة من استخدامها؛ وإلا فتعامل مع المخرجات على أنها للفحص فقط.--efficient(أو--mode efficient): إعداد مسبق مدمج للقطة الأدوار. عيّنbrowser.snapshotDefaults.mode: "efficient"لجعل هذا هو الإعداد الافتراضي (انظر تكوين Gateway).- تفرض
--interactiveو--compactو--depthو--selectorلقطة أدوار بمراجعref=e12. يقيّد--frame "<iframe>"لقطات الأدوار إلى iframe. - مع Playwright، يضيف
--labelsلقطة شاشة بتسميات مراجع متراكبة (يطبعMEDIA:<path>) بالإضافة إلى مصفوفةannotationsتحتوي على مربع الإحاطة لكل مرجع. فيscreenshot، تعمل التسميات المدعومة من Playwright مع--full-pageو--refو--element؛ وفيsnapshot، تظل لقطة الشاشة المرافقة مقتصرة على منفذ العرض فقط. تعرض ملفات تعريف existing-session/chrome-mcp تسميات متراكبة على لقطات شاشة الصفحة، لكنها لا تعيدannotationsولا تستخدم مساعد إسقاط الصفحة الكاملة/المرجع/العنصر في Playwright. من دون Playwright أو chrome-mcp، لا تتوفر لقطات الشاشة الموسومة. - يضيف
--urlsوجهات الروابط المكتشفة إلى لقطات الذكاء الاصطناعي.
اللقطات والمراجع
يدعم OpenClaw نمطين من “اللقطات”:-
لقطة الذكاء الاصطناعي (مراجع رقمية):
openclaw browser snapshot(الافتراضي؛--format ai)- المخرجات: لقطة نصية تتضمن مراجع رقمية.
- الإجراءات:
openclaw browser click 12،openclaw browser type 23 "hello". - داخليًا، يتم حل المرجع عبر
aria-refفي Playwright.
-
لقطة الأدوار (مراجع أدوار مثل
e12):openclaw browser snapshot --interactive(أو--compactأو--depthأو--selectorأو--frame)- المخرجات: قائمة/شجرة قائمة على الأدوار مع
[ref=e12](واختياريًا[nth=1]). - الإجراءات:
openclaw browser click e12،openclaw browser highlight e12. - داخليًا، يتم حل المرجع عبر
getByRole(...)(بالإضافة إلىnth()للتكرارات). - أضف
--labelsلتضمين لقطة شاشة بتسمياتe12متراكبة. في ملفات التعريف المدعومة من Playwright، يعيد هذا أيضًا بيانات وصفية لمربعات الإحاطة لكل مرجع (annotations[]). - أضف
--urlsعندما يكون نص الرابط ملتبسًا ويحتاج الوكيل إلى أهداف تنقل ملموسة.
- المخرجات: قائمة/شجرة قائمة على الأدوار مع
-
لقطة ARIA (مراجع ARIA مثل
ax12):openclaw browser snapshot --format aria- المخرجات: شجرة إمكانية الوصول كعقد منظمة.
- الإجراءات: يعمل
openclaw browser click ax12عندما يستطيع مسار اللقطة ربط المرجع عبر Playwright ومعرفات DOM الخلفية في Chrome.
-
إذا لم يكن Playwright متوفرًا، يمكن أن تظل لقطات ARIA مفيدة
للفحص، لكن قد لا تكون المراجع قابلة للتنفيذ. أعد أخذ اللقطة باستخدام
--format aiأو--interactiveعندما تحتاج إلى مراجع إجراءات. -
إثبات Docker لمسار الرجوع raw-CDP: يبدأ
pnpm test:docker:browser-cdp-snapshotChromium مع CDP، ويشغّلbrowser doctor --deep، ويتحقق من أن لقطات الأدوار تتضمن عناوين URL للروابط، والعناصر القابلة للنقر المرفوعة بالمؤشر، وبيانات iframe الوصفية.
- المراجع ليست ثابتة عبر عمليات التنقل؛ إذا فشل شيء ما، أعد تشغيل
snapshotواستخدم مرجعًا جديدًا. - يعيد
/actقيمةtargetIdالخام الحالية بعد الاستبدال الناتج عن الإجراء عندما يستطيع إثبات علامة التبويب البديلة. استمر في استخدام معرفات/تسميات علامات التبويب الثابتة للأوامر اللاحقة. - إذا أُخذت لقطة الأدوار باستخدام
--frame، فستكون مراجع الأدوار مقيّدة بذلك iframe حتى لقطة الأدوار التالية. - تفشل مراجع
axNالمجهولة أو القديمة سريعًا بدلًا من السقوط إلى محددaria-refفي Playwright. شغّل لقطة جديدة على علامة التبويب نفسها عندما يحدث ذلك.
تعزيزات الانتظار
يمكنك الانتظار لأكثر من مجرد الوقت/النص:- انتظر عنوان URL (يدعم Playwright أنماط glob):
openclaw browser wait --url "**/dash"
- انتظر حالة التحميل:
openclaw browser wait --load networkidle- مدعوم في ملفات تعريف
openclawالمُدارة وملفات تعريف CDP الخام/البعيدة. ترفض ملفات تعريفuserوexisting-sessionقيمةnetworkidle؛ استخدم--urlأو--textأو محددًا أو عمليات انتظار--fnهناك.
- انتظر شرط JS:
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>(فضّل مراجع الأدوار في الوضع التفاعلي) - إذا ظل يفشل: استخدم
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 صغيرة (lines/chars/refs/interactive) حتى تتمكن الأدوات من الاستدلال على حجم الحمولة وكثافتها.
مفاتيح الحالة والبيئة
هذه مفيدة لمسارات عمل “اجعل الموقع يتصرف مثل 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 الأساسية:
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 عشوائيًا في سياق الصفحة. يمكن أن يوجه حقن المطالبات هذا السلوك. عطّله باستخدامbrowser.evaluateEnabled=falseإذا لم تكن بحاجة إليه. - يقبل
openclaw browser evaluate --fnمصدر دالة، أو تعبيرًا، أو جسم عبارة. تُغلّف أجسام العبارات كدوال غير متزامنة، لذا استخدمreturnللقيمة التي تريد استعادتها. استخدم--timeout-ms <ms>عندما قد تحتاج الدالة في جانب الصفحة إلى وقت أطول من مهلة التقييم الافتراضية. - لتسجيلات الدخول وملاحظات مكافحة الروبوتات (X/Twitter، وما إلى ذلك)، راجع تسجيل الدخول عبر المتصفح + النشر على X/Twitter.
- أبقِ مضيف Gateway/node خاصًا (loopback أو tailnet-only).
- نقاط نهاية CDP البعيدة قوية؛ أنشئ لها نفقًا واحمها.
ذات صلة
- المتصفح - نظرة عامة، التكوين، ملفات التعريف، الأمان
- تسجيل الدخول عبر المتصفح - تسجيل الدخول إلى المواقع
- استكشاف أخطاء المتصفح على Linux وإصلاحها
- استكشاف أخطاء المتصفح على WSL2 وإصلاحها عبر CDP البعيد في Windows