
■ proxy.pacの作成開始
前回(proxy.pac(プロキシパック)対応 No.6 WEBサーバー(IIS)Windows7 ファイアウォールと管理コンソール)までの手法で、自分の端末上でproxy.pacをテスト出来るようになりました。
...正直、思いのほか長くなりました。
ってことで、今回から実際にproxy.pacを作っていきます。
■ proxy.pacの言語
プロキシパックは、proxy.pacってファイル名で作成されていることが多いようですが、別にこの名前でなくても良いようです。私の場合は、テストって分るように「proxyTest.pac」って名前にしています。この辺りは趣味の領域ですかね。
こいつを書く為の言語は、javaScriptらしいです。なので、変数宣言にvarとかが普通に使えるし、//で単行コメント、/* */ で複数行コメントも使えます。
■ FindProxyFor関数
プロキシパックでは、FindProxyForという関数を記述します。この関数の構文はこんな感じです。
function FindProxyForURL(url, host){ ...}
FindProxyFor関数は、ブラウザがアクセスする“全てのURL”に対して実行されます。
この関数を実行することが、基本中の基本です。
■ FindProxyFor関数の引数
引数のurlはアクセスしたurlの全文で、hostはurlから取得したホスト名です。
例えば、ブラウザから「http://proxy.test/index.html」ってサイトにアクセスしたとすると、urlは「http://proxy.test/index.html」、hostは「proxy.test」になるって感じです。
hostは、urlの:// から 次の / までの間の文字って認識で良いと思います。
余談ですが、名前解決なんて洒落た事もしないようで、アクセス先のurlにIPアドレスを指定した場合は、クライアント上で名前解決(逆引き)できたとしてもhostには、url上のIPアドレスが設定されるようです。
アクセス先が「http://192.168.1.1/index.html」だった場合、hostは「192.168.1.1」になるって事ですね。
■ FindProxyFor関数の戻値
FindProxyFor関数は、戻値が肝になります。基本的には、プロキシサーバーを経由する、しないを返却する訳です。戻値は、文字列として返却します。
まず、プロキシサーバーを使用しない(直接接続)場合は、"DIRECT"と返却します。
return "DIRECT";
次に、プロキシサーバーを経由させる場合は、PROXY プロキシサーバーのホスト名(IPアドレス):ポート番号"になります。
プロキシサーバーのIPアドレスが 192.168.1.100、使用するポート番号が 80 の場合はこうなります。
return "PROXY 192.168.1.100:80";
上の例では、プロキシサーバーのIPアドレスにしましたが、クライアント上で名前解決が出来るならホスト名でも良いです。
IPアドレス「192.168.1.100」のホスト名が「PROXYSV」だった場合は、こうなります。
return "PROXY PROXYSV:80";
細かい事ですが、この名前解決はクライアントで出来ることが条件です。
上の方で、proxy.pacの実体がjavaScriptって話を書いていますが、javaScriptはサーバー側で無く、クライアント側で実行されるものです。
よって、プロキシパックを使用する全てのクライアントで、プロキシサーバーの名前解決が出来ないと駄目って事ですね。
前回:proxy.pac(プロキシパック)対応 No.6 WEBサーバー(IIS)Windows7 ファイアウォールと管理コンソール
次回:proxy.pac(プロキシパック)対応 No.8 pac作成(デバッグ)
投稿記事の一覧:http://harikofu.web.fc2.com/
--- blog end ---
スポンサードリンク


