说到代理服务器Proxy Server,必然会需要如何配制代理服务器(Proxy config), 配制可以是手动的,自然,此处手动配置不是重点,我们更多的聚焦在配制的自动化(Proxy Auto-config/PAC)。
PAC
PAC的核心是个FindProxyForURL的js函数,
function FindProxyForURL(url, host) {
// …
}
返回值为以下几种:
DIRECT
直连,无需任何代理
PROXY host:port
使用指定代理,
SOCKS host:port
使用指定的SOCK5代理服务器
HTTP host:port
指定使用HTTP代理
HTTPS host:port
使用指定的HTTPS代理
SOCKS4 host:port, SOCKS5 host:port
AutoProxy
AutoProxy的语法与PAC是不一样的,AutoProxy是衍生于ADP,它本身也其实可以看做是ADP的一个子集,
ADP定义了完整的网址规则,而用作代理设置的时候,大部份只需要关注其中的domain部份,具体的说,只需要使用到以下几条简单的
- "!"感叹号开头的是注释。
- 关键词example.com,只用于http网址的匹配,不参与匹配https协议的匹配
- 匹配:http://www.example.com/foo 和 http://www.google.com/search?q=www.example.com。
- 不匹配 https://www.example.com/
- 匹配域名"||",比如:||example.com/banner.gif
- 匹配:
- http://example.com
- https://example.com/banner.gif
- http://www.example.com/banner.gif
- 不匹配:
- http://badexample.com/banner.gif
- http://gooddomain.example/analyze?http://example.com/banner.gif+
- 匹配:
- 匹配URL前缀"|":
- |http://www.google.com , 这个规则匹配http://www.google.com,但是不匹配https://www.google.com
- 定义例外"@@",事实上,autoproxy中定义例外意味着这不需要使用proxy,直接把例外去掉既可,探讨价值大过实战价值:
- 'adv'匹配http://example.com/advice.html,但是不希望匹配http://example.com/advice.html,那么可以定义一个例外"@@advice"。
利用autoproxy,如果配合gfwlist,以及SwitchyOmega可以完美而自由的驰骋于网络。
参考资料: