有没有通过URL链proxy.pac文件?

我们的几台笔记本电脑需要在我们自己的和基于客户的networking上运行。 这通常涉及切换代理设置,我们通过一个自定义的proxy.pac文件(首先是在这里的一些帮助后)做了。 现在,我们使用的其中一个networking有自己的proxy.pac,我们必须使用这意味着,目前,我们必须手动更改我们的proxy.pac位置为该networking。

那么,有没有办法编写一个proxy.pac,使其在某些情况下可以遵循另一个proxy.pac?

不,不在静态的.pac文件中。 问题是,当第二个文件被加载时,你会最终重新定义FindProxyForURL()函数,这将引发JavaScript解释器。

您需要开发一个dynamic页面(ASP,PHP等)来实现所需的逻辑,然后根据决定,读入所需的.pac文件的内容并将其提供给客户端。 我曾经这样做,以build立在代理之间的一些dynamic负载平衡,我在不同的物理位置,它适合我。

如果你select走这条路线,确保你写的脚本设置返回MIMEtypes为application / x-ns-proxy-autoconfig或application / x-javascript-config,否则你的浏览器不能识别它为pac文件。

IE浏览器因为没有一个简单快捷的方式来closures代理服务器而恼火之后,这个问题启发了我用PHP编写这个PAC文件。

它决定了是否从内部(在这种情况下,使用代理服务器)或外部的文件的请求:直接。 也许有人可以根据自己的需要进行调整。

<?php $proxy = "192.168.0.x"; $port = "8080"; header ("Content-type: application/x-ns-proxy-autoconfig"); header ("Date: " . gmdate('D, d MYH:i:s \G\M\T', time ())); header ("Last-Modified: " . gmdate('D, d MYH:i:s \G\M\T', time ())); header ("Expires: " . gmdate('D, d MYH:i:s \G\M\T', time () + 60 * 30)); echo "// Request from: " . $_SERVER ['REMOTE_ADDR'] . "\n"; if (substr ($_SERVER ['REMOTE_ADDR'], 0, 8) == "192.168.") { ?> // We're inside the firewall var external = false; <?php } else { ?> // We're outside the firewall var external = true; <?php } ?> // Default connection var direct = "DIRECT"; // Alternate Proxy Server var proxy = "PROXY <?php echo $proxy; ?>:<?php echo $port; ?>"; // // Proxy Logic // function FindProxyForURL(url, host) { if (external || isPlainHostName(host) || shExpMatch(host, "192.168.*") || (dnsDomainIs(host, ".example.com")) && !localHostOrDomainIs(host, "www.example.com") || dnsDomainIs (host, ".example2.com")) { return direct; } else { return proxy; } } 

我现在已经调整了我的组策略设置,以便所有的浏览器都将指向位于防火墙内的networking服务器上的这个文件。 现在,如果笔记本电脑离开,他们的代理文件将自动改变,而不需要重新configuration浏览器的代理设置。

编辑:更新以匹配本地IP地址主机也…