Pac 自动代理配置
,
by MetroWind
今天在网上乱逛,不小心看到一个自动代理配置脚本(就是传说中的 pac 文件),发现语法怎么就和 Java 那么像呢~~?Google 一番之后发现其实 pac 就是一个 Javascript 函数,名叫 FindProxyForURL
。它接收两个参数,url
和 host
,都是字符串。url
是浏览器将要进入的地址,host
就是地址中 ://
和第一个 /
之间的部分。返回值为一个字符串,有三种情况:
- 直接连接,不经过代理,返回
"DIRECT"
- 经过代理,返回
"PROXY
host:port"
- 经过 socks 服务器,返回
"SOCKS
host:port"
有了这些规则,我们就可以随意加入逻辑,一劳永逸地解决是否使用代理,何时使用代理,使用什么代理等一系列重大问题。比如,我要对 blogspot 使用 72.14.219.190,其他某些倒霉的地址使用 Tor,剩下的碌碌无为的地址不使用代理,就可以用下面这个 pac。
:::Javascript
function FindProxyForURL(url, host)
{
url = url.toLowerCase();
host = host.toLowerCase();
if(dnsDomainIs(host, ".blogspot.com"))
return "PROXY 72.14.219.190:80";
if(dnsDomainIs(host, ".wikipedia.org") ||
dnsDomainIs(host, ".technorati.com")
)
return "SOCKS 127.0.0.1:9050";
return "DIRECT";
}
Reference: http://wp.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html#dnsDomainIs。Netscape 真是有长者风范啊~~