ទិដ្ឋភាព 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។ វាមិនបន្ថែមការផ្ទៀងផ្ទាត់ SOCKS5 ទៅ Chromium ទេ។ ការតភ្ជាប់សម័យដែលមានស្រាប់ក៏ត្រូវការការគ្រប់គ្រងវដ្ដជីវិតធម្មតារបស់ពួកវាដែរ នៅពេលផ្លូវប្ដូរនៅពេលក្រោយ។