მიმდინარე 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 პროქსის ავთენტიფიკაცია. ის არ ამატებს SOCKS5 ავთენტიფიკაციას Chromium-ში. არსებულ სესიის კავშირებს ასევე სჭირდებათ ჩვეულებრივი სასიცოცხლო ციკლის მართვა, როცა მარშრუტი მოგვიანებით შეიცვლება.

დაკავშირებული სტატიები