Güncel Electron uygulamalarında, hesaba bağlı her WebContentsView'a kendi adlandırılmış oturumunu verin. Uygulama hazır olduktan sonra ana süreçteki async bir yardımcı tek bir görünümü yapılandırabilir:

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();
});

Yalıtılmış her hesap için ayrı bir partitionName sağlayın ve dinleyici değişkenlerini o görünümün kendi closure'ında tutun. persist: içermeyen bir ad bellekte oturum oluşturur. Aynı bölümün yeniden kullanılması, oturum durumunu bilinçli olarak yeniden kullanır.

Görünümü mevcut pencereye ekleyin ve yalnızca proxy ile işleyicisi hazır olduktan sonra gezin. Kod, firstAuthAttempt dahil geçerli login olay sözleşmesini hedefler ve reddedilen tekrarlanan denemeyi aynı hesabı sonsuza dek yeniden göndermek yerine iptal eder.

İşleyici, sorgunun amaçlanan Basic HTTP proxy'sinden geldiğini doğrular. Bir web sitesinin oturum açması bu kimlik bilgileri için uygun değildir.

Proxy kuralları uç noktayı seçer; login hesabı sağlar. PAC dosyaları ve elle proxy kuralları bu callback'in parolasını kendileri taşımaz.

Bu HTTP proxy kimlik doğrulamasıdır. Chromium'a SOCKS5 kimlik doğrulaması eklemez. Mevcut oturum bağlantıları da rota daha sonra değiştirildiğinde olağan yaşam döngüsü işlemlerine ihtiyaç duyar.

İlgili makaleler