Les vistes d'Electron poden tenir comptes de proxy HTTP separats
Creeu una sessió específica del compte per a cada WebContentsView i responeu només al desafiament Basic del proxy corresponent a aquesta vista.
A les aplicacions Electron actuals, doneu a cada WebContentsView associat a un compte la seva pròpia sessió amb nom. Quan l'aplicació estigui a punt, un assistent asíncron al procés principal pot configurar una vista:
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();
});
Proporcioneu un partitionName diferent per a cada compte aïllat i manteniu les variables de l'oient al closure d'aquesta vista. Un nom sense persist: crea una sessió en memòria. Reutilitzar la mateixa partició reutilitza deliberadament el seu estat de sessió.
Adjunteu la vista a la finestra existent i navegueu només quan el seu proxy i el gestor estiguin a punt. El codi s'ajusta al contracte actual de l'esdeveniment login, inclòs firstAuthAttempt, i cancel·la un intent repetit rebutjat en lloc de reenviar el mateix compte indefinidament.
El gestor comprova que el desafiament provingui del proxy Basic HTTP previst. L'inici de sessió d'un lloc web no és apte per a aquestes credencials.
Les regles de proxy seleccionen el punt final; login proporciona el compte. Els fitxers PAC i les regles de proxy manuals no porten per si mateixos la contrasenya d'aquest callback.
Això és autenticació de proxy HTTP. No afegeix autenticació SOCKS5 a Chromium. Les connexions de sessió existents també necessiten el seu maneig habitual del cicle de vida quan es canvia una ruta més endavant.