Pohledy Electron mohou mít samostatné účty HTTP proxy
Vytvořte relaci specifickou pro účet pro každý WebContentsView a odpovídejte pouze na odpovídající výzvu Basic proxy daného pohledu.
V současných aplikacích Electron dejte každému WebContentsView svázanému s účtem vlastní pojmenovanou relaci. Po připravenosti aplikace může asynchronní pomocník v hlavním procesu nakonfigurovat jeden pohled:
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();
});
Pro každý izolovaný účet poskytněte odlišný partitionName a proměnné posluchače uchovejte v closure daného pohledu. Název bez persist: vytváří relaci v paměti. Opětovné použití stejného oddílu záměrně znovu používá jeho stav relace.
Připojte pohled k existujícímu oknu a navigujte teprve poté, co je jeho proxy a obslužná rutina připravena. Kód cílí na současnou smlouvu události login včetně firstAuthAttempt a odmítnutý opakovaný pokus zruší, místo aby stejný účet donekonečna znovu odesílal.
Obslužná rutina ověřuje, že výzva pochází od zamýšlené Basic HTTP proxy. Přihlášení na webovou stránku pro tyto údaje neplatí.
Pravidla proxy vybírají koncový bod; login dodává účet. Soubory PAC a ruční pravidla proxy samy nenesou heslo tohoto callbacku.
Jde o autentizaci HTTP proxy. Nepřidává do Chromium autentizaci SOCKS5. Stávající relace také potřebují obvyklé řízení životního cyklu, když se později změní trasa.