Що повертає resolveProxy у Electron
Дочекайтеся рішення, специфічного для URL, з фактичної сесії вікна та відрізняйте повернутий рядок у стилі PAC від встановленого з'єднання.
В асинхронній функції головного процесу з наявним вікном запитайте сесію, яку це вікно справді використовує:
const selectedSession = mainWindow.webContents.session;
const route = await selectedSession.resolveProxy('https://api.example/');
Поточний API повертає Promise, що розв'язується в рядок. Дочекайтеся завершення очікуваної операції setProxy, перш ніж перевіряти зміну конфігурації.
Результат — це рішення про проксі, специфічне для URL. Гіпотетичне значення може бути таким:
PROXY proxy-a.example:8080; PROXY proxy-b.example:8080; DIRECT
Це упорядкований список кандидатів у синтаксисі стилю PAC, а не одне ім'я хоста. DIRECT явно позначає прямого кандидата. Обробляйте порожній результат окремо; не вважайте мовчки кожен порожній або нерозпізнаний рядок значенням DIRECT.
Запитуйте фактичний цільовий URL, бо рішення PAC і обходу можуть відрізнятися залежно від призначення. Так само вікно з розділеною сесією не обов'язково має ту саму політику, що й session.defaultSession.
Розв'язання проксі може включати роботу автоматичної конфігурації, наприклад отримання скрипту PAC. Повернутий вибір усе одно не є завершеним запитом до цільового сайту, успішним входом у проксі або доказом його публічної вихідної IP-адреси. Зберігайте сесію, URL і розв'язаних кандидатів, порівнюючи їх із результатом наступного запиту.