Electron ଦୃଶ୍ୟଗୁଡ଼ିକର ଅଲଗା HTTP ପ୍ରକ୍ସି ଖାତା ରହିପାରେ
ପ୍ରତ୍ୟେକ WebContentsView ପାଇଁ ଖାତା-ନିର୍ଦ୍ଦିଷ୍ଟ ସେସନ ସୃଷ୍ଟି କରନ୍ତୁ ଏବଂ କେବଳ ସେହି ଦୃଶ୍ୟର ମେଳ ଖାଉଥିବା Basic ପ୍ରକ୍ସି ଚ୍ୟାଲେଞ୍ଜର ଉତ୍ତର ଦିଅନ୍ତୁ।
ବର୍ତ୍ତମାନର 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 ପ୍ରମାଣୀକରଣ ଯୋଡ଼େ ନାହିଁ। ପରେ ମାର୍ଗ ବଦଳିଲେ ବିଦ୍ୟମାନ ସେସନ ସଂଯୋଗଗୁଡ଼ିକୁ ମଧ୍ୟ ସେମାନଙ୍କର ସାଧାରଣ ଜୀବନଚକ୍ର ପରିଚାଳନା ଆବଶ୍ୟକ।