В асинхронной функции главного процесса с существующим окном запросите сессию, которую это окно действительно использует:

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 и разрешённых кандидатов при сравнении их с результатом последующего запроса.

Похожие статьи