Regjistroni një dëgjues të vetëm të autentikimit të proxy Chrome MV3 për ndërrimin e profilit
Regjistroni dëgjuesin e autentikimit të Manifest V3 në mënyrë sinkrone dhe lexoni llogarinë aktuale të proxy brenda kthimit të ngjarjes.
Ndërrimi i profileve të proxy duhet të ndryshojë llogarinë e zgjedhur, jo të shtojë një dëgjues tjetër onAuthRequired. Përndryshe closures e vjetra mund të vazhdojnë të përgjigjen me llogarinë e një zgjedhjeje të mëparshme.
Regjistroni një dëgjues të emërtuar në nivelin më të lartë të service worker. Lexoni llogarinë aktuale kur mbërrin një ngjarje:
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'],
);Ky fragment supozon se shtesa tashmë e ruan proxy-n HTTP të zgjedhur nën selectedProxy, me një port numerik dhe llogarinë e synuar. Manifesti ka nevojë për webRequest, webRequestAuthProvider, storage dhe lejet e kërkuara të hostit. Edhe vetë zgjedhja e proxy ka nevojë për lejen proxy.
Regjistrimi ndodh në mënyrë sinkrone. Ruajtja lexohet brenda kthimit, pasi Chrome të ketë një dëgjues të instaluar ku të dërgojë. Regjistrimi vetëm pasi zgjidhet një premtim fillestar i ruajtjes krijon një boshllëk zgjimi.
Shtoni një kufi refuzimi përpara publikimit
Fragmenti tregon regjistrimin dhe zgjedhjen e llogarisë. Shtoni një regjistrim të kufizuar ripërpjekjesh për çdo kërkesë, që një fjalëkalim i refuzuar të mos dërgohet pafundësisht. Pastroni atë regjistrim në përfundim ose dështim. Globalet e worker mund të zhduken kur worker ndalon, prandaj mbani gjendjen e nevojshme mes zgjimeve në një zonë të përshtatshme ruajtjeje të shtesës.
storage.session i mbijeton rinisjeve të worker brenda sesionit të shfletuesit; nuk është ruajtje e përhershme e llogarisë mes rinisjeve të shfletuesit. Përcaktoni çfarë bën shtesa kur nuk ka asnjë llogari të zgjedhur të disponueshme.
Kontrollet isProxy dhe challenger parandalojnë që një sfidë nga një faqe e palidhur të marrë këtë llogari. Nëse shfletuesi nuk e dërgon kurrë ngjarjen, vetëm pastrimi i dëgjuesit nuk mund ta prodhojë atë: shqyrtoni veçmas kërkesën aktuale, lejet dhe sjelljen e shfletuesit.