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 خرابی اور غیر متوقع باڈی کو الگ رکھیں۔ ایک درخواست کے بعد پوری مشین کو آف لائن قرار دینے سے “یہ جانچ ناکام ہوئی” زیادہ مفید ہے۔

متعلقہ مضامین