Electron görünüşləri ayrı HTTP proxy hesablarına sahib ola bilər
Hər WebContentsView üçün hesaba xas sessiya yaradın və yalnız həmin görünüşün uyğun Basic proxy çağırışına cavab verin.
Mövcud Electron tətbiqlərində hər hesaba xas WebContentsView-ə öz adlı sessiyasını verin. Tətbiq hazır olduqdan sonra əsas prosesdə async köməkçi bir görünüşü konfiqurasiya edə bilər:
const routeSession = session.fromPartition(partitionName);
await routeSession.setProxy({
mode: 'fixed_servers',
proxyRules: `http://${proxyHost}:${proxyPort}`,
});
const view = new WebContentsView({
webPreferences: { session: routeSession },
});
view.webContents.on('login', (event, details, authInfo, callback) => {
if (!authInfo.isProxy
|| authInfo.scheme.toLowerCase() !== 'basic'
|| authInfo.host !== proxyHost
|| authInfo.port !== proxyPort) return;
event.preventDefault();
if (details.firstAuthAttempt) callback(proxyUser, proxyPassword);
else callback();
});
Hər təcrid olunmuş hesab üçün fərqli partitionName təqdim edin və dinləyici dəyişənlərini həmin görünüşün öz closure-unda saxlayın. persist: olmayan ad yaddaşdaxili sessiya yaradır. Eyni bölmənin təkrar istifadəsi onun sessiya vəziyyətini bilərəkdən təkrar istifadə edir.
Görünüşü mövcud pəncərəyə əlavə edin və yalnız proxy və handler hazır olduqdan sonra naviqasiya edin. Kod cari login hadisə müqaviləsini, o cümlədən firstAuthAttempt-i hədəfləyir və rədd edilmiş təkrar cəhdi eyni hesabı sonsuz yenidən göndərmək əvəzinə ləğv edir.
Handler çağırışın nəzərdə tutulan Basic HTTP proxydən gəldiyini yoxlayır. Veb saytın girişi bu etimadnamələr üçün uyğun deyil.
Proxy qaydaları son nöqtəni seçir; login hesabı təqdim edir. PAC faylları və əl ilə proxy qaydaları bu callback-in parolunu özləri daşımır.
Bu HTTP proxy autentifikasiyasıdır. Chromium-a SOCKS5 autentifikasiyası əlavə etmir. Mövcud sessiya bağlantıları da sonradan marşrut dəyişdirildikdə normal həyat dövrü idarəetməsini tələb edir.