U aktualnim Electron aplikacijama svakom WebContentsView-u vezanom uz račun dajte vlastitu imenovanu sesiju. Nakon što aplikacija bude spremna, asinkroni pomoćnik u glavnom procesu može konfigurirati 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();
});

Osigurajte zaseban partitionName za svaki izolirani račun i držite varijable slušatelja u closure-u tog prikaza. Naziv bez persist: stvara sesiju u memoriji. Ponovno korištenje iste particije namjerno ponovno koristi njezino stanje sesije.

Pričvrstite prikaz na postojeći prozor i navigirajte tek kad su njegov proxy i rukovatelj spremni. Kôd cilja trenutni ugovor login događaja, uključujući firstAuthAttempt, i otkazuje odbijeni ponovljeni pokušaj umjesto da beskonačno ponovno šalje isti račun.

Rukovatelj provjerava da izazov dolazi od predviđenog Basic HTTP proxyja. Prijava na web-lokalitet nije prihvatljiva za te podatke.

Proxy pravila biraju krajnju točku; login dostavlja račun. PAC datoteke i ručna proxy pravila sama ne nose lozinku ovog callbacka.

Ovo je HTTP proxy autentifikacija. Ne dodaje SOCKS5 autentifikaciju u Chromium. Postojeće sesijske veze također trebaju uobičajeno upravljanje životnim ciklusom kad se ruta kasnije promijeni.

Povezani članci