Profil dəyişdirmə üçün bir Chrome MV3 proxy autentifikasiya dinləyicisi qeyd edin
Manifest V3 autentifikasiya dinləyicisini sinxron qeyd edin və hadisə geri çağırışında cari proxy hesabını oxuyun.
Proxy profillərini dəyişdirmək seçilmiş hesabı dəyişməlidir, başqa bir onAuthRequired dinləyicisi əlavə etməməlidir. Əks halda köhnə closures əvvəlki seçimdən olan hesabla cavab verməyə davam edə bilər.
Xidmət işçisinin yuxarı səviyyəsində bir adlı dinləyici qeyd edin. Hadisə gəldikdə cari hesabı oxuyun:
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'],
);Bu fraqment ehtimal edir ki, genişlənmə seçilmiş HTTP proxysini artıq selectedProxy altında saxlayır: rəqəmsal port və nəzərdə tutulan hesab ilə. Manifest webRequest, webRequestAuthProvider, storage və tələb olunan host icazələrinə ehtiyac duyur. Proxy seçiminin özü də proxy icazəsi tələb edir.
Qeydiyyat sinxron baş verir. Yaddaş geri çağırışın içində, Chrome-un yönləndirəcəyi quraşdırılmış dinləyicisi olduqdan sonra oxunur. Yalnız ilkin storage promise həll olduqdan sonra qeydiyyat oyanma boşluğu yaradır.
Buraxmadan əvvəl rədd limiti əlavə edin
Fraqment qeydiyyatı və hesab seçimini göstərir. Hər sorğu üçün məhdud təkrar cəhd qeydi əlavə edin ki, rədd edilmiş parol sonsuz göndərilməsin. Həmin qeydi tamamlanma və ya uğursuzluqda təmizləyin. İşçi dayandıqda qloballar yox ola bilər, ona görə oyanmalar arasında lazım olan vəziyyəti uyğun genişlənmə yaddaş sahəsində saxlayın.
storage.session brauzer sessiyası daxilində işçi yenidən başlamalarına dözür; brauzer yenidən başlamaları arasında daimi hesab yaddaşı deyil. Seçilmiş hesab mövcud olmadıqda genişlənmənin nə etdiyini müəyyənləşdirin.
isProxy və challenger yoxlamaları əlaqəsiz vebsayt çağırışının bu hesabı almasının qarşısını alır. Brauzer hadisəni heç vaxt göndərmirsə, yalnız dinləyici təmizliyi onu yarada bilməz: faktiki sorğunu, icazələri və brauzer davranışını ayrı-ayrılıqda yoxlayın.