أتمتة المتصفح عبر Cloudflare: نطاقات معتمدة ومراجعة بلا تحكم

دليل عملي لتقييد جلسات Cloudflare Browser Run بالنطاقات المعتمدة، وتمكين العميل من متابعة التنفيذ عبر Live View للقراءة فقط، مع شرح التكلفة والقيود.

Monday, September 14, 2026Omid Saffari
أتمتة المتصفح عبر Cloudflare: نطاقات معتمدة ومراجعة بلا تحكم

في 14 سبتمبر 2026، أضافت Cloudflare إلى Browser Run عنصرَي تحكم يغيّران طريقة تقديم أتمتة المتصفح للعميل: يمكن إبقاء الجلسة ضمن قائمة أسماء مضيفين معتمدة، ويمكن للمراجع متابعة التنفيذ عبر Live View من دون صلاحية التفاعل. يمكن تحديد ما يصل إلى 50 اسم مضيف مباشرة أو إرفاق ما يصل إلى 4 مجموعات نطاقات مشتركة، لكن القيمة الحقيقية هي رسم حدود التشغيل لا حجم القائمة.

التغيير يفرض حدّين منفصلين، لا حدًا واحدًا

جلسة Browser Run هي نسخة Chrome تعمل عن بُعد. ويتولى الكود قيادتها باستخدام Puppeteer أو Playwright أو Chrome DevTools Protocol، المعروف عادة باسم CDP.

تحدد ضوابط حماية الجلسة الجديدة أسماء المضيفين التي يُسمح للمتصفح بطلبها عبر HTTP أو HTTPS. تُثبَّت السياسة عند بدء الجلسة وتظل سارية طوال عمرها.

أما إعداد القراءة فقط الجديد في Live View، فله وظيفة مختلفة. فهو يحدد ما يستطيع شخص واحد فعله عبر رابط مشاهدة واحد جرى إنشاؤه. يمكن للمشاهد بصلاحية القراءة فقط رؤية الجلسة، لكنه لا يستطيع التنقل أو الكتابة أو النقر أو تنفيذ JavaScript.

الحدما الذي يتحكم فيهالنطاقما الذي لا يضمنه
ضابط حماية الجلسةأسماء مضيفي وجهات HTTP وHTTPSجلسة المتصفح كاملةبيئة عزل شبكية شاملة تتجاوز حدود HTTP وHTTPS الموثقة
Live View للقراءة فقطالتنقل والإدخال وتنفيذ JavaScriptاتصال مشاهدة واحد جرى إنشاؤهتقييد الأتمتة نفسها أو الاتصالات الأخرى بالجلسة على القراءة فقط

هذا الفرق جوهري. تظل الأتمتة هي المتحكمة في المتصفح، بينما يكتفي المراجع بالمشاهدة. وفي الوقت نفسه، تبقى طلبات HTTP وHTTPS الصادرة من المتصفح داخل قائمة السماح الخاصة بالجلسة، بغض النظر عن اتصال Live View المفتوح.

مقطع معماري لجلسة Browser Run محمية تتصل بموقع ومضيف أصول معتمدين، فيما يراقب مراجع من مقصورة للقراءة فقط
حد أسماء المضيفين يخص الجلسة، أما حد القراءة فقط فيخص اتصال مشاهدة واحدًا.

كيف تتحول أتمتة المتصفح إلى مسار مراجعة للعميل

لنفترض أن وكالة تُنشئ تقريرًا داخل تطبيق ويب يخص أحد عملائها. يحتاج المتصفح إلى اسم المضيف الرئيسي للعميل، ومضيف للمصادقة، وواجهة API، ومضيف للخطوط، وربما شبكة CDN للصور. ويريد العميل أيضًا مشاهدة التنفيذ قبل اعتماد المخرجات.

يمكن الآن التعامل مع هذين المطلبين بوصفهما قرارين مستقلين:

  1. يعتمد المسؤول التقني الوجهات التي تحتاج إليها الجلسة.
  2. يتلقى العميل رابط Live View بصلاحية المشاهدة فقط ويتابع المهمة أثناء تنفيذها.

لا يحصل المراجع على متصفح تفاعلي، ولا تحصل المهمة على قائمة وجهات مفتوحة. وهذا تسليم أوضح من استخدام رابط متصفح مشترك واحد بوصفه أداة عرض وقرارًا للتحكم في الوصول في آن واحد.

ومع ذلك، لا يشكل هذا نظامًا أمنيًا متكاملًا. توثق Cloudflare عناصر التحكم في أسماء المضيفين لطلبات HTTP وHTTPS، لذلك لا ينبغي وصفها بأنها بيئة عزل شبكية للأغراض العامة. كذلك يتضمن رابط Live View رمز JWT موقّعًا، ما يجعل الرابط الكامل بيانات اعتماد. تزيل صلاحية القراءة فقط إمكانية التفاعل، لكنها لا تمنع رؤية ما يظهر على الصفحة.

التحدي الحقيقي هو صيانة قائمة الأصول

نادرًا ما يكون اسم المضيف الواضح هو كل ما تحتاج إليه الصفحة.

قد تعيد صفحة إنتاجية التوجيه أثناء تسجيل الدخول، وتتصل بواجهة API منفصلة، وتحمّل النصوص البرمجية من مضيف والصور من آخر والخطوط من ثالث. تطلب Cloudflare إدراج كل هذه التبعيات. إذا فات أحدها، يعيد المتصفح حالة 403 لذلك الطلب، مع cf-mitigated: guardrails وcf-brapi-guardrails-reason: not-in-allowlist في ترويسات الاستجابة.

لهذا تصبح صيانة قائمة السماح تكلفة فعلية ضمن تسليم المشروع. فأي إعادة تصميم لدى العميل، أو تغيير في مزوّد الهوية، أو استبدال لأداة التحليلات، أو نقل إلى CDN جديدة قد يستدعي تعديل السياسة وتشغيل تحقق جديد. ولا يوجد تقدير موحّد وصادق لحجم هذا العمل؛ الأفضل قياسه داخل أعمالك الفعلية.

تتيح Cloudflare طريقتين لتمرير القائمة:

  • allowedDomains هو الخيار المباشر، ويسمح بما يصل إلى 50 نمطًا لأسماء المضيفين ضمن استدعاء تشغيل الجلسة.
  • يقبل allowedDomainSets ما يصل إلى 4 قوائم مشتركة. ويمكن أن تضم مجموعة common-cdns من Cloudflare أو عناوين URL تعمل عبر HTTPS وتعيد قائمة نصية عادية بأسماء المضيفين.

تفيد القائمة المشتركة عندما تحتاج مهام كثيرة لعملاء مختلفين إلى الخدمات المعتمدة نفسها. ولها أيضًا قواعد زمنية: تخزّن Cloudflare القائمة المستضافة مؤقتًا لمدة تصل إلى ساعة واحدة، ولا يؤثر أي تحديث إلا في الجلسات التي تبدأ بعد قراءة القائمة المحدّثة. أما الجلسة الجارية فلا تتغير سياستها أثناء التشغيل.

وتوجد مفاضلة أخرى عند استخدام common-cdns: تتولى Cloudflare صيانتها وقد تغيّرها بمرور الوقت. يقلل ذلك عبء صيانة القائمة، لكنه لا يقدم قائمة سماح ثابتة. إذا كان العقد أو التدقيق يتطلب مجموعة وجهات مستقرة، فاستخدم أسماء مضيفين صريحة أو قائمة تستضيفها بنفسك.

4 فرق تستطيع الاستفادة من الميزة الآن

قائد تقني في وكالة يستطيع فصل الاعتماد عن التحكم

اسمح لتطبيق العميل وتبعياته المطلوبة، ثم شغّل مهمة المتصفح وأنشئ رابط Live View للقراءة فقط كي يتابعه مدير الحساب أو مراجع العميل. يمكنه مشاهدة الأدلة وهي تتشكل من دون النقر داخل التطبيق أو تغيير مسار التنفيذ. النتيجة هي خطوة مراجعة لا تتحول خلسة إلى تسليم لصلاحيات المشغّل.

مؤسس SaaS يستطيع إبقاء ملف PDF مستقلًا بذاته

إذا كنت تنشئ أصلًا لقطة شاشة أو ملف PDF من HTML مضمّن وموثوق، فابدأ الجلسة بمصفوفة allowedDomains فارغة ومن دون مجموعات نطاقات. سيظل HTML قابلًا للعرض، لكنه لن يستطيع جلب واجهة API خارجية أو نص برمجي أو صورة أو خط عبر HTTP أو HTTPS. ويصبح لديك بذلك ادعاء أبسط يمكن اختباره: عملية العرض هذه لم تطلب محتوى ويب خارجيًا.

عنصر التحكم هذا غير متاح في Quick Actions، بما فيها نقاط الاختصار التي تُستخدم كثيرًا لالتقاط الصور وإنشاء ملفات PDF. لاستخدامه، تحتاج إلى Browser Session عبر Puppeteer أو Playwright أو CDP.

فريق منصة يستطيع امتلاك سياسة موحدة للتبعيات

استضف قائمة نصية عادية عبر HTTPS، وضع نمط اسم مضيف واحدًا في كل سطر، ثم أشر إلى عنوان URL الخاص بها عبر allowedDomainSets. تستطيع عدة مشغلات للجلسات استخدام القائمة نفسها. وتتمثل الفائدة في نقطة صيانة واحدة، مع قاعدة مهمة: سطر واحد غير صالح يؤدي إلى رفض القائمة المستضافة كلها.

مراجع أمني يستطيع طلب اختبار فشل

لا تكتفِ بعرض الإعداد. حاول إرسال طلب إلى اسم مضيف غير مسموح به، ثم احفظ حالة 403 وترويسَتَي ضوابط الحماية ضمن سجل المراجعة. الفائدة هنا هي إثبات أن المسار السلبي نجح، لا مجرد لقطة شاشة لكائن بدا صحيحًا.

إعداد جلسة مراجعة محمية واحدة

هذا شرح تقني لأن الميزة تُحدَّد عند إنشاء الجلسة. والكود أدناه مأخوذ من صفحات Cloudflare التي استُخدمت لإعداد هذا المقال.

  1. تثبيت عميل متوافق وربط المتصفح

    تتطلب Cloudflare الإصدار 1.4.0 أو أحدث من @cloudflare/puppeteer لاستخدام ضوابط الحماية. وأمر تثبيت Puppeteer هو:

    Bash
    npm i -D @cloudflare/puppeteer

    يحتاج Worker أيضًا إلى ربط بالمتصفح. ويسميه مثال Wrangler من Cloudflare باسم MYBROWSER:

    Jsonc
    {
    	"$schema": "./node_modules/wrangler/config-schema.json",
    	"name": "browser-rendering",
    	"main": "src/index.ts",
    	"workers_dev": true,
    	"compatibility_flags": ["nodejs_compat_v2"],
    	"browser": {
    		"binding": "MYBROWSER"
    	}
    }

    تحقق من إصدار الحزمة المثبّتة. لا تزال صفحة النظرة العامة الأقدم لـPuppeteer تصف 1.1.0 بأنه الإصدار الحالي، لكن صفحة ضوابط الحماية الأحدث تشترط 1.4.0 أو أحدث. اتبع متطلبات الميزة.

  2. تشغيل الجلسة وفق سياسة الوجهات

    يسمح مثال Puppeteer المحمي من Cloudflare بالنطاق الأساسي ونطاقاته الفرعية ومجموعة common-cdns المشتركة:

    JavaScript
    import puppeteer from "@cloudflare/puppeteer";
    
    export async function startGuardedSession(env) {
    	const browser = await puppeteer.launch(env.MYBROWSER, {
    		guardrails: {
    			allowedDomains: ["example.com", "*.example.com"],
    			allowedDomainSets: ["common-cdns"],
    		},
    	});
    
    	return browser;
    }

    لا تستبدل القيم النموذجية إلا بعد جرد عمليات إعادة التوجيه وواجهات API والنصوص البرمجية والصور والخطوط التي تستخدمها الصفحة. لاحظ أن *.example.com لا يشمل example.com، ولهذا يظهر الإدخالان معًا.

  3. إثبات حظر مضيف غير معتمد

    أرسل طلبًا إلى اسم مضيف خارج القائمة. النتيجة المتوقعة هي HTTP 403 مع cf-mitigated: guardrails وcf-brapi-guardrails-reason: not-in-allowlist. اختبر كذلك الصفحة المعتمدة عبر مسار تسجيل الدخول والعرض كاملًا. الاختبار السلبي يثبت عمل الحد، والاختبار الإيجابي يثبت أن المهمة ما زالت تعمل.

  4. إنشاء رابط مراجعة بصلاحية المشاهدة فقط

    بعد توفر معرّف الجلسة، ينشئ مثال REST من Cloudflare عرضًا للتبويب لا يسمح للمشاهد بالتفاعل:

    Bash
    curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/browser-rendering/devtools/browser/$SESSION_ID/live_view" \
    	--request POST \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    	--json '{
    		"mode": "tab",
    		"guardrails": {
    			"mode": "readonly"
    		}
    	}'

    أنشئ عنوان URL هذا في كود موثوق يعمل من جهة الخادم، وشاركه عبر قناة موثوقة. المهلة الافتراضية لبدء الاتصال هي 5 دقائق. ويمكن ضبط expiresInMs على قيمة تبدأ من 60,000 مللي ثانية وتصل إلى 3,600,000 مللي ثانية، أي ساعة واحدة.

قد يسبب تكرار كلمة guardrails التباسًا هنا. ففي تشغيل الجلسة، تحتوي على allowedDomains وتتحكم في الوجهات. وفي طلب عنوان URL لـLive View، تحتوي على mode: readonly وتتحكم في ذلك المشاهد. تحتاج إلى الإعدادين إذا أردت تطبيق الحدّين معًا.

قد تنقل الميزة المهمة إلى فاتورة مختلفة

لا تتضمن أسعار Browser Run الحالية من Cloudflare بندًا منفصلًا لكل إدخال في قائمة السماح. ما يغيّر التكلفة هو الانتقال من طريقة تكامل إلى أخرى.

تُحاسَب Quick Actions على ساعات المتصفح فقط، لكنها لا تستطيع استخدام ضوابط الحماية هذه. أما Browser Sessions فتدعمها، وتُحاسَب على ساعات المتصفح والمتصفحات المتزامنة معًا. إذا أصبحت مهمة مختصرة لإنشاء PDF أو لقطة شاشة بحاجة إلى تقييد أسماء المضيفين، فإن نقلها إلى Puppeteer أو Playwright أو CDP يغيّر التنفيذ ونموذج التكلفة كليهما.

ضمن Workers Paid، تشمل الباقة 10 ساعات متصفح شهريًا و10 متصفحات متزامنة. وتبلغ تكلفة الوقت الإضافي للمتصفح $0.09 لكل ساعة، بينما تبلغ تكلفة التزامن الإضافي $2.00 لكل متصفح، استنادًا إلى المتوسط الشهري لأعلى عدد يومي.

صيغة التخطيط المفيدة هي:

extra usage cost = max(0, browser hours - 10) × $0.09 + max(0, average daily peak browsers - 10) × $2.00

يستخدم مثال Cloudflare نفسه 50 ساعة متصفح ومتوسطًا قدره 15 متصفحًا متزامنًا. وينتج من ذلك $3.60 مقابل 40 ساعة إضافية، إلى جانب $10.00 مقابل 5 متصفحات إضافية، بإجمالي $13.60 رسوم استخدام إضافية. هذه ليست رسومًا لضوابط الحماية، بل فاتورة Browser Session المرتبطة بالمسار الذي يدعمها.

تتضمن Workers Free مدة 10 دقائق متصفح يوميًا و3 متصفحات متزامنة. قد تكفي هذه الحدود لإثبات مفهوم صغير، لكنها لا تترك مساحة كبيرة لمسار عمل عميل يتطلب جولات مراجعة متكررة.

إذا كنت تستخدم Browser Sessions بالفعل، فلن تتغير فئات الفوترة. ستكون التكلفة الجديدة تشغيلية في معظمها: جمع مضيفي الأصول، واختبار المسارات المحظورة والمسموح بها، والحفاظ على تحديث القائمة. وإذا كنت لا تزال تقارن حلول المتصفح المُدار، فإن الدليل الأوسع لمتصفحات وكلاء الذكاء الاصطناعي يضع بنود الاستخدام هذه في سياقها.

أين يمكن أن يتعطل هذا النهج؟

أسهل حالات الفشل هي صفحة تعمل أثناء التطوير ثم تفقد خطًا أو صورة أو عملية إعادة توجيه لتسجيل الدخول أو استدعاء API بعد تفعيل قائمة السماح. وقد يخفي حرف بدل واسع هذا الفشل، لكنه يضعف الحد الذي أردت إنشاءه.

تسمح Cloudflare بحرف بدل واحد لكل نمط اسم مضيف. استخدم *.example.com للنطاقات الفرعية، وأدرج النطاق الأساسي بصورة منفصلة. أما نمط البادئة مثل *example.com فقد يطابق أيضًا اسمًا مشابهًا مثل evilexample.com، ولذلك فهو اختصار غير مناسب لسياسة عميل محكمة.

لـLive View بصلاحية القراءة فقط حد مختلف أيضًا. فهو يحمي اتصال مشاهد واحدًا، ولا يحمي الجلسة من مشغّلها، ولا يمنع اتصالًا آخر من التحكم فيها. ولا يستطيع Puppeteer أو Playwright قيادة اتصال القراءة فقط لأن الأوامر اللازمة محظورة. وهذا مفيد للمراجع وعديم الفائدة بوصفه بيانات اعتماد للأتمتة، تمامًا كما ينبغي.

تظل Quick Actions وKitesurf خارج نطاق ميزة ضوابط الحماية. ولا يتأثر من يستخدم أيًا منهما إلا إذا قرر أن حد أسماء المضيفين يستحق تغيير مسار التكامل.

ما الذي ينبغي فعله يوم الاثنين؟

اختر مهمة حقيقية لعميل واحد تكون وجهاتها مستقرة. ولا تبدأ بأكثر مسارات تسجيل الدخول لديك تعقيدًا.

احصر كل اسم مضيف يستخدمه المسار الناجح، بما في ذلك عمليات إعادة التوجيه ومضيفو الأصول. شغّل Browser Session محمية، وتأكد من المخرجات المقصودة، ثم اطلب عمدًا اسم مضيف غير معتمد واحفظ دليل 403. وأخيرًا، امنح زميلًا رابط Live View للقراءة فقط، وتأكد من قدرته على المشاهدة لا التفاعل.

سجّل 4 عناصر من هذا الاختبار التجريبي: عدد أسماء المضيفين المطلوبة، والوقت المستغرق في صيانتها، وعدد الطلبات المشروعة التي حُظرت في البداية، ومتوسط ذروة المتصفحات المتزامنة. تخبرك هذه القيم الـ4 ما إذا كان ذلك عنصر تحكم واضحًا أم وعدًا مكلفًا لمسار العمل ذاك.

تحرّك هذا الأسبوع إذا كنت تقدم مهام متصفح للعملاء، وكانت أسماء المضيفين المطلوبة قابلة للحصر، وكانت المراقبة بلا تحكم تحل مشكلة اعتماد حقيقية. انتظر إذا كانت تبعياتك تتغير باستمرار، أو إذا كانت مهمتك لا تزال تعمل عبر Quick Actions ولم تحسب تكلفة الانتقال إلى Browser Session. أما إذا كنت لا تشغّل Browser Sessions ولا تشارك عمل المتصفح المباشر، فلن يغيّر هذا الإصدار ما ستفعله يوم الاثنين.

إذا أردت مزيدًا من الشروح التشغيلية لتغييرات المنصات، فانضم إلى النشرة البريدية.

آخر تحديث
14 سبتمبر 2026
التصنيف
Explained

فضّل هذا الموقع في Google

إضافة omidsaffari.com كمصدر مفضّل في بحث Google

اجعل omidsaffari.com مصدرًا مفضّلًا، وسيرفعه Google لك في Top Stories وAI Overviews وAI Mode.

مقالات ذات صلة
تكلفة وكيل صوتي بالذكاء الاصطناعي مع GPT-Live-1: ما الذي تدفعه فعلاً؟

تكلفة وكيل صوتي بالذكاء الاصطناعي مع GPT-Live-1: ما الذي تدفعه فعلاً؟

يضع GPT-Live-1 سعراً واضحاً للصوت، لكن فاتورة المكالمة تشمل الاستدلال والأدوات والاتصال الهاتفي. إليك طريقة حساب التكلفة الفعلية لكل مكالمة ناجحة.14 سبتمبر 2026Explained
ميزة Appshots في ChatGPT تختصر نسخ السياق على Windows

ميزة Appshots في ChatGPT تختصر نسخ السياق على Windows

تشرح ميزة Appshots في ChatGPT على Windows كيف ترفق النافذة الموجودة في المقدمة بالمحادثة، وتقلّل نسخ السياق يدويًا، وما ينبغي مراجعته قبل مشاركة البيانات.14 سبتمبر 2026Explained
ملفات FastAPI الثابتة على Vercel: كيف يخفض CDN استهلاك Functions

ملفات FastAPI الثابتة على Vercel: كيف يخفض CDN استهلاك Functions

تعرّف إلى طريقة نقل Vercel لملفات FastAPI الثابتة إلى CDN، وما الذي ينخفض في استهلاك Functions والفاتورة، وما يبقى محسوبًا من الطلبات ونقل البيانات.13 سبتمبر 2026Explained
تدوير مفاتيح API في OpenAI: خطة لتفادي انقطاع الخدمة

تدوير مفاتيح API في OpenAI: خطة لتفادي انقطاع الخدمة

دليل عملي لتدوير مفاتيح API في OpenAI قبل انتهاء الصلاحية، مع تحديد المسؤوليات وتقدير تكلفة الصيانة واختبار المفتاح البديل من دون تعطيل الخدمات.13 سبتمبر 2026Explained
صلاحيات Vercel Connect: من يملك بيانات الاعتماد المشتركة؟

صلاحيات Vercel Connect: من يملك بيانات الاعتماد المشتركة؟

تمنح صلاحيات Vercel Connect فرق Pro وEnterprise حدًا واضحًا لإدارة الموصلات المشتركة. تعرّف كيف توزّع الأدوار وتحافظ على سير بناء التطبيقات.13 سبتمبر 2026Explained
فهرسة ملفات R2 بلا امتداد: ماذا يغيّر تحديث Cloudflare AI Search؟

فهرسة ملفات R2 بلا امتداد: ماذا يغيّر تحديث Cloudflare AI Search؟

يشرح هذا الدليل كيف يفهرس Cloudflare AI Search ملفات R2 بلا امتداد عبر Content-Type الصحيح، وما يبقى من تدقيق البيانات الوصفية والمزامنة والتحقق.12 سبتمبر 2026Explained
Vercel Sandbox بسعة 64 GB: متى تستغني مهام الوكلاء عن التجزئة؟

Vercel Sandbox بسعة 64 GB: متى تستغني مهام الوكلاء عن التجزئة؟

تضاعفت مساحة العمل الافتراضية في Vercel Sandbox من 32 GB إلى 64 GB. إليك ما يتغير في مهام البرمجة الكبيرة، وكيف تقيس الذروة قبل تعديل سير العمل.12 سبتمبر 2026Explained
Cloudflare Workflows بعد تقليص سجل التشغيل: كيف تضبط الاحتفاظ والتكلفة

Cloudflare Workflows بعد تقليص سجل التشغيل: كيف تضبط الاحتفاظ والتكلفة

تغيّر الإعداد الافتراضي للاحتفاظ في Cloudflare Workflows إلى 7 أيام. تعرّف إلى طريقة فصل سجل النجاح عن الأخطاء وضبط التكلفة من دون فقد أدلة الحوادث.11 سبتمبر 2026Explained
النشرة البريدية

رسالة واحدة، كل يوم أحد.أنظمة تعمل، لا آراء ساخنة.

أسبوعية. بلا إزعاج. يمكنك إلغاء الاشتراك متى شئت.