我们的几台笔记本电脑需要在我们自己的网络和基于客户的网络上运行。这通常涉及切换代理设置,我们最初是通过自定义 proxy.pac 文件进行的(在您的帮助之后)。现在,我们使用的其中一个网络有自己的 proxy.pac,我们必须使用它,这意味着目前,我们必须手动更改该网络的 proxy.pac 位置。
那么,有没有办法编写一个proxy.pac,使其在某些情况下服从另一个proxy.pac?
我们的几台笔记本电脑需要在我们自己的网络和基于客户的网络上运行。这通常涉及切换代理设置,我们最初是通过自定义 proxy.pac 文件进行的(在您的帮助之后)。现在,我们使用的其中一个网络有自己的 proxy.pac,我们必须使用它,这意味着目前,我们必须手动更改该网络的 proxy.pac 位置。
那么,有没有办法编写一个proxy.pac,使其在某些情况下服从另一个proxy.pac?
不,不在静态 .pac 文件中。问题是您最终会在加载第二个文件时重新定义 FindProxyForURL() 函数,这会触发 javascript 解释器。
您需要开发一个动态页面(ASP、PHP 等)来实现所需的逻辑,然后根据决定,读入所需 .pac 文件的内容并将其返回给客户端。我曾经这样做是为了在不同物理位置的代理之间建立一些动态负载平衡,这对我来说效果很好。
如果您选择走这条路,请确保您编写的脚本将返回 mime 类型设置为 application/x-ns-proxy-autoconfig 或 application/x-javascript-config,否则您的浏览器不会将其识别为 pac 文件.
在对 IE 没有快速简便的方法来关闭代理设置感到恼火之后,这个问题启发了我用 PHP 编写这个 PAC 文件。
它确定文件请求是来自内部(在这种情况下,使用代理服务器)还是外部:直接。也许有人可以根据自己的需要进行调整。
我现在调整了我的组策略设置,以便所有浏览器都指向位于防火墙内的网络服务器上的这个文件。现在,如果笔记本电脑离开现场,它们的代理文件将自动更改,而无需重新配置浏览器的代理设置。
编辑:更新以匹配本地 IP 地址主机也...
您也许可以使用WPAD(网络代理自动发现)在不同的网络中分发不同的 proxy.pac 文件。
但是您需要在每个网络中都有一个简单的网络服务器,并且dhcp 提供的搜索域在每个网络中必须不同。如果每个网络服务器在 URL http://wpad[.dhcp-search-domain.com]/wpad.dat下托管不同的 proxy.pac 文件,那么您需要做的就是在浏览器的代理设置中设置“自动发现”并在每次在网络之间切换时重新启动浏览器。
如果你真的很幸运,你的客户已经有了一个有效的代理自动发现,而你只是错过了它,因为你的静态 proxy.pac 配置......