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 проксиден келгенин текшерет. Веб-сайтка кирүү бул дайындарга жарактуу эмес.
Прокси эрежелери акыркы чекитти тандайт; login эсепти берет. PAC файлдары жана кол менен жасалган прокси эрежелери бул callback'тин сырсөзүн өздөрү алып жүрбөйт.
Бул HTTP прокси аутентификациясы. Ал Chromium'го SOCKS5 аутентификациясын кошпойт. Учурдагы сессия байланыштары да кийинчерээк маршрут өзгөргөндө адаттагы жашоо циклин башкарууну талап кылат.