Proxy auto-config 的用法
(本文为原创,可任意转载,不用通知原作者)
(本文是的姐妹篇,建议同学们把两个贴子都读一下)
Proxy auto-config是什么?
顾名思义,Proxy auto-config 是代理自动配置的意思,简称PAC,可能大家最近经常能听到别人说“.pac文件”什么的,说的就是这个。
Proxy auto-config和我们有什么关系?
说实话,这东西确实不常用,如果要设置个代理,在System Preferences -> Network 里面设置不就行了吗?但是,这样的设置“不灵活”,所以我们就要跟Proxy auto-config发生点关系了,呵呵。
为什么我们要用pac文件?
为了“灵活”,这样我们就能控制一些访问要通过代理,一些访问不需要通过代理,比如这样的情况:访问办公室内网的网站不需要通过代理,而访问互联网的网站需要通过内网出口的http代理
Proxy auto-config是软件吗?在哪里下载?
它不是软件,而是操作系统或软件提供的一种功能,而对于用户来说,用到的就是一个.pac的文件,那么这个文件是什么样子的呢?下面接着说。
pac文件的样子
最简单的pac文件样子就是下面这样把上面这段代码,复制下来,存成proxy.pac,就行了。
就这么简单?
对,就是这么简单。
上面这段代码的含义是,任何访问都使用proxy.example.com:8080这个代理服务器,如果代理服务器连接失败,就不通过代理直接连接。
自动识别是否需要代理
有同学参考了另一个帖子 建立了一个自己的代理服务器,怎么写.pac文件呢?
下面就是这样的例子:和上面那段有点不一样是吗?
这段代码的含义是,任何访问先不通过代理直接访问,如果失败,那么使用127.0.0.1:1080这个SOCKS代理来访问,这个过程是自动完成的,也就是说你不会感觉到访问过程有什么不同。这就是利用pac来自动识别是否需要代理的方法。
为不同的访问指定不同的访问方式
有些情况下,直接访问的失败要经过漫长的等待(一般30s-70s不等),也就是要等待访问超时,那么我们可以在pac里面指定一些网站直接通过代理访问,来加快访问速度
例如:公司网管将“开心网” “人人网” “百度贴吧” 给禁掉了
那么我的pac要写成这样
复制内容到剪贴板
代码:
function FindProxyForURL(url,host){
if (
dnsDomainIs (host, "kaixin001.com") ||
dnsDomainIs (host, "renren.com") ||
dnsDomainIs (host, "tieba.baidu.com")
)
{
return "SOCKS 127.0.0.1:1080; DIRECT";
}
else{
return "DIRECT; SOCKS 127.0.0.1:1080";
}
}
上面的代码含义如下:
如果访问这三个域名的话,先使用代理(127.0.0.1:1080)访问,如果访问失败,再不通过代理直接访问
如果访问其他域名的话,先不通过代理直接访问,如果访问失败,再使用代理(127.0.0.1:1080)访问
那么我怎么自己添加网站呢?这样就行了, 如果是{zh1}一行dnsDomainIs的话,后面的||要删掉
那么是不是需要提前把公司网管禁掉的网站都加进去呢?不需要。
比如网管临时从公司专线的路由器上禁掉了tianya.cn,使用这个pac的时候,可以在tianya.cn访问失败的时候自动通过代理访问。
以上,pac文件搞明白了,下面就用起来
打开System Preferences -> Network -> 选择自己的网卡(比如AirPort)->右下角Advanced... -> Proxies -> 选中 Automatic Proxy Configration -> 右侧 选择刚才创建的pac文件,比如proxy.pac -> OK -> Apply
好了,pac文件就生效了
NOTICE:
修改pac文件后,需要重启safari等应用程序才能生效
技术贴真难写呀,先写到这儿吧,还有好多东西需要补充,慢慢来。
[
本帖{zh1}由 乐啤露 于 2010-1-24 14:26 编辑 ]