我在 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
答案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?)。