प्रोफाइल स्विचिङका लागि एउटा 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 जाँचले असम्बन्धित वेबसाइटको चुनौतीलाई यो खाता प्राप्त गर्नबाट रोक्छन्। यदि ब्राउजरले घटना कहिल्यै पठाउँदैन भने, श्रोता सफाइ मात्रले यसलाई उत्पन्न गर्न सक्दैन: वास्तविक अनुरोध, अनुमति र ब्राउजर व्यवहार छुट्टाछुट्टै जाँच्नुहोस्।