ਮੌਜੂਦਾ 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: ਤੋਂ ਬਿਨਾਂ ਨਾਮ ਇਨ-ਮੈਮੋਰੀ ਸੈਸ਼ਨ ਬਣਾਉਂਦਾ ਹੈ। ਉਸੇ ਪਾਰਟੀਸ਼ਨ ਦਾ ਦੁਬਾਰਾ ਉਪਯੋਗ ਇਸਦੀ ਸੈਸ਼ਨ ਸਥਿਤੀ ਦਾ ਜਾਣ-ਬੁੱਝ ਕੇ ਦੁਬਾਰਾ ਉਪਯੋਗ ਕਰਦਾ ਹੈ।

ਵਿਊ ਨੂੰ ਮੌਜੂਦਾ ਵਿੰਡੋ ਨਾਲ ਜੋੜੋ ਅਤੇ ਇਸਦੇ ਪ੍ਰੌਕਸੀ ਅਤੇ ਹੈਂਡਲਰ ਤਿਆਰ ਹੋਣ ਤੋਂ ਬਾਅਦ ਹੀ ਨੈਵੀਗੇਟ ਕਰੋ। ਕੋਡ firstAuthAttempt ਸਮੇਤ ਮੌਜੂਦਾ login ਇਵੈਂਟ ਸਮਝੌਤੇ ਨੂੰ ਟਾਰਗੇਟ ਕਰਦਾ ਹੈ ਅਤੇ ਰੱਦ ਕੀਤੀ ਦੁਹਰਾਈ ਕੋਸ਼ਿਸ਼ ਨੂੰ ਉਸੇ ਖਾਤੇ ਨੂੰ ਬੇਅੰਤ ਦੁਬਾਰਾ ਭੇਜਣ ਦੀ ਬਜਾਏ ਰੱਦ ਕਰਦਾ ਹੈ।

ਹੈਂਡਲਰ ਜਾਂਚਦਾ ਹੈ ਕਿ ਚੁਣੌਤੀ ਲੋੜੀਂਦੇ Basic HTTP ਪ੍ਰੌਕਸੀ ਤੋਂ ਆਈ ਹੈ। ਵੈੱਬਸਾਈਟ ਦਾ ਲੌਗਇਨ ਇਹਨਾਂ ਪ੍ਰਮਾਣ-ਪੱਤਰਾਂ ਲਈ ਯੋਗ ਨਹੀਂ ਹੈ।

ਪ੍ਰੌਕਸੀ ਨਿਯਮ endpoint ਚੁਣਦੇ ਹਨ; login ਖਾਤਾ ਦਿੰਦਾ ਹੈ। PAC ਫਾਈਲਾਂ ਅਤੇ ਮੈਨੂਅਲ ਪ੍ਰੌਕਸੀ ਨਿਯਮ ਆਪਣੇ ਆਪ ਇਸ callback ਦਾ ਪਾਸਵਰਡ ਨਹੀਂ ਰੱਖਦੇ।

ਇਹ HTTP ਪ੍ਰੌਕਸੀ ਪ੍ਰਮਾਣਿਕਤਾ ਹੈ। ਇਹ Chromium ਵਿੱਚ SOCKS5 ਪ੍ਰਮਾਣਿਕਤਾ ਨਹੀਂ ਜੋੜਦੀ। ਬਾਅਦ ਵਿੱਚ ਰੂਟ ਬਦਲਣ 'ਤੇ ਮੌਜੂਦਾ ਸੈਸ਼ਨ ਕਨੈਕਸ਼ਨਾਂ ਨੂੰ ਵੀ ਉਹਨਾਂ ਦਾ ਆਮ ਜੀਵਨ-ਚੱਕਰ ਪ੍ਰਬੰਧਨ ਚਾਹੀਦਾ ਹੈ।

ਸੰਬੰਧਿਤ ਲੇਖ