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: ছাড়া নাম একটি ইন-মেমরি সেশন তৈরি করে। একই পার্টিশন পুনরায় ব্যবহার করলে এর সেশন অবস্থা ইচ্ছাকৃতভাবে পুনরায় ব্যবহৃত হয়।
ভিউটি বিদ্যমান উইন্ডোতে সংযুক্ত করুন এবং এর প্রক্সি ও হ্যান্ডলার প্রস্তুত হওয়ার পরেই নেভিগেট করুন। কোডটি বর্তমান login ইভেন্ট চুক্তিকে লক্ষ্য করে, firstAuthAttempt সহ, এবং প্রত্যাখ্যাত পুনরাবৃত্তি অনির্দিষ্টকালের জন্য একই অ্যাকাউন্ট পুনরায় পাঠানোর বদলে বাতিল করে।
হ্যান্ডলার যাচাই করে যে চ্যালেঞ্জটি উদ্দিষ্ট Basic HTTP প্রক্সি থেকে এসেছে। ওয়েবসাইটে লগইন এই তথ্যের জন্য যোগ্য নয়।
প্রক্সি নিয়ম endpoint বেছে নেয়; login অ্যাকাউন্ট সরবরাহ করে। PAC ফাইল এবং ম্যানুয়াল প্রক্সি নিয়ম নিজেরাই এই callback-এর পাসওয়ার্ড বহন করে না।
এটি HTTP প্রক্সি প্রমাণীকরণ। এটি Chromium-এ SOCKS5 প্রমাণীকরণ যোগ করে না। পরে রুট পরিবর্তন হলে বিদ্যমান সেশন সংযোগগুলোরও স্বাভাবিক জীবনচক্র পরিচালনা প্রয়োজন।