社内SEの徒然なる日記

proxy.pac(プロキシパック)対応 No.7 pac作成(概要)

■ 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 ---

スポンサードリンク

PageTop

コメント


管理者にだけ表示を許可する