Electron prikazi mogu imati odvojene HTTP proxy račune
Kreirajte sesiju specifičnu za račun za svaki WebContentsView i odgovarajte samo na odgovarajući Basic proxy izazov tog prikaza.
U aktuelnim Electron aplikacijama svakom WebContentsView-u vezanom za račun dajte vlastitu imenovanu sesiju. Nakon što aplikacija bude spremna, asinhroni pomoćnik u glavnom procesu može konfigurisati jedan prikaz:
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();
});
Dostavite poseban partitionName za svaki izolovani račun i držite varijable osluškivača u closure-u tog prikaza. Ime bez persist: stvara sesiju u memoriji. Ponovno korišćenje iste particije namerno ponovno koristi njeno stanje sesije.
Pričvrstite prikaz na postojeći prozor i navigirajte tek kada njegov proxy i rukovalac budu spremni. Kod cilja trenutni ugovor login događaja, uključujući firstAuthAttempt, i otkazuje odbijeni ponovljeni pokušaj umesto da beskonačno ponovo šalje isti račun.
Rukovalac proverava da izazov dolazi od predviđenog Basic HTTP proxyja. Prijava na veb-lokaciju nije prihvatljiva za te podatke.
Proxy pravila biraju krajnju tačku; login dostavlja račun. PAC datoteke i ručna proxy pravila sama ne nose lozinku ovog callback-a.
Ovo je HTTP proxy autentifikacija. Ona ne dodaje SOCKS5 autentifikaciju u Chromium. Postojeće sesijske veze takođe trebaju uobičajeno upravljanje životnim ciklusom kada se ruta kasnije promeni.