વર્તમાન 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 પ્રમાણીકરણ ઉમેરતું નથી. પછીથી રૂટ બદલાય ત્યારે હાલના સેશન જોડાણોને પણ તેમની સામાન્ય જીવનચક્ર સંભાળની જરૂર પડે છે.

સંબંધિત લેખો