Proxy aut-config(PAC)配置

5230 ワード

Proxy aut-configは、PACと略称して、ブラウザがどのように自動的に適切なプロキシサーバを選択するかを定義してウェブサイトを訪問するものです。したがって、PACファイルを使って代理を定義すれば、簡単に実現できます。
[リスト]
[*]プロキシのダイナミックな切り替えを実現する(fail-over)
[*]異なるurlやip rangeに対して、異なるserverを配置し、ネットワークアクセス速度を速める。
[*]proxyに対して、負荷バランスを実現することができます。
[/リスト]
PACファイルは少なくともJavaScript関数を定義したテキストファイルです。この関数はFindProxyFor URLです。2つのパラメータがあります。urlはオブジェクトのURLです。hostはこのURLで指すホスト名です。戻り値はプロキシの構成です。

function FindProxyForURL(url, host) {
return "PROXY proxy.example.com:8080; DIRECT";
}
この関数の戻り値は、プロキシproxy.example.comの8080ポートを介してすべてのページを優先的に取得することをブラウザに教えます。このプロキシが反応していない場合、ブラウザはプロキシを使用せずに直接アクセスします。複数のプロキシ間はセミコロン(;)で区切られます。
[b]PAC関数[/b]
PAC構成は一連の内蔵関数を使用することができます。これらの関数は最初にNetscape社が出した仕様に由来します。Netscapeは技術にとって偉大な会社です。残念ながら、その商業化能力です。
[リスト]
[*]dns DomainIs
Everaluates hostnamens and returns true if hostnames match.Used manly to match and exception individual hostnames.

if (dnsDomainIs(host, ".google.com"))
return "DIRECT";
[*]shExpMatch
Will atempt to match hostname or URL to a specified shell expression、and returns true if matched.

if (shExpMatch(url, "*.local"))
return "DIRECT";

if (shExpMatch(host, ".domain.com") ||
shExpMatch(url, "http://abcdomain.com/folder/*"))
return "DIRECT";
[*]isInNet
This function evaluates the IP address of a hostname,and if within a specified subnet returns true.If a hostname is passed the function will reve the hostname to an IP address.

if (isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0"))
return "DIRECT";
[*]myIpAddress
Returns the IP address of the host machine.

if (isInNet(myIpAddress(), "10.10.1.0", "255.255.255.0"))
return "PROXY 10.10.5.1:8080";
[*]dnsResolive
Resoloves hostnames to an IP address.This function can be used to reduce the number of DNS lookup.

if (isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") ||
isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0") ||
isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0"))
return "DIRECT";
[*]isPlain HostName
This function will return true if the hostname containsのdots、e.g.http://intranet
Useful when appining exceptions for internal websites、e.g.may not require recoreolution of a hostname to IP address to determine local.

if (isPlainHostName(host))
return "DIRECT";
[*]local HostOrDomainIs
Evaaluates hostname and only returns true if exact hostname match is found.

if (localHostOrDomainIs(host, "www.google.com"))
return "DIRECT";
これはgoogle.comを含むことができますので、子供のdomain。

if (localHostOrDomainIs(host, ".google.com"))
return "DIRECT";
[*]is Resolavable
attempts to reolve a hostname to an IP address and returns true if.WARNING–This may cause a browser to temporar hang if a doman’t reolvable.

if (isResolvable(host))
return "PROXY proxy1.example.com:8080";
[*]dns DomainLevels
This function returns the number of DNS domail levels(number of dots)in the hostname.Can be used to exception internal websites which ust DNS names,e.g.http://intranet

if (dnsDomainLevels(host) > 0)
return "PROXY proxy1.example.com:8080";
else return "DIRECT";
[*]weekday Range
Allows rules to be time based,e.g.only return a proxy during specific days.

if (weekdayRange("MON", "FRI")) return "PROXY proxy1.example.com:8080";
else return "DIRECT";
[*]dateRange
Allows rules to be time based,e.g.only return a proxy during specific moths.

if (dateRange("JAN", "MAR")) return "PROXY proxy1.example.com:8080";
else return "DIRECT";
[*]timeRange
Allows rules to be time based,e.g.only return a proxy during specific houss.

if (timeRange(8, 18)) return "PROXY proxy1.example.com:8080";
else return "DIRECT";
[*]alert
The alert()function is not speciifed in the orororororinal PAC speciiication,although support forthisisisisincludd in Internet Explororr andFirefox.The function can be be used to outputthe value of a variabababababababablblblbleeeeeeeablblblaaaablblblbleeeeeeeeeaaaaaaaaaaaaaaablblblblsososorerererererererererererererererererererererereaaaaaaaaaaaaaaaa

resolved_host = dnsResolve(host);
alert(resolved_host);
[/リスト]
[b]注意[/b]
FirefoxまたはInternet ExplorerはシステムデフォルトコードのPACファイルだけをサポートしています。UnicodeコードのPACファイルはサポートされていませんので、PACファイルを作成する時はファイルの符号化方式に注意してください。