Firefox 中的本地 .pac 文件

Firefox 中的本地 .pac 文件

我在 Windows 上使用 Firefox,需要一些特殊的代理配置,因为我所在的网络必须通过代理才能访问某些网站。有些网站无法通过代理服务器访问,大多数公共网站都可以访问,尽管性能会很差。

因此,我需要与通常的“直接连接到 X、Y 和 Z,对所有其他使用代理”相反的操作——我需要的是“对 X、Y 和 Z 使用代理,直接连接到所有其他”。

为此,我创建了一个包含所需规则的 .pac 文件。在 Firefox 的代理配置中,我已将该文件的 URL 输入为代理自动配置 URL。路径如下所示:file:///c:/Users/myself/Application%20Data/proxy.pac

当我尝试时,我可以浏览互联网但无法连接到需要通过代理服务器的网站。

我尝试删除file:///前缀,但结果相同。

如果我将前缀更改为file://,Firefox 将添加缺失的斜线。如果我%20用空格字符替换,Firefox 将再次对其进行转义。URL 的“重新加载”按钮可用(如果我将 URL 更改为指向不存在的文件,则该按钮会变灰)。因此,Firefox 显然可以找到该文件,但没有达到预期的效果。

这里出了什么问题,或者我该如何尝试找出为什么它不起作用?

答案1

知道了。

从 Firefox 57.0.2 开始,文件 URL 似乎不再是问题。

检查我的 PAC 文件时,我发现了一个语法错误(表达式中缺少右括号)。修复该错误并重新加载 PAC 文件(使用file:///URL 版本)后,它似乎可以正常工作。我现在可以访问需要代理的网站。

我还没弄清楚 Firefox 是否在某处记录了错误消息——我偶然发现了语法错误。

答案2

假设您的 PAC 编写正确,那么它无法与 PAC 中的特定站点协同工作的原因是 Firefox 没有解析它。

[更新]原始答案错误地断言 PAC 文件的路径不起作用。虽然对于旧版本的 Firefox 来说这可能是正确的,但现在这是不正确的。

一个可能的解决方案是在您的计算机上运行一个非常小的 Web 服务器并使用它托管 pac 文件。此主题Stack Overflow 似乎建议猫鼬

如果您这样做,那么您可以将 Firefox 中的 URL 设置为http://127.0.0.1/proxy.pac,它应该可以正常加载。

答案3

在Windows平台下,本地驱动器中的代理文件应输入为:

"file:///c|/Users/myself/Application%20Data/proxy.pac"

将“:”替换为管道“|”

答案4

由于我花了几个小时处理类似的问题,因此这是我的一条建议。

proxy.pac可以使用 URL 在 Windows 下的 Firefox 中加载本地文件file:///c:/Users/myself/Application%20Data/proxy.pac

一些提示:

  • 检查 URL 是否在浏览器中有效
  • proxy.pac使用警报语句进行调试
  • proxy.pac每次更改时都不要忘记重新加载

带有调试语句的 proxy.pac 示例

// setup tunneled connection to proxy_host
// ssh -D 9981 user@proxy_host

// hosts *.localdomain are only known to (and reachable from) proxy_host
function FindProxyForURL(url, host) {
if (shExpMatch(host,"*.localdomain")) {
    alert("applying localdomain rule");
    return "SOCKS5 localhost:9981;";
 }  
 
 // Everything else
 alert("DIRECT connection");
 return "DIRECT";
}

alert()中的陈述代理服务器用于调试目的,其输出可以在浏览器控制台(那是不是Web 开发人员控制台!——另请参阅使用 alert() 调试自动代理(PAC)javascript?)。

相关内容