Zaregistrujte jeden proxy autentifikačný poslucháč Chrome MV3 na prepínanie profilov
Zaregistrujte autentifikačný poslucháč Manifest V3 synchrónne a čítajte aktuálny proxy účet v spätnom volaní udalosti.
Prepnutie proxy profilu by malo zmeniť vybraný účet, nie pridať ďalší poslucháč onAuthRequired. Inak staré closures môžu ďalej odpovedať účtom z predchádzajúceho výberu.
Zaregistrujte jeden pomenovaný poslucháč na najvyššej úrovni service workera. Pri príchode udalosti čítajte aktuálny účet:
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'],
);Tento fragment predpokladá, že rozšírenie už ukladá vybraný HTTP proxy pod selectedProxy, s číselným portom a zamýšľaným účtom. Manifest potrebuje webRequest, webRequestAuthProvider, storage a požadované oprávnenia hostiteľa. Samotný výber proxy tiež potrebuje oprávnenie proxy.
Registrácia prebieha synchrónne. Úložisko sa čítá v spätnom volaní, po tom, čo Chrome má nainštalovaný poslucháč, ktorému doručuje. Registrácia až po vyriešení počiatočného storage promise vytvára medzeru pri prebudení.
Pred vydaním pridajte limit odmietnutí
Fragment ukazuje registráciu a výber účtu. Pridajte obmedzený záznam opakovania pre každú požiadavku, aby sa odmietnuté heslo neodosielalo donekonečna. Ten záznam pri dokončení alebo zlyhaní vyčistite. Globálne premenné workera môžu zmiznúť, keď sa worker zastaví, preto stav potrebný medzi prebudnutiami uchovávajte vo vhodnej oblasti úložiska rozšírenia.
storage.session prežije reštarty workera v rámci relácie prehliadača; nie je trvalým úložiskom účtu medzi reštartmi prehliadača. Definujte, čo rozšírenie robí, keď nie je dostupný žiadny vybraný účet.
Kontroly isProxy a challenger bránia tomu, aby výzva nesúvisiacej webovej stránky dostala tento účet. Ak prehliadač udalosť nikdy nedoručí, samotné vyčistenie poslucháča ju nemôže vytvoriť: preskúmajte skutočnú požiadavku, oprávnenia a správanie prehliadača oddelene.