现在的位置: 首页 > 综合 > 正文

[Proxy Auto Config]GoogleWebAccelerator用的Proxy.pac代理原理介绍

2011年01月04日 ⁄ 综合 ⁄ 共 2193字 ⁄ 字号 评论关闭

Proxy Auto Config



什么是 Proxy Auto Config

首先,我们一定要知道什么是 Proxy?他的功用是什么?如果还不知道,可以参照这份文件

PAC(Proxy Auto Config) 又是什么呢?它实际上是一个 Script;经由编写这个 Script,我们可以让系统判断在怎么样的情形下,要利用哪一台 Proxy 来进行联机。这样做主要的好处有:

1.      分散 Proxy 的流量,避免 Proxy Server 负载过高

2.      针对个别条件设定、加快浏览速度

3.      设定要求顺序,在某台 Proxy 无法联机时,可自动尝试别种联机方式



Proxy Auto Config File 的格式

基本上 Proxy Auto Config File(以下简称 PAC)是一个纯文字文件,他的语法采用 JavaScript;所以建议要学习编写 PAC 的人,最好先学习基本的 JavaScript。一个 PAC 档必需是单独的 JavaScript,其中不能包含任何 HTML 标签。

PAC 档中,一定要定义 Function FindProxyForURL 如下:

function FindProxyForURL( url, host )

{

      ...

}

如果使用了 PAC 档,则浏览器在接受我们要求的网址后,会去执行

ret = FindProxyForURL( url, host );

这样的指令。其中,url 是所要求网址的完整路径,host 是对方的计算机名称(就是在 :// / 之中的部份);而 return ret 则是 Proxy 的组态,它的格式有下列三种:

·  DIRECT 直接联机而不透过 Proxy

·  PROXY host:port 使用指定的 Proxy 伺服机

·  SOCKS host:port 使用指定的 Socks 伺服机

比如说当浏览器得到的是 Proxy proxy.ncu.edu.tw:3128; Proxy proxy.csie.ncu.edu.tw:3128; DIRECT 的话,那浏览器会先尝试透过 proxy.ncu.edu.tw 来开启网页,如果无法使用,则尝试 proxy.csie.ncu.edu.tw,还是不行的话,就直接联机。



PAC 中特别的 Function

PAC 中,除了可以使用一般 JavaScript Function 外,它还定义了一些特别的 Function 可以使用:

·  isPlainHostName()

·  dnsDomainIs()

·  localHostOrDomainIs()

·  isResolvable()

·  isInNet()

·  dnsResolve()

·  myIpAddress()

·  dnsDomainLevels()

·  shExpMatch()

·  weekdayRange()

·  dateRange()

·  timeRange()



isPlainHostName( host )

host 由网址取得的主机名称。

Function 会判断 host 是否为不包含网域 (Domain)。如果是,则 return true;如果包含,则 return false

范例:

1.      isPlainHostName("www") return true

2.      isPlainHostName("www.netscape.com") return false



dnsDomainIs( host, domain )

host 由网址取得的主机名称。

domain
指定的网域。

Function 会判断 host 是否属于网域 domain。如果是,则 return true;否,则 return false

范例:

1.      dnsDomainIs("www.netscape.com", ".netscape.com") return true

2.      dnsDomainIs("www", ".netscape.com") return false

3.      dnsDomainIs("www.mcom.com", ".netscape.com") return false



localHostOrDomainIs( host, hostdom )

host 由网址取得的主机名称。

hostdom
完整的网域名称。

Function 会判断 host 是否为 hostdom,或 host 是否为 hostdom 的主机名称。如果是,则 return true;否,则 return false

范例:

1.      localHostOrDomainIs("www.netscape.com", "www.netscape.com") return true (完全相同)

2.      localHostOrDomainIs("www", "www.netscape.com") return true (主机名称相同)

3.      localHostOrDomainIs("www.mcom.com", "www.netscape.com") return false (网域不同)

4.      localHostOrDomainIs("home.netscape.com", "www.netscape.com") return false (主机名称不同)



isResolvable( host )

host 由网址取得的主机名称。

Function 会尝试透过 DNS 去解析 host,如果解析成功,则 return true;否则 return false

抱歉!评论已关闭.