प्रोफाइल स्विचिंगसाठी एक 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 promise सुटल्यानंतरच नोंदणी केल्यास जागण्याची तफावत निर्माण होते.
प्रकाशनापूर्वी नकार मर्यादा जोडा
तुकडा नोंदणी आणि खाते निवड दाखवतो. नाकारलेला पासवर्ड अमर्यादित सबमिट होऊ नये म्हणून प्रत्येक विनंतीसाठी मर्यादित पुनःप्रयत्न नोंद जोडा. पूर्ण झाल्यावर किंवा अपयशी झाल्यावर ती नोंद साफ करा. वर्कर थांबल्यावर वर्कर globals नाहीसे होऊ शकतात, म्हणून जागण्यांमध्ये आवश्यक स्थिती योग्य एक्स्टेंशन साठवण भागात ठेवा.
storage.session ब्राउझर सत्रातील वर्कर पुनःप्रारंभ टिकवते; ते ब्राउझर पुनःप्रारंभांमधील कायमचे खाते साठवण नाही. निवडलेले खाते उपलब्ध नसल्यास एक्स्टेंशन काय करते ते परिभाषित करा.
isProxy आणि challenger तपासण्या असंबंधित वेबसाइटच्या आव्हानाला हे खाते मिळण्यापासून रोखतात. ब्राउझरने इव्हेंट कधीही पाठवला नाही तर फक्त श्रोता साफसफाई त्याला निर्माण करू शकत नाही: प्रत्यक्ष विनंती, परवानग्या आणि ब्राउझर वर्तन स्वतंत्रपणे तपासा.