मौजूदा Electron ऐप्स में, खाता-विशिष्ट प्रत्येक WebContentsView को उसका अपना नामित सत्र दें। ऐप तैयार होने के बाद, मुख्य प्रक्रिया में एक async सहायक एक व्यू को कॉन्फ़िगर कर सकता है:

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 प्रॉक्सी प्रमाणीकरण है। यह Chromium में SOCKS5 प्रमाणीकरण नहीं जोड़ता। बाद में मार्ग बदलने पर मौजूदा सत्र कनेक्शनों को भी उनका सामान्य जीवनचक्र प्रबंधन चाहिए।

संबंधित लेख