Pohľady Electron môžu mať samostatné účty HTTP proxy
Vytvorte reláciu špecifickú pre účet pre každý WebContentsView a odpovedajte iba na zodpovedajúcu výzvu Basic proxy daného pohľadu.
V súčasných aplikáciách Electron dajte každému WebContentsView prepojenému s účtom vlastnú pomenovanú reláciu. Keď je aplikácia pripravená, asynchrónny pomocník v hlavnom procese môže nakonfigurovať jeden pohľad:
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();
});
Pre každý izolovaný účet poskytnite samostatný partitionName a premenné poslucháča držte v uzávere daného pohľadu. Názov bez persist: vytvára reláciu v pamäti. Opätovné použitie toho istého oddielu zámerne znovu používa jeho stav relácie.
Pripojte pohľad k existujúcemu oknu a navigujte až po tom, čo je jeho proxy a obsluha pripravená. Kód cieli na súčasnú zmluvu udalosti login vrátane firstAuthAttempt a odmietnutý opakovaný pokus zruší namiesto toho, aby ten istý účet donekonečna odosielal znova.
Obsluha overuje, že výzva pochádza zo zamýšľanej Basic HTTP proxy. Prihlásenie na webovú stránku pre tieto údaje neplatí.
Pravidlá proxy vyberajú koncový bod; login dodáva účet. Súbory PAC a manuálne pravidlá proxy samy nenesú heslo tohto callbacku.
Ide o autentifikáciu HTTP proxy. Nepridáva do Chromium autentifikáciu SOCKS5. Existujúce relácie tiež potrebujú obvyklú správu životného cyklu, keď sa trasa neskôr zmení.