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

نفّذ الطلب من سياق الإضافة، مثل عامل الخدمة أو صفحة الإضافة، مع إدراج نقطة النهاية في أذونات المضيف في البيان:

"host_permissions": ["https://probe.example/*"]

لا يمنح إذن المضيف برنامجًا نصيًا للمحتوى الامتيازات نفسها عبر الأصول. أبقِ الفحص في سياق الإضافة بدلًا من افتراض أن برنامجًا نصيًا محقونًا يستطيع تنفيذ الطلب نفسه.

async function probe() {
  const controller = new AbortController();
  const timer = setTimeout(() => controller.abort(), 5000);
  try {
    const response = await fetch('https://probe.example/ip', {
      cache: 'no-store',
      signal: controller.signal,
    });
    if (!response.ok) throw new Error(`HTTP ${response.status}`);
    const result = await response.json();
    if (typeof result.ip !== 'string') throw new Error('Bad probe body');
    return result.ip;
  } finally {
    clearTimeout(timer);
  }
}

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

سمِّ الرصد بدقة

تثبت النتيجة الناجحة أن هذا الطلب وصل إلى نقطة النهاية وتلقى الشكل المتوقع من الإجابة. قارن العنوان المرصود بالمسار الذي قصدته، حيث يكون هذا المقارنة ذات معنى. لا يلزم أن يكون عنوان IP الذي يستمع عليه الوكيل المهيأ هو عنوان الخروج العام.

قد ترسل قاعدة PAC أو قائمة تجاوز الفحص مباشرة بينما تستخدم وجهة أخرى وكيلًا. قراءة إعدادات الوكيل توفّر دليلًا على الإعداد؛ أما الطلب فيوفّر دليلًا على هذه الوجهة. لا يثبت أي منهما وحده أن كل تبويب أو عنوان URL يتبع المسار نفسه.

أبقِ المهلة وخطأ HTTP والجسم غير المتوقع منفصلة في الواجهة. عبارة «فشل هذا الفحص» أنفع من إعلان الجهاز كله غير متصل بعد طلب واحد.

مقالات ذات صلة