[ 原创] Proxy auto-config 的用法—— 系统与软件版网络技术周活动之二 ...
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 编辑 ]
ProxyService (chrome://net-internals/proxyservice)
Current configuration (chrome://net-internals/proxyservice.config)
Automatic settings:
  Auto-detect: No
  Custom PAC script: file://localhost/Users/Ran/Documents/proxy.pac
Manual settings:
  Proxy server: [None]
  Bypass list:
    *.local
    169.254/16
  Bypass local names: No
Last initialized load log (chrome://net-internals/proxyservice.init_log)
t=1147557507: +INIT_PROXY_RESOLVER                      [dt=121]
t=1147557507:   +INIT_PROXY_RESOLVER_FETCH_PAC_SCRIPT   [dt=104]
t=1147557507:      "file://localhost/Users/Ran/Documents/proxy.pac"
t=1147557612:      "Completed fetch with result net::OK. Received 478 bytes"
t=1147557612:   -INIT_PROXY_RESOLVER_FETCH_PAC_SCRIPT
t=1147557612:   +INIT_PROXY_RESOLVER_SET_PAC_SCRIPT     [dt= 16]
t=1147557629:      "Failed initializing the PAC script with error: net::ERR_PAC_SCRIPT_FAILED"
t=1147557629:   -INIT_PROXY_RESOLVER_SET_PAC_SCRIPT
t=1147557629: -INIT_PROXY_RESOLVER
Bad Proxies (chrome://net-internals/proxyservice.bad_proxies)
TODO
郑重声明:资讯 【[ 原创] Proxy auto-config 的用法—— 系统与软件版网络技术周活动之二 ...】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——