Pogledi Electron imajo lahko ločene račune HTTP proxy
Ustvarite sejo, specifično za račun, za vsak WebContentsView in odgovorite le na ustrezni izziv Basic proxy tega pogleda.
V trenutnih aplikacijah Electron dajte vsakemu WebContentsView, povezanemu z računom, lastno poimenovano sejo. Ko je aplikacija pripravljena, lahko asinhroni pomočnik v glavnem procesu nastavi en pogled:
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();
});
Za vsak izoliran račun zagotovite ločen partitionName in hranite spremenljivke poslušalca v zaprtju tega pogleda. Ime brez persist: ustvari sejo v pomnilniku. Ponovna uporaba iste particije namerno znova uporabi njeno stanje seje.
Pogled pritrdite na obstoječe okno in krmarite šele, ko sta njegov proxy in upravljalnik pripravljena. Koda cilja na trenutno pogodbo dogodka login, vključno s firstAuthAttempt, in prekliče zavrnjen ponovljen poskus, namesto da bi isto račun znova pošiljala v nedogled.
Upravljalnik preveri, da izziv prihaja iz predvidenega Basic HTTP proxyja. Prijava na spletno mesto ni primerna za te podatke.
Pravila proxy izberejo končno točko; login zagotovi račun. Datoteke PAC in ročna pravila proxy sama ne nosijo gesla tega callbacka.
To je preverjanje pristnosti proxyja HTTP. Chromiumu ne doda preverjanja pristnosti SOCKS5. Obstoječe sejne povezave prav tako potrebujejo običajno upravljanje življenjskega cikla, ko se pot pozneje spremeni.