Chrome एक्सटेंशन में प्रॉक्सी जाँच को ऐसा गंतव्य चाहिए जिसका प्रत्युत्तर पहले से अनुमानित हो। आप जिस HTTPS एंडपॉइंट को नियंत्रित करते हैं उसका उपयोग करें, जैसे वह जो अपने देखे गए पते वाला छोटा JSON ऑब्जेक्ट लौटाता है।

अनुरोध को एक्सटेंशन संदर्भ से चलाएँ, जैसे उसका service worker या एक्सटेंशन पृष्ठ, और एंडपॉइंट को manifest की host permissions में रखें:

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

होस्ट अनुमति किसी content script को वही क्रॉस-ओरिजिन विशेषाधिकार नहीं देती। जाँच को एक्सटेंशन संदर्भ में ही रखें, यह न मानें कि इंजेक्ट की गई स्क्रिप्ट वही अनुरोध कर सकती है।

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 त्रुटि और अप्रत्याशित बॉडी को अलग रखें। एक अनुरोध के बाद पूरी मशीन को ऑफ़लाइन घोषित करने से “यह जाँच विफल रही” अधिक उपयोगी है।

संबंधित लेख