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 аутентификациясын қоспайды. Бар сессия қосылымдары да кейін маршрут өзгергенде әдеттегі өмірлік цикл өңдеуін қажет етеді.