Macにdolipoを導入してついでにPACファイルを作ってみた
Macでプロキシとして動作して、webページの読み込みを体感出来るくらい早くするらしいdolipoを*1入れてみました。まぁpolipoについてはMacのネット環境高速化「dolipo」はナゼこんなに速いのか | Creazy!とかhttp://blog.motoraji.com/766/とか。
PACファイル
dolipoはプロキシなわけで、プロキシとして設定しないと使えないわけだけど、設定しようとしたらPACファイルを使って設定してみたくなりました。PACファイルはproxy auto configuration fileで、自動プロキシのための設定ファイルです。Windowsでも、なんて書いてあったか覚えてないけど自動プロキシ的な設定項目があったと思うけど、基本同じものだそう。
proxy.pac
function FindProxyForURL(url, host){ var proxy_on = 'PROXY 127.0.0.1:8123'; var proxy_off = 'DIRECT'; if (isPlainHostName(host)) return proxy_off; if (url.substring(0, 4) == 'ftp:') return proxy_off; if (dnsDomainIs(host, '2ch.net')) return proxy_off; if (localHostOrDomainIs(host, 'idisk.mac.com')) return proxy_off; if (isInNet(host, '10.0.0.0', '255.0.0.0') || isInNet(host, '127.0.0.0', '255.0.0.0') || isInNet(host, '169.254.0.0', '255.255.0.0') || isInNet(host, '192.168.0.0', '255.255.0.0') ) { return proxy_off; } return proxy_on; }
探してみたらpolipo(dolipo)向けproxy.pac - otsune's SnakeOil - subtechがあったので、ほぼそのままです。不要そうなのを消したり、多少好みの書き方に変えたりはしました。どうやらPACファイルはJavaScriptで書くものらしいですが、使われている関数について、あまり情報がないです。なので、とりあえず自動プロキシが働く状態を目指して、あまり変えずに使わせてもらいました。動く状態になっていれば、動きを変えたくなったときに試してみやすいかなという事で。
リファレンス
Netscape Proxy autoconfigJavaScript関数
- ホスト名関連関数
- isPlainHostName()
- dnsDomainIs()
- localHostOrDomainIs()
- isResolvable()
- isInNet()
- ユーティリティ関数
- dnsResolve()
- myIpAddress()
- dnsDomainLevels()
- URL/ホスト名関連関数
- shExpMatch()
- 時刻関連関数
- weekdayRange()
- dateRange()
- timeRange()
あまり良い情報源が無かったけど、ここが見やすかった。どんな動きをするのかちょっとつかみきれないけど、一応関数は全部*2載ってるし、他の情報源はこのエントリと同様かいつまみっぽいので。