Ընթացիկ 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-ին։ Գոյություն ունեցող սեսիայի միացումները նույնպես կարիք ունեն իրենց սովորական կյանքի ցիկլի կառավարմանը, երբ երթուղին ավելի ուշ փոխվի։

Առնչվող հոդվածներ