Зарэгістраваць адзін слухач аўтэнтыфікацыі проксі Chrome MV3 для змены профілю
Зарэгіструйце слухач аўтэнтыфікацыі Manifest V3 сінхронна і чытайце бягучы ўліковы запіс проксі ў зваротным выкліку падзеі.
Змена профіляў проксі павінна змяняць выбраны ўліковы запіс, а не дадаваць яшчэ адзін слухач onAuthRequired. Інакш старыя closures могуць працягваць адказваць уліковым запісам з папярэдняга выбару.
Зарэгіструйце адзін названы слухач на верхнім узроўні service worker. Чытайце бягучы ўліковы запіс, калі прыходзіць падзея:
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 з'явіцца ўсталяваны слухач для дастаўкі. Рэгістрацыя толькі пасля вырашэння пачатковага promise сховішча стварае прабел у абуджэнні.
Дадайце ліміт адхіленняў перад выпускам
Фрагмент паказвае рэгістрацыю і выбар уліковага запісу. Дадайце абмежаваны запіс паўторных спроб для кожнага запыту, каб адхілены пароль не адпраўляўся бясконца. Ачышчайце гэты запіс пры завяршэнні або памылцы. Глабальныя зменныя worker могуць знікнуць, калі worker спыняецца, таму захоўвайце стан, патрэбны паміж абуджэннямі, у адпаведнай вобласці сховішча пашырэння.
storage.session перажывае перазапускі worker у межах сеансу браўзера; гэта не пастаяннае сховішча ўліковага запісу паміж перазапускамі браўзера. Вызначце, што робіць пашырэнне, калі выбраны ўліковы запіс недаступны.
Праверкі isProxy і challenger перашкаджаюць таму, каб непавязаны выклік вэбсайта атрымаў гэты ўліковы запіс. Калі браўзер ніколі не дасылае падзею, адно ачыстка слухача не можа яе стварыць: даследуйце фактычны запыт, дазволы і паводзіны браўзера асобна.