在已有窗口的异步主进程函数中,查询该窗口实际使用的会话:

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 与解析出的候选与之后请求的结果对照时,请保留这些信息。

相关文章