PAC 脚本使用 JavaScript 语法,但这并不意味着它在网页内部运行。

代理解析器提供的执行环境包含路由输入和辅助函数,它并不保证页面拥有 window、document、DOM 或 navigator.appName。因此,从页面复制来的浏览器识别代码片段,可能在代理规则返回任何结果之前就失败。

请把路由建立在受支持的信息上,例如传入的 URL 和主机名;当网络策略需要时,也可以使用文档化的辅助函数。不要从 JavaScript 引擎的偶然特性推断浏览器版本,更不要让这种推断决定出口。

如果不同的受管客户端确实需要不同策略,请通过它们的管理系统下发预期配置。Firefox 企业策略是受管 Firefox 安装的一种下发方式。这比把未文档化的浏览器检测谜题塞进共享 PAC 文件要清晰得多。

能作为普通 JavaScript 成功解析的脚本,不一定是受支持的 PAC 脚本。要检查解析器文档化的环境,而不只是语言语法。

相关文章