Electron прикази могу имати одвојене HTTP прокси налоге
Направите сесију специфичну за налог за сваки WebContentsView и одговарајте само на одговарајући Basic прокси изазов тог приказа.
У актуелним Electron апликацијама дајте сваком WebContentsView-у везаном за налог сопствену именовану сесију. Када апликација буде спремна, асинхрони помоћник у главном процесу може конфигурисати један приказ:
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();
});
Обезбедите посебан partitionName за сваки изоловани налог и држите променљиве слушаоца у closure-у тог приказа. Име без persist: ствара сесију у меморији. Поновно коришћење исте партиције намерно поново користи њено стање сесије.
Причврстите приказ на постојећи прозор и навигирајте тек када његов прокси и руковалац буду спремни. Код циља тренутни уговор login догађаја, укључујући firstAuthAttempt, и отказује одбијени поновљени покушај уместо да бесконачно поново шаље исти налог.
Руковалац проверава да изазов долази од предвиђеног Basic HTTP проксија. Пријава на веб-локацију није прихватљива за те податке.
Прокси правила бирају крајњу тачку; login доставља налог. PAC датотеке и ручна прокси правила сама не носе лозинку овог callback-а.
Ово је HTTP прокси аутентификација. Она не додаје SOCKS5 аутентификацију у Chromium. Постојеће сесијске везе такође требају уобичајено управљање животним циклусом када се рута касније промени.