پروفائل تبدیل کرنے کے لیے ایک Chrome MV3 پراکسی تصدیق سامع رجسٹر کریں
Manifest V3 تصدیق سامع کو ہم وقت رجسٹر کریں اور واقعے کے کال بیک کے اندر موجودہ پراکسی اکاؤنٹ پڑھیں۔
پراکسی پروفائلز تبدیل کرنے سے منتخب اکاؤنٹ تبدیل ہونا چاہیے، نہ کہ ایک اور onAuthRequired سامع شامل کرنا۔ ورنہ پرانے closures پچھلی انتخاب کے اکاؤنٹ سے جواب دیتے رہ سکتے ہیں۔
سروس ورکر کی سب سے اوپر سطح پر ایک نامزد سامع رجسٹر کریں۔ واقعہ آنے پر موجودہ اکاؤنٹ پڑھیں:
function answerProxyChallenge(details, reply) {
if (!details.isProxy) {
reply({});
return;
}
chrome.storage.session.get('selectedProxy').then(({selectedProxy: p}) => {
if (!p || details.challenger.host !== p.host ||
details.challenger.port !== p.port) {
reply({});
return;
}
reply({authCredentials: {username: p.username, password: p.password}});
}).catch(() => reply({cancel: true}));
}
chrome.webRequest.onAuthRequired.addListener(
answerProxyChallenge,
{urls: ['<all_urls>']},
['asyncBlocking'],
);یہ ٹکڑا فرض کرتا ہے کہ ایکسٹینشن پہلے ہی منتخب HTTP پراکسی کو selectedProxy کے تحت محفوظ کرتی ہے، عددی پورٹ اور اس کے مطلوبہ اکاؤنٹ کے ساتھ۔ مینی فیسٹ کو webRequest، webRequestAuthProvider، storage اور مطلوبہ ہوسٹ اجازتیں درکار ہیں۔ پراکسی کا انتخاب خود بھی proxy اجازت کا متقاضی ہے۔
رجسٹریشن ہم وقت ہوتی ہے۔ اسٹوریج کال بیک کے اندر پڑھی جاتی ہے، بعد ازاں کہ Chrome کے پاس بھیجنے کے لیے نصب شدہ سامع ہو۔ صرف ابتدائی storage وعدے کے حل ہونے کے بعد رجسٹر کرنا بیدار ہونے کا خلا پیدا کرتا ہے۔
جاری کرنے سے پہلے مسترد ہونے کی حد شامل کریں
ٹکڑا رجسٹریشن اور اکاؤنٹ کے انتخاب کو دکھاتا ہے۔ ہر درخواست کے لیے ایک محدود دوبارہ کوشش کا ریکارڈ شامل کریں تاکہ مسترد شدہ پاس ورڈ بے حد جمع نہ ہوتا رہے۔ وہ ریکارڈ مکمل ہونے یا ناکامی پر صاف کریں۔ ورکر کے بند ہونے پر worker globals غائب ہو سکتے ہیں، اس لیے بیدار ہونے کے درمیان مطلوبہ حالت ایکسٹینشن کے مناسب اسٹوریج علاقے میں رکھیں۔
storage.session براؤزر سیشن کے اندر ورکر کی دوبارہ شروعات کو برداشت کرتا ہے؛ یہ براؤزر کی دوبارہ شروعات کے درمیان مستقل اکاؤنٹ اسٹوریج نہیں ہے۔ واضح کریں کہ کوئی منتخب اکاؤنٹ دستیاب نہ ہونے پر ایکسٹینشن کیا کرتی ہے۔
isProxy اور challenger کی جانچیں کسی غیر متعلق ویب سائٹ کے چیلنج کو یہ اکاؤنٹ ملنے سے روکتی ہیں۔ اگر براؤزر کبھی واقعہ نہ بھیجے تو صرف سامع کی صفائی اسے پیدا نہیں کر سکتی: اصل درخواست، اجازتیں اور براؤزر کا رویہ الگ الگ جانچیں۔